Genomics MCP

Obtén datos genómicos de EGA, ENA, ENCODE, GEO y NCBI, consulta lecturas, variantes y señales indexadas, y recupera evidencia de referencia con atribución de fuente.

Documentación

Genomics MCP

Release MCP Registry Python 3.12 License: MIT

Permite que tu asistente de IA recupere datos genómicos reales y evidencia de referencia, con las fuentes de las que provienen.

Genomics MCP es un servidor local de Model Context Protocol. Un agente puede usarlo para encontrar conjuntos de datos públicos y leer una región acotada de archivos de archivo, remotos o locales. También puede consultar variantes y genes en bases de datos de referencia públicas. Las consultas de región usan un ensamblaje explícito y coordenadas semicerradas basadas en 0. Cuando el formato y el servidor admiten lecturas por rango, una región se lee sin descargar el archivo completo. Las descargas de archivos completos son un paso separado y presupuestado. Los resultados informan qué fuentes se consultaron (procedencia y estado por fuente), con accesiones, versiones y tiempos de recuperación cuando la fuente los proporciona.

Es una herramienta de investigación. Recupera y reporta datos. No proporciona interpretación clínica, no llama variantes ni extrae conclusiones biológicas.

Para quién es

Biólogos computacionales e investigadores que quieren que un agente extraiga datos de EGA, ENA, ENCODE, GEO, NCBI o sus propios archivos indexados sin escribir código de integración. También es adecuado para quienes construyen agentes o evaluaciones que necesitan datos reales con fuentes rastreables. No genera puntos de referencia por sí mismo.

Ejemplos de solicitudes

Indicaciones ilustrativas; los resultados dependen de tu cliente y modelo. Los intervalos son semicerrados basados en 0 (inicio incluido, fin excluido); las posiciones de variantes estilo VCF son basadas en 1.

  • "Muestra las lecturas del archivo EGA EGAF00007243773 (conjunto de datos EGAD00001003338) que se superponen con GRCh38 chr10:[10000, 10050)." Necesita GENOMICS_MCP_EGA_PUBLIC_TEST_ACCOUNT=1, la cuenta de prueba pública documentada de EGA.
  • "¿Cuál es la señal media del archivo ENCODE ENCFF792QDS sobre GRCh38 chr1:[1000000, 1001000)?"
  • "Verifica la base de referencia de la variante GRCh38 7-140753336-A-T contra NCBI, luego lista sus registros ClinVar con clasificaciones de línea germinal, somática y oncogenicidad mantenidas separadas."
  • "Descarga el FASTA de ENA para DQ285577.1 y muestra sus primeras 30 bases."
  • "Compara genotipos en chr1:[100000, 200000) entre los dos VCF en mi carpeta de datos."

Ejemplo medido

La solicitud de ENCODE anterior, ejecutada con una instalación limpia el 2026-09-25 con datos en vivo:

  • Archivo: ENCODE ENCFF792QDS, GRCh38 bigWig, 1,413,106,336 bytes
  • Intervalo: chr1:[1000000, 1001000)
  • Resultado: media exacta 26.361254017233847, de lecturas por rango HTTP. El espacio de trabajo contuvo 0 bytes después (nada escrito en disco; las lecturas de red aún ocurrieron).

Cuatro otras demostraciones en vivo se ejecutaron con la misma instalación: una región de BAM de prueba de EGA, una descarga de secuencia de ENA, una verificación de referencia con ClinVar y MinIO local. Comandos y resultados legibles por máquina: docs/demos.md.

Estudio de caso de agente: un agente de Claude Code, limitado a las herramientas de este servidor, compara la señal de DNase-seq de ENCODE en el potenciador eritroide BCL11A en 26 archivos, con una transcripción y una reproducción sin modelo: examples/agent-case-study/.

Inicio rápido

Contenedor (Linux x86_64 con Docker)

La imagen es linux/amd64. Está probada en Linux x86_64; Docker en macOS no está probado. Crea la carpeta de datos primero; se monta de solo lectura.

