Back to Browse

Genefoundry Router MCP Server

Developer ToolsLow Risk10.0MCP RegistryRemote
Free

Server data from the Official MCP Registry

MCP gateway federating 21 biomedical MCP servers behind one endpoint: gnomAD, ClinVar, HPO, VEP.

About

MCP gateway federating 21 biomedical MCP servers behind one endpoint: gnomAD, ClinVar, HPO, VEP.

Remote endpoints: streamable-http: https://genefoundry.org/mcp

Security Report

10.0
Low Risk10.0Low Risk

Valid MCP server (1 strong, 0 medium validity signals). No known CVEs in dependencies. Imported from the Official MCP Registry.

Endpoint verified · Requires authentication · 1 issue found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

file_system

Check that this permission is expected for this type of plugin.

env_vars

Check that this permission is expected for this type of plugin.

HTTP Network Access

Connects to external APIs or services over the internet.

How to Connect

Remote Plugin

No local installation needed. Your AI client connects to the remote endpoint directly.

Add this to your MCP configuration to connect:

{
  "mcpServers": {
    "io-github-berntpopp-genefoundry": {
      "url": "https://genefoundry.org/mcp"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

genefoundry-router

Python 3.12+ CI Security License: MIT

A thin FastMCP 3.x aggregator that federates the GeneFoundry *-link MCP fleet behind a single Streamable-HTTP endpoint. A host adds one server — genefoundry — and gets every biomedical backend with collision-free <namespace>_<tool> naming and search-based discovery.

[!IMPORTANT] Research use only. Not clinical decision support. Do not use for diagnosis, treatment, triage, or patient management.

Why

An MCP host that mounted all 21 backends directly would face a wall of several hundred tools — more than a model can reason over, and a guarantee of name collisions. The router collapses that into one endpoint and replaces the flat catalog with a search surface, so a model finds the right tool by intent instead of by scrolling.

It is a client to each backend and a server to hosts: it namespaces and shapes the surface, but never rewrites a backend's data. The caller's token is never forwarded upstream.

Quick start

The fleet is hosted — no install required:

claude mcp add --transport http genefoundry https://genefoundry.org/mcp

Health check: genefoundry.org/health.

To run your own against the live fleet (Python 3.12+, uv):

uv sync --group dev
cp .env.example .env                    # set GF_*_URL backend URLs and GF_AUTH_MODE
uv run genefoundry-router run --host 127.0.0.1 --port 8000
curl -s localhost:8000/health | python -m json.tool

An offline fake fleet (make dev-fleet + make run-dev, or one-shot make test-e2e) runs the real router against impersonated backends over real Streamable-HTTP — no Docker, no network.

Tools

The router does not surface the federated catalog flat. A model sees three things:

ToolPurpose
search_toolsRelevance search over the entire federated catalog
call_toolInvoke a hit by its <namespace>_<tool> name
pinned entry pointsEach backend's front-door tool, always visible — declared per-backend as entrypoints: in servers.yaml
search_tools(query="splicing prediction")   # → spliceai_predict_splicing (+ schema)
call_tool(name="spliceai_predict_splicing", arguments={...})

Pinning makes each domain's canonical tool reachable deterministically rather than by relevance luck. See How discovery works — including the two traps that bite MCP clients.

Federated backends

21 backends, 272 tools, each surfaced namespaced — e.g. gnomad_search_genes.

NamespaceDomainData sourceToolsRepo
pubtatorLiterature & entity annotationPubTator335pubtator-link
gnomadVariant / gene / population frequencygnomAD22gnomad-link
orphanetRare disease ontology & associationsOrphadata19orphanet-link
clingenGene–disease curationClinGen17clingen-link
hpoPhenotype ontology & associationsHuman Phenotype Ontology17hpo-link
mavedbVariant-effect assay scoresMaveDB15mavedb-link
uniprotProtein functionUniProt15uniprot-link
genereviewsGene–disease literatureGeneReviews13genereviews-link
mgiMouse phenotype & modelsMGI13mgi-link
mondoDisease ontology / cross-referencesMondo13mondo-link
genccGene–disease curationGenCC12gencc-link
metadomeProtein tolerance landscapesMetaDome11metadome-link
stringdbProtein–protein interaction networksSTRING10stringdb-link
gtexTissue expressionGTEx Portal9gtex-link
hgncGene nomenclatureHGNC9hgnc-link
panelappDiagnostic gene panels & curationPanelApp9panelapp-link
autopvs1Variant ACMG PVS1AutoPVS17autopvs1-link
spliceaiSplicing predictionSpliceAI Lookup7spliceailookup-link
vepVariant annotation / consequenceEnsembl VEP7vep-link
clinvarVariant clinical significanceClinVar6clinvar-link
litvarVariant literatureLitVar26litvar-link

Data & provenance

The router serves no data of its own; each backend owns its sources, licences and citation guidance, and the router mirrors their disclaimers.

What it does own is integrity of the tool surface. A backend can serve a clean tool at review time and later change its definition — the channel for a rug pull. The router fingerprints every normalized tool definition and diffs the live fleet against a reviewed, packaged baseline (genefoundry_router/data/fleet-baseline.json), enforced at startup and on a schedule. See Deployment → drift detection.

Documentation

Contributing

See AGENTS.md for engineering conventions. make ci-local is the definition-of-done gate: format, lint, line budget, README standard, mypy, and tests.

License

MIT © Bernt Popp. Each federated backend carries the licence and citation terms of its upstream data source; see that backend's repository.

Reviews

No reviews yet

Be the first to review this server!