This release is a pre-release and may not be stable for production use.
gi-mcp
Research and development use. Not for clinical or diagnostic decisions. For high-volume or latency-sensitive use, contact contact@genomicintelligence.ai to provision a production-shaped deployment.
An MCP server for the Genomic Intelligence DNA-analysis API. It exposes the six inference tasks (promoter, splice, enhancer, chromatin, expression, annotation), a composite annotation→expression workflow, sequence acquisition (Ensembl + local FASTA), reference resources, and ready-made prompt workflows — all over MCP stdio.
It runs locally as a thin protocol translator: it owns no inference and stores no key, forwarding each request to your Genomic Intelligence backend under your API key.
Install & configure
gi-mcp runs with uv (uvx fetches and runs it
with no manual install):
uvx gi-mcp # recommended
pip install gi-mcp # alternative
Request a partner key from https://genomicintelligence.ai/contact, then point
your MCP client at uvx gi-mcp with GI_API_KEY in the environment. For
Claude Desktop, edit claude_desktop_config.json and reopen:
{
"mcpServers": {
"genomic-intelligence": {
"command": "uvx",
"args": ["gi-mcp"],
"env": { "GI_API_KEY": "gi_..." }
}
}
}
For Claude Code: claude mcp add genomic-intelligence --env GI_API_KEY=gi_... -- uvx gi-mcp.
Upgrading from 0.1.0a17 or earlier
Pinned below 0.1.0a18? Upgrade. That release fixed a coordinate bug, not a
cosmetic one: fetch_gene_for_expression placed the TSS of a minus-strand
gene at gene-sense offset 4,598 instead of 4,599, so the 9,198 bp expression
window was shifted one base. A shifted window does not fail — it returns a
confident number for the wrong sequence. Plus-strand genes were unaffected.
uvx gi-mcp already tracks the newest release; pip install -U gi-mcp if you
installed with pip, and re-pin if you pin (uvx gi-mcp@<version>).
📖 Full documentation
https://docs.genomicintelligence.ai/mcp.md — per-client setup, the
handle pattern, copy-paste "try it" prompts, the full tool/resource surface,
and the underlying /v1 contract. Start there.
Environment
| Var | Default | Purpose |
|---|---|---|
GI_API_KEY |
— (required) | Partner bearer key (gi_…) |
GI_BASE_URL |
https://api.genomicintelligence.ai |
Override for staging / local backend |
GI_ENSEMBL_URL |
https://rest.ensembl.org |
Ensembl REST base |
GI_FASTA_ALLOW_ANY |
unset | 1 to skip MCP-roots gating for local FASTA |
GI_ASYNC_TIMEOUT |
240 |
Ceiling (s) a wait=True slow task blocks while streaming progress before returning a timeout error |
GI_ASYNC_POLL_INTERVAL |
2 |
Poll cadence (s) for the block-and-stream loop |
GI_HTTP_TIMEOUT |
300 |
Per-request read timeout (s) for /v1 calls |
GI_UCSC_URL |
https://api.genome.ucsc.edu |
UCSC REST base for reference sequence bytes (never gene metadata). Empty string = Ensembl only |
GI_REFDATA_CATALOG |
1 |
0 resolves every gene symbol live instead of using the bundled coordinate catalog |
GI_REFDATA_CACHE |
1 |
0 disables the reference response cache and its bundled prewarm |
GI_REFDATA_CACHE_MB |
64 |
Cache ceiling for sequence bytes (MiB, LRU by bytes) |
GI_REFDATA_BYTES_TTL_S |
2592000 |
Freshness window for cached bases (30 days; the key carries the assembly, so they are immutable) |
GI_REFDATA_LOOKUP_TTL_S |
604800 |
Freshness window for cached symbol→locus answers (7 days) |
GI_ENSEMBL_BYTES_TIMEOUT_S |
20 |
Read timeout for an Ensembl sequence fetch that has a UCSC fallback |
GI_ENSEMBL_SOLE_TIMEOUT_S |
45 |
Read timeout where Ensembl is the only source (rat, arabidopsis, scaffolds and alt contigs — no UCSC path by design) |
Where reference data comes from
Gene symbols resolve against a bundled coordinate catalog (109 pre-resolved
loci across human, mouse, rat, zebrafish, fly, yeast and arabidopsis) before
anything reaches rest.ensembl.org; anything outside it still resolves live.
Sequence bytes come from a response cache, then UCSC, then Ensembl, and the
bases behind the published example prompts ship in the package so they need no
network at all. When every upstream is unreachable a cached copy is served
rather than an error, and the response's meta says so (source,
locus_source, assembly, catalog_release, stale). Reference sequence for
a fixed assembly does not change, so a cached answer is the same bases a live
fetch would have returned — verified byte-identical between UCSC and Ensembl on
every control locus.
Development & contributing
Setup, conventions, the architecture walkthrough, and the release process live
in CONTRIBUTING.md. Quick start:
python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/pytest # full suite (mocked; no network)
Release history is in CHANGELOG.md.
Metadata
Release files for gi-mcp 0.1.0a26
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| gi_mcp-0.1.0a26.tar.gz | 270.8 kB | Without provenance | Details for gi_mcp-0.1.0a26.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| gi_mcp-0.1.0a26-py3-none-any.whl | Python 3 | none | any | Details for gi_mcp-0.1.0a26-py3-none-any.whl |
Total release size: 462.3 kB
Release files / gi_mcp-0.1.0a26.tar.gz
| Download URL | gi_mcp-0.1.0a26.tar.gz |
|---|---|
| Size | 270.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e1b90f1bd4f0ca9f7280e9b08e31aef25e8ee2b8f3554b8b8e89cfddcfbf7a2d
|
|
BLAKE2b-256 checksum How to use checksums |
28642a148c9e4c682310b8449d7de2ce726b2625c2ae3db033b2a1ce8b5bfc74
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / gi_mcp-0.1.0a26-py3-none-any.whl
| Download URL | gi_mcp-0.1.0a26-py3-none-any.whl |
|---|---|
| Size | 191.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
33cda5231f490163a88ccbc4db8a4ce38a8c865f7705c825b0b3d765a6d29dc7
|
|
BLAKE2b-256 checksum How to use checksums |
0cdf16f223796637c2b3554d225b55e98474ebe6b04871589000c375751998a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for gi-mcp 0.1.0a26
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.