{
  "mcpServers": {
    "genomics": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "--mount", "type=bind,source=/path/to/your/data,target=/data,readonly",
        "--mount", "type=volume,source=genomics-mcp-work,target=/work",
        "ghcr.io/rewire-bio/genomics-mcp:0.1.0"
      ]
    }
  }
}

Desde el código fuente (macOS arm64, Linux x86_64)

Necesita Python 3.12, uv, un compilador C y archivos de desarrollo de libcurl y zlib (pyBigWig se compila desde el código fuente para soporte de archivos remotos).

git clone https://github.com/rewire-bio/genomics-mcp
cd genomics-mcp && git checkout v0.1.0
uv sync --locked --no-dev
uv run --no-dev genomics-mcp --check-config
{
  "mcpServers": {
    "genomics": {
      "command": "uv",
      "args": ["--directory", "/path/to/genomics-mcp", "run", "--no-dev", "genomics-mcp"],
      "env": { "GENOMICS_MCP_ALLOWED_ROOTS": "/path/to/your/data" }
    }
  }
}

Aún no hay paquete PyPI. Wheel, paquete MCPB de Linux, comando uvx fijado, notas de Windows (WSL2) y plataforma: docs/install.md.

Cobertura

ÁreaFuentes y formatos
DescubrimientoEGA, ENA (incl. accesiones SRA), ENCODE, GEO, NCBI Datasets: estudios, conjuntos de datos, muestras, fenotipos según se proporcionan, archivos
Datos genómicosBAM/CRAM, VCF/BCF, FASTA, BED/GFF3/GTF, bigWig/bigBed en disco local, HTTPS o S3; regiones EGA vía htsget
TransferenciasDescargas presupuestadas, reanudables y con suma de verificación devueltas como rutas locales
ReferenciaHGNC, Ensembl, ClinVar, gnomAD, UniProt, Open Targets; AlphaGenome Atlas opcional con tu propia clave
Las 23 herramientas y los recursos
GrupoHerramientas
Descubrimientolist_sources, search_datasets, describe_dataset, list_files, list_samples, get_sample_metadata
Transferenciasfetch_file, get_transfer_status, cancel_transfer
Genómicaget_reads, get_coverage, get_pileup, get_variants, get_sequence, get_features, get_signal
Composicióninspect_locus, compare_samples
Referenciaresolve_identifier, normalize_variant, lookup_variant, lookup_gene, lookup_protein

Recursos: genomics://capabilities, genomics://status, genomics://schemas, genomics://schemas/{name}.

Valores predeterminados y seguridad

  • Límites: regiones de 1 Mb, 10,000 registros, respuestas de 1 MiB y un plazo de 30 s; las llamadas pueden reducir estos valores. Las transferencias están limitadas a 100 MiB a menos que una llamada establezca un presupuesto mayor. La truncación se informa. Nada se levanta entre ensamblajes.
  • Solo local: stdio, o HTTP Streamable con un token de portador en 127.0.0.1. No hay servicio alojado. Las lecturas locales están limitadas a las carpetas que permitas, y los archivos fuente nunca se modifican.
  • Credenciales y salida: las credenciales ambientales de AWS nunca se usan; S3 privado y EGA necesitan configuración explícita. Los valores de archivos no marcados como public van a APIs externas solo cuando una llamada establece allow_external_annotation.
  • Caché (no publicado; solo checkout de desarrollo, no en v0.1.0): una caché en memoria acotada reutiliza rangos de bytes de archivos HTTPS públicos marcados como public (revalidados por ETag en cada llamada) y respuestas de API públicas. Nunca se usa para solicitudes privadas, firmadas o autenticadas. Desactívala con [cache] enabled = false; reiniciar la limpia. Detalles y mediciones: rendimiento.

Configuración: config.example.toml. Alcance y límites conocidos: PRD.md. Estado de directorio y PyPI: registro de publicación. Detalles técnicos: acceso a datos, archivos, referencias, composición. Seguridad: SECURITY.md.

Desarrollo

uv sync --locked
uv run ruff check . && uv run ruff format --check .
uv run pytest

Licencia

MIT. Ver LICENSE. Los datos de cada fuente están sujetos a los términos de esa fuente.