Bio-MCP BLAST
Realiza búsquedas de similitud de secuencias NCBI BLAST mediante lenguaje natural.
Documentación
Bio-MCP BLAST
🔍 Servidor MCP para búsqueda de similitud de secuencias NCBI BLAST
Permite a los asistentes de IA realizar búsquedas BLAST mediante lenguaje natural. Busca en bases de datos de nucleótidos y proteínas, crea bases de datos personalizadas y obtén resultados formateados al instante.
🧬 Características
- blastn - Búsqueda BLAST nucleótido-nucleótido
- blastp - Búsqueda BLAST proteína-proteína
- makeblastdb - Crea bases de datos BLAST personalizadas
- Múltiples formatos de salida - JSON, XML, tabular, pairwise
- Entrada flexible - Rutas de archivo o secuencias sin procesar
- Soporte de cola - Procesamiento asíncrono para búsquedas grandes
🚀 Inicio Rápido
Instalación
# 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
Configuración
Añade a la configuración de tu cliente MCP:
{
"mcpServers": {
"bio-blast": {
"command": "python",
"args": ["-m", "src.server"],
"cwd": "/path/to/bio-mcp-blast"
}
}
}
💡 Ejemplos de Uso
Búsqueda de Secuencia Simple
User: "BLAST this sequence against nr: ATGCGATCGATCG"
AI: [calls blastn] → Returns top hits with E-values and alignments
Búsqueda Basada en Archivos
User: "Search proteins.fasta against SwissProt database"
AI: [calls blastp] → Processes file and returns similarity results
Creación de Bases de Datos
User: "Create a BLAST database from reference_genomes.fasta"
AI: [calls makeblastdb] → Creates searchable database files
Búsqueda de Larga Duración
User: "BLAST large_dataset.fasta against nt database"
AI: [calls blastn_async] → "Job submitted! ID: abc123, checking progress..."
🛠️ Herramientas Disponibles
blastn
Búsqueda BLAST nucleótido-nucleótido
Parámetros:
query(requerido) - Ruta al archivo FASTA o cadena de secuenciadatabase(requerido) - Nombre de la base de datos (p. ej., "nt", "nr") o rutaevalue- Umbral de E-value (predeterminado: 10)max_hits- Máximo de resultados a devolver (predeterminado: 50)output_format- Formato de salida: "tabular", "xml", "json", "pairwise"
blastp
Búsqueda BLAST proteína-proteína
Parámetros:
- Igual que blastn, pero para secuencias de proteínas
makeblastdb
Crea una base de datos BLAST a partir de un archivo FASTA
Parámetros:
input_file(requerido) - Ruta al archivo FASTAdatabase_name(requerido) - Nombre para la base de datos de salidadbtype(requerido) - "nucl" o "prot"title- Título de la base de datos (opcional)
Variantes Asíncronas (Modo Cola)
blastn_async- Envía una búsqueda de nucleótidos a la colablastp_async- Envía una búsqueda de proteínas a la colaget_job_status- Comprueba el progreso del trabajoget_job_result- Recupera los resultados completados
⚙️ Configuración
Variables de Entorno
# 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"
Configuración de la Base de Datos
# 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
🐳 Despliegue con 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 Cola
Para búsquedas BLAST de larga duración, utiliza el sistema de cola:
Configuración
# 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 Salida
Tabular (Predeterminado)
# 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 estándar de BLAST para análisis programático.
🧪 Pruebas
# Run tests
pytest tests/ -v
# Test with real data
python tests/test_integration.py
# Performance testing
python tests/benchmark.py
📈 Consejos de Rendimiento
Optimización Local
- Utiliza almacenamiento SSD para las bases de datos
- Aumenta la RAM disponible
- Utiliza múltiples núcleos de CPU:
export BLAST_NUM_THREADS=8
Selección de Base de Datos
- Utiliza bases de datos más pequeñas y específicas cuando sea posible
- Considera prefiltrar las secuencias
- Utiliza umbrales de E-value apropiados
Optimización de la Cola
- Escala los workers según los núcleos de CPU
- Utiliza colas separadas para diferentes tamaños de bases de datos
- Supervisa el uso de memoria con bases de datos grandes
🔐 Seguridad
Validación de Entrada
- Los límites de tamaño de archivo previenen el agotamiento de recursos
- La validación de rutas previene el recorrido de directorios
- Protección contra inyección de comandos
Aislamiento (Sandboxing)
- Los contenedores se ejecutan como usuario no root
- Archivos temporales aislados por trabajo
- Acceso a la red restringido en producción
🐛 Solución de Problemas
Problemas Comunes
BLAST no encontrado
# Check installation
which blastn
blastn -version
# Install via conda
conda install -c bioconda blast
Base de datos no encontrada
# Check BLASTDB environment variable
echo $BLASTDB
# List available databases
blastdbcmd -list /path/to/databases
Memoria insuficiente
# Reduce max_target_seqs
blastn -max_target_seqs 100
# Use streaming for large outputs
# Increase system swap space
Errores de tiempo de espera
# Increase timeout
export BIO_MCP_TIMEOUT=3600 # 1 hour
# Or use queue mode for long searches
python -m src.main --mode queue
📚 Recursos
🤝 Contribuciones
- Haz un fork del repositorio
- Crea una rama de funcionalidad
- Añade pruebas para la nueva funcionalidad
- Asegúrate de que todas las pruebas pasen
- Envía un pull request
Consulta CONTRIBUTING.md para obtener pautas detalladas.
📄 Licencia
Licencia MIT - consulta el archivo LICENSE.
🆘 Soporte
- 🐛 Informes de errores: GitHub Issues
- 💡 Solicitudes de funciones: GitHub Issues
- 📖 Documentación: Bio-MCP Docs
- 💬 Discusiones: GitHub Discussions
¡Feliz BLASTing! 🧬🔍