Bounded genomic data from archives and indexed files, with versioned reference evidence.
Runs on your machine from its package; the steps are below.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
docker run -i --rm ghcr.io/rewire-bio/genomics-mcp:0.1.0
MCP client config
{
"mcpServers": {
"genomics-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/rewire-bio/genomics-mcp:0.1.0"
]
}
}
}Distributed as an MCP bundle (`https://github.com/rewire-bio/genomics-mcp/releases/download/v0.1.0/genomics-mcp-0.1.0.mcpb`) — download it and import the bundle in your MCP client.
Let your AI assistant retrieve real genomic data and reference evidence, with the sources it came from.
Genomics MCP is a local Model Context Protocol server. An agent can use it to find public datasets and read a bounded region from archive, remote or local files. It can also look up variants and genes in public reference databases. Region queries use an explicit assembly and 0-based half-open coordinates. Where the format and server support range reads, a region is read without downloading the whole file. Whole-file downloads are a separate, budgeted step. Results report which sources were consulted (provenance and per-source status), with accessions, versions and retrieval times where the source provides them.
It is a research tool. It retrieves and reports data. It does not give clinical interpretation, call variants or draw biological conclusions.
Read the blog article: Genomics MCP: genomic data access for AI agents, including an agent case study at the BCL11A enhancer.
Computational biologists and researchers who want an agent to pull data from EGA, ENA, ENCODE, GEO, NCBI or their own indexed files without writing integration code. It also suits people building agents or evaluations who need real data with traceable sources. It does not generate benchmarks itself.
Illustrative prompts; results depend on your client and model. Intervals are 0-based half-open (start included, end excluded); VCF-style variant positions are 1-based.
GENOMICS_MCP_EGA_PUBLIC_TEST_ACCOUNT=1, EGA's documented public test account.The ENCODE request above, run through a clean install on 2026-09-25 with live data:
Four other live demonstrations ran with the same install: an EGA test BAM region, an ENA sequence download, a reference check with ClinVar, and local MinIO. Commands and machine-readable results: docs/demos.md.
Agent case study: a Claude Code agent, limited to this server's tools, compares ENCODE DNase-seq signal at the BCL11A erythroid enhancer across 26 files, with a transcript and a model-free replay: examples/agent-case-study/.
The image is linux/amd64. It is tested on Linux x86_64; Docker on macOS is untested. Create the data folder first; it is mounted read-only.
{
"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"
]
}
}
}
Needs Python 3.12, uv, a C compiler, and libcurl and zlib development files (pyBigWig is built from source for remote-file support).
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" }
}
}
}
There is no PyPI package yet. Wheel, Linux MCPB bundle, pinned uvx command, Windows (WSL2) and platform notes: docs/install.md.
| Area | Sources and formats |
|---|---|
| Discovery | EGA, ENA (incl. SRA accessions), ENCODE, GEO, NCBI Datasets: studies, datasets, samples, phenotypes as supplied, files |
| Genomic data | BAM/CRAM, VCF/BCF, FASTA, BED/GFF3/GTF, bigWig/bigBed on local disk, HTTPS or S3; EGA regions via htsget |
| Transfers | Budgeted, resumable, checksummed downloads returned as local paths; optional SRA run to FASTQ with SRA Toolkit (unreleased) |
| Reference | HGNC, Ensembl, ClinVar, gnomAD, UniProt, Open Targets; optional AlphaGenome Atlas with your own key |
| Group | Tools |
|---|---|
| Discovery | list_sources, search_datasets, describe_dataset, list_files, list_samples, get_sample_metadata |
| Transfers | fetch_file, get_transfer_status, cancel_transfer, convert_sra_run (optional, unreleased) |
| Genomics | get_reads, get_coverage, get_pileup, get_variants, get_sequence, get_features, get_signal |
| Composition | inspect_locus, compare_samples |
| Reference | resolve_identifier, normalize_variant, lookup_variant, lookup_gene, lookup_protein |
Resources: genomics://capabilities, genomics://status, genomics://schemas, genomics://schemas/{name}.
Limits: 1 Mb regions, 10,000 records, 1 MiB responses and a 30 s deadline; calls may lower these. Transfers are capped at 100 MiB unless a call sets a larger budget. Truncation is reported. Nothing is lifted over between assemblies.
Local only: stdio, or Streamable HTTP with a bearer token on 127.0.0.1. There is no hosted service. Local reads are limited to the folders you allow, and source files are never modified.
Credentials and egress: ambient AWS credentials are never used; private S3 and EGA need explicit configuration. Values from files not marked public go to external APIs only when a call sets allow_external_annotation.
Cache (unreleased; development checkout only, not in v0.1.0): a bounded in-memory cache reuses byte ranges of public HTTPS files marked public (revalidated by ETag on every call) and public API responses. It is never used for private, signed or authenticated requests. Turn it off with [cache] enabled = false; restarting clears it. Details and measurements: performance.
SRA Toolkit (unreleased; optional): convert_sra_run turns a public SRR/ERR/DRR run into local FASTQ files with NCBI's prefetch and fasterq-dump, as a budgeted, cancellable job. It is never started by discovery. ENA FASTQ files need no toolkit. Installation, container variant, limits and current verification status: SRA Toolkit.
Configuration: config.example.toml. Scope and known limits: PRD.md. Directory and PyPI status: publication ledger. Technical details: data access, archives, references, composition. Security: SECURITY.md.
uv sync --locked
uv run ruff check . && uv run ruff format --check .
uv run pytest
MIT. See LICENSE. Data from each source is subject to that source's own terms.