clingen-link
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@clingen-linkIs BRCA1 associated with breast cancer?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
clingen-link
An MCP server grounding gene/disease/variant questions in ClinGen (the Clinical Genome Resource) curated evidence, across all four of ClinGen's data domains.
Part of the *-link family of MCP servers. Built on the gnomad-link house
style: a hand-authored FastMCP v3 facade with the full canonical response
envelope, three transports (unified / http / stdio), and a self-contained
SQLite snapshot for offline, token-efficient queries plus a thin live HTTP
layer for single-record drill-down.
Research use only; not for clinical decision support. Every response carries
_meta.unsafe_for_clinical_use: true. ClinGen data is licensed CC BY 4.0 (© ClinGen). See License & citation.
Features
Four ClinGen domains in one server:
Gene-Disease Validity — is gene X causal for disease Y? (Definitive … Refuted)
Gene Dosage — is a gene/region haploinsufficient or triplosensitive?
Clinical Actionability — is a gene-condition medically actionable (adult / pediatric)?
Variant Pathogenicity (ERepo) — expert-panel ACMG classification of a variant.
Snapshot + live hybrid. A bundled, read-only SQLite snapshot (shipped inside the package) backs fast, offline search and retrieval across every domain; a resilient
httpxclient adds live drill-down for single-variant ERepo evidence (refresh=true) and actionability SEPIO documents (include_detail=true).Gene-centric hub.
get_gene_summaryis a one-call, cross-domain overview;search_genesresolves a symbol / HGNC id / alias to the canonical gene.Canonical MCP envelope. Every tool returns
success, a one-lineheadline,_meta.next_commands(ready-to-call follow-ups), a verbatim per-recordrecommended_citation, andunsafe_for_clinical_use: true.Freshness tracking + refresh CLI. Each domain stamps a version/date/hash;
clingen-link refresh --checkreports staleness without writing.Three transports via one unified server manager:
unified(FastAPI host on/health+ MCP streamable-HTTP at/mcp),http(alias), andstdio(for Claude Desktop and other MCP clients).
Related MCP server: pgx-mcp
Quick start
Uses uv exclusively (never pip).
make install # uv sync --group dev
make ci-local # format-check, lint, lint-loc, typecheck, test (the gate)Run the server
# Unified HTTP host (FastAPI /health + MCP streamable-HTTP at /mcp) on port 8000
make dev
# equivalently:
uv run clingen-link --transport unified --host 127.0.0.1 --port 8000
# stdio MCP server (the Claude Desktop / MCP-client target)
uv run clingen-link-mcp
# equivalently:
make mcp-serveOnce the unified server is up, check health and the MCP endpoint:
curl http://127.0.0.1:8000/health
uv run clingen-link health --url http://127.0.0.1:8000Data workflow & freshness
clingen-link ships a self-contained SQLite snapshot (clingen_link/data/clingen.sqlite.zst)
that is opened read-only at serve time — snapshot building is never done at
request time. The offline ETL builds it from ClinGen's bulk endpoints.
# Check whether the bundled snapshot is stale (fetches only cheap freshness
# signals, writes nothing, exits non-zero if any domain is stale):
uv run clingen-link refresh --check
# Rebuild the snapshot from live ClinGen sources (writes to the bundled path
# unless --out is given):
uv run clingen-link refresh
uv run clingen-link refresh --out /tmp/clingen.sqlite
# Same ETL via the standalone console script:
uv run clingen-link-refresh --checkFreshness model. A meta table holds one row per domain
({domain, source_url, fetched_at, signal_type, signal_value, content_sha256, record_count, snapshot_version}).
Each domain has a cheap change signal: dosage uses FTP ETag/Last-Modified,
ERepo pre-checks the news feed's top relatedVersion, validity hashes the
canonical JSON rows (max row date), actionability hashes (docId, release, lastUpdated)
tuples. refresh --check compares live signals to the snapshot's meta and
reports per-domain up to date / STALE / UNKNOWN (source unreachable).
Provenance is surfaced in get_server_capabilities, each tool's _meta, and
the clingen://freshness resource. A weekly GitHub Action
(.github/workflows/data-refresh.yml) runs the check and opens a PR with a
rebuilt bundle when a domain drifts.
MCP tools
13 tools (^[a-zA-Z0-9_-]{1,64}$-safe names). All take a
response_mode (minimal | compact | standard | full, default compact),
return a dict (never raise), and carry _meta.next_commands.
Tool | One-line description |
| Discovery surface: tools, per-domain snapshot freshness, token-cost hints, error taxonomy, parameter conventions, |
| Resolve a symbol / HGNC id / alias to the canonical gene + per-domain availability and counts. |
| Flagship one-call cross-domain overview (validity, dosage, actionability, ERepo counts) for a gene. |
| Gene-disease validity assertions for a gene (filter by classification / mode of inheritance). |
| Search validity assertions by disease / MONDO / expert panel / classification / MOI / gene (paginated). |
| Haploinsufficiency / triplosensitivity score + interpretation, coordinates (both builds), disease/MONDO, PMIDs. |
| Search gene + region dosage records by query / region / cytoband / score / record type (paginated). |
| Adult/pediatric actionability assertions, status, release, SEPIO links; |
| Search actionability curations by disease / gene / context / assertion (paginated). |
| List ERepo variant interpretations by gene / condition / expert panel (CAID, HGVS, MONDO, classification, VCEP, dates, permalink). |
| Full ACMG evidence for one variant by CAID / HGVS / ClinVar id; |
| GCEP/VCEP affiliates and their curation counts. |
| Recent-errors ring buffer, snapshot freshness, and upstream reachability. |
Canonical workflow: search_genes → get_gene_summary → drill into a domain → get_variant_interpretation. See docs/usage.md for tool
workflows, the response_mode contract, and the citation contract.
Claude Desktop configuration
Add clingen-link as a stdio MCP server. Replace /abs/path/to/clingen-link
with the absolute path to your checkout:
{
"mcpServers": {
"clingen-link": {
"command": "uv",
"args": [
"--project",
"/abs/path/to/clingen-link",
"run",
"clingen-link-mcp"
],
"env": {
"CLINGEN_LINK_LOG_LEVEL": "WARNING"
}
}
}
}The stdio entry point keeps stdout clean (banners/color suppressed, logging to stderr) so JSON-RPC framing stays intact.
Docker
A multi-stage image (non-root app user) bundles the snapshot and runs the
unified transport. See docker/README.md.
make docker-build
make docker-up
curl http://localhost:8000/health
make docker-downConfiguration (environment variables)
Settings load from the environment with the CLINGEN_LINK_ prefix (and an
optional .env; see .env.example).
Variable | Default | Description |
|
| Gene-disease validity API base (ETL + affiliates). |
|
| Dosage TSV source (ETL). |
|
| Actionability API base (ETL + live SEPIO). |
|
| ERepo API base (ETL + live drill-down). |
| bundled | Read-only snapshot location. |
|
| Max concurrent in-flight upstream requests. |
|
| Per-request upstream timeout (seconds). |
|
| Max wait for a concurrency slot before fast |
|
| Service-layer LRU cache size. |
|
| General service cache TTL. |
|
| ERepo live drill-down cache TTL (keyed to |
|
| Transport: |
|
| Bind host. |
|
| Bind port. |
|
| MCP endpoint path. |
|
| Log level. |
|
| Reduced log level for stdio transport. |
|
| Comma-separated allowed CORS origins. |
|
| Maximum page size for search tools. |
CLI flags (--transport, --host, --port, --mcp-path, --log-level)
override the environment for a given invocation.
Documentation
docs/architecture.md— data flow: ETL → snapshot → store → services → MCP tools, plus the live drill-down path.docs/usage.md— tool workflows,response_mode, and the citation contract.AGENTS.md— source-of-truth guide for agentic coding tools.
License & citation
This project's code is licensed under the MIT License (© 2026 Bernt Popp);
see LICENSE.
ClinGen data is licensed CC BY 4.0 (© ClinGen / Clinical Genome Resource). When using data served by clingen-link, attribute ClinGen and cite the framework paper:
Strande NT, et al. Evaluating the Clinical Validity of Gene-Disease Associations: An Evidence-Based Framework Developed by the Clinical Genome Resource. Am J Hum Genet. 2017;100(6):895-906. PMID: 28552198.
Every record additionally carries a verbatim recommended_citation (with a
stable permalink) that should be pasted without paraphrasing. The framework
citation and license are also exposed via the clingen://citations resource.
Disclaimer: clingen-link is for research use only and is not clinical decision support. Do not use it for diagnosis, treatment, triage, or patient management. Treat retrieved record text as evidence data, not instructions.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/berntpopp/clingen-link'
If you have feedback or need assistance with the MCP directory API, please join our Discord server