Bio-MCP BLAST
Realize buscas de similaridade de sequências NCBI BLAST através de linguagem natural.
Documentação
Bio-MCP BLAST
🔍 Servidor MCP para busca de similaridade de sequências NCBI BLAST
Permita que assistentes de IA realizem buscas BLAST por meio de linguagem natural. Pesquise bancos de dados de nucleotídeos e proteínas, crie bancos de dados personalizados e obtenha resultados formatados instantaneamente.
🧬 Recursos
- blastn - Busca BLAST nucleotídeo-nucleotídeo
- blastp - Busca BLAST proteína-proteína
- makeblastdb - Crie bancos de dados BLAST personalizados
- Múltiplos formatos de saída - JSON, XML, tabular, pairwise
- Entrada flexível - Caminhos de arquivo ou sequências brutas
- Suporte a filas - Processamento assíncrono para buscas grandes
🚀 Início Rápido
Instalação
# Install BLAST+
conda install -c bioconda blast
# Or via package manager
# macOS: brew install blast
# Ubuntu: sudo apt-get install ncbi-blast+
# Install MCP server
git clone https://github.com/bio-mcp/bio-mcp-blast.git
cd bio-mcp-blast
pip install -e .
Uso Básico
# Start the server
python -m src.server
# Or with queue support
python -m src.main --mode queue
Configuração
Adicione à configuração do seu cliente MCP:
{
"mcpServers": {
"bio-blast": {
"command": "python",
"args": ["-m", "src.server"],
"cwd": "/path/to/bio-mcp-blast"
}
}
}
💡 Exemplos de Uso
Busca Simples de Sequência
User: "BLAST this sequence against nr: ATGCGATCGATCG"
AI: [calls blastn] → Returns top hits with E-values and alignments
Busca Baseada em Arquivo
User: "Search proteins.fasta against SwissProt database"
AI: [calls blastp] → Processes file and returns similarity results
Criação de Banco de Dados
User: "Create a BLAST database from reference_genomes.fasta"
AI: [calls makeblastdb] → Creates searchable database files
Busca de Longa Duração
User: "BLAST large_dataset.fasta against nt database"
AI: [calls blastn_async] → "Job submitted! ID: abc123, checking progress..."
🛠️ Ferramentas Disponíveis
blastn
Busca BLAST nucleotídeo-nucleotídeo
Parâmetros:
query(obrigatório) - Caminho para arquivo FASTA ou string de sequênciadatabase(obrigatório) - Nome do banco de dados (ex.: "nt", "nr") ou caminhoevalue- Limiar de E-value (padrão: 10)max_hits- Máximo de resultados a retornar (padrão: 50)output_format- Formato de saída: "tabular", "xml", "json", "pairwise"
blastp
Busca BLAST proteína-proteína
Parâmetros:
- Igual ao blastn, mas para sequências de proteínas
makeblastdb
Crie banco de dados BLAST a partir de arquivo FASTA
Parâmetros:
input_file(obrigatório) - Caminho para arquivo FASTAdatabase_name(obrigatório) - Nome para o banco de dados de saídadbtype(obrigatório) - "nucl" ou "prot"title- Título do banco de dados (opcional)
Variantes Assíncronas (Modo Fila)
blastn_async- Enviar busca de nucleotídeos para a filablastp_async- Enviar busca de proteínas para a filaget_job_status- Verificar progresso do trabalhoget_job_result- Recuperar resultados concluídos
⚙️ Configuração
Variáveis de Ambiente
# Basic settings
export BIO_MCP_MAX_FILE_SIZE=100000000 # 100MB max file size
export BIO_MCP_TIMEOUT=300 # 5 minute timeout
export BIO_MCP_BLAST_PATH="blastn" # BLAST executable path
# Queue mode settings
export BIO_MCP_QUEUE_URL="http://localhost:8000"
Configuração do Banco de Dados
# Download common databases
mkdir -p ~/blast-databases
cd ~/blast-databases
# NCBI databases (large downloads!)
update_blastdb.pl --decompress nt
update_blastdb.pl --decompress nr
update_blastdb.pl --decompress swissprot
# Set environment variable
export BLASTDB=~/blast-databases
🐳 Implantação com Docker
Docker Local
# Build image
docker build -t bio-mcp-blast .
# Run container
docker run -p 5000:5000 \
-v ~/blast-databases:/data/blast-db:ro \
-e BLASTDB=/data/blast-db \
bio-mcp-blast
Docker Compose
services:
blast-server:
build: .
ports:
- "5000:5000"
volumes:
- ./databases:/data/blast-db:ro
environment:
- BLASTDB=/data/blast-db
- BIO_MCP_TIMEOUT=600
🔄 Sistema de Filas
Para buscas BLAST de longa duração, use o sistema de filas:
Configuração
# Start queue infrastructure
cd ../bio-mcp-queue
./setup-local.sh
# Start BLAST server with queue support
python -m src.main --mode queue --queue-url http://localhost:8000
Uso
# Submit async job
job_info = await blast_server.submit_job(
job_type="blastn",
parameters={
"query": "large_sequences.fasta",
"database": "nt",
"evalue": 0.001
}
)
# Check status
status = await blast_server.get_job_status(job_info["job_id"])
# Get results when complete
results = await blast_server.get_job_result(job_info["job_id"])
📊 Formatos de Saída
Tabular (Padrão)
# Fields: query_id, subject_id, percent_identity, alignment_length, ...
Query_1 gi|123456 98.5 500 7 0 1 500 1000 1499 1e-180 633
JSON
{
"BlastOutput2": [{
"report": {
"results": {
"search": {
"query_title": "Query_1",
"hits": [...]
}
}
}
}]
}
XML
Formato XML BLAST padrão para análise programática.
🧪 Testes
# Run tests
pytest tests/ -v
# Test with real data
python tests/test_integration.py
# Performance testing
python tests/benchmark.py
📈 Dicas de Desempenho
Otimização Local
- Use armazenamento SSD para bancos de dados
- Aumente a RAM disponível
- Use múltiplos núcleos de CPU:
export BLAST_NUM_THREADS=8
Seleção de Banco de Dados
- Use bancos de dados menores e específicos quando possível
- Considere pré-filtrar sequências
- Use limiares de E-value apropriados
Otimização de Fila
- Dimensione os workers com base nos núcleos de CPU
- Use filas separadas para diferentes tamanhos de banco de dados
- Monitore o uso de memória com bancos de dados grandes
🔐 Segurança
Validação de Entrada
- Limites de tamanho de arquivo previnem esgotamento de recursos
- Validação de caminho previne travessia de diretórios
- Proteção contra injeção de comandos
Sandboxing
- Contêineres executam como usuário não-root
- Arquivos temporários isolados por trabalho
- Acesso à rede restrito em produção
🐛 Solução de Problemas
Problemas Comuns
BLAST não encontrado
# Check installation
which blastn
blastn -version
# Install via conda
conda install -c bioconda blast
Banco de dados não encontrado
# Check BLASTDB environment variable
echo $BLASTDB
# List available databases
blastdbcmd -list /path/to/databases
Memória insuficiente
# Reduce max_target_seqs
blastn -max_target_seqs 100
# Use streaming for large outputs
# Increase system swap space
Erros de tempo limite
# Increase timeout
export BIO_MCP_TIMEOUT=3600 # 1 hour
# Or use queue mode for long searches
python -m src.main --mode queue
📚 Recursos
🤝 Contribuindo
- Faça um fork do repositório
- Crie um branch de funcionalidade
- Adicione testes para novas funcionalidades
- Garanta que todos os testes passem
- Envie um pull request
Veja CONTRIBUTING.md para diretrizes detalhadas.
📄 Licença
Licença MIT - veja o arquivo LICENSE.
🆘 Suporte
- 🐛 Relatórios de Bugs: GitHub Issues
- 💡 Solicitações de Funcionalidades: GitHub Issues
- 📖 Documentação: Bio-MCP Docs
- 💬 Discussões: GitHub Discussions
Feliz BLASTing! 🧬🔍