hpo-link
The hpo-link server is a read-only MCP/REST API that grounds phenotype research in the Human Phenotype Ontology (HPO), enabling offline lookups across phenotype terms, gene/disease associations, and cross-ontology mappings via a local SQLite database.
Discovery & Diagnostics
get_server_capabilities— Explore available tools, workflows, response modes, error taxonomy, and limitsget_diagnostics— Check database status, loaded HPO release version, term counts, and runtime metrics
Phenotype Term Lookup
resolve_term— Resolve a label, synonym, HP id, or external CURIE to a canonical HPO term with match typesearch_terms— Full-text search over HPO term names, synonyms, and definitions with relevance ranking and paginationget_term— Retrieve full term details: definition, synonyms, alt IDs, subsets, cross-references, parents/children, and obsolescence info
Hierarchy Navigation
get_term_ancestors— All transitiveis_aancestors (broader terms) with paginationget_term_descendants— All transitiveis_adescendants (more specific terms) with paginationget_term_parents— Directis_aparents onlyget_term_children— Directis_achildren only
Cross-Ontology Mapping
resolve_xref— Map an external CURIE (UMLS, SNOMED, NCIT, MedDRA, ICD-10, MONDO, ORPHA, etc.) back to HPO term(s)map_cross_ontology— List all cross-references for an HPO term grouped by target ontology prefix
Gene ↔ Phenotype ↔ Disease Associations (HPOA)
get_phenotypes_for_gene— HPO terms annotated to a gene (by symbol or NCBI id)get_genes_for_phenotype— Genes annotated to an HPO phenotype term (optionally including descendants)get_phenotypes_for_disease— HPO terms annotated to a disease CURIE (OMIM, Orphanet)get_diseases_for_phenotype— Diseases annotated to an HPO phenotype term (optionally including descendants)get_genes_for_disease— Genes associated with a disease CURIEget_diseases_for_gene— Diseases associated with a gene
Key Features
All responses cite HPO id and release version for provenance
Every response includes
_meta.next_commandsfor ready-to-call follow-up queriesFour verbosity levels:
minimal,compact,standard,fullFully offline — no external API calls after the local database is built
Research use only; not for clinical decision support
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., "@hpo-linkfind phenotypes for gene BRCA1"
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.
hpo-link
An MCP server (Streamable HTTP or stdio) that grounds phenotype work in the
Human Phenotype Ontology (HPO): term lookup, the is_a
hierarchy, cross-ontology mapping, and gene↔phenotype↔disease associations, served
read-only from a local index of the HPO release and its HPOA annotations.
Research use only. Not clinical decision support. Do not use for diagnosis, treatment, triage, or patient management.
Why
HPO ships as bulk artifacts — an OBO/JSON ontology graph (hp.json) and a flat
annotation table (phenotype.hpoa). Neither answers a question. "Which genes are
annotated to seizure, including its subtypes?" needs the transitive is_a closure over
a multi-parent DAG, a synonym/xref index to get from free text to HP:0001250, and a
join against HPOA — plumbing every consumer otherwise rebuilds, badly.
hpo-link builds that once into a read-only SQLite index (closure table, FTS over
names/synonyms/definitions, xrefs ranked by mapping predicate) and serves it as MCP
tools. No upstream call sits in the request path, so lookups are offline and
deterministic, and every response cites the HPO id and the HPO release it came from.
Related MCP server: Unofficial HPO MCP Server
Quick start
Hosted — no install:
claude mcp add --transport http hpo-link https://hpo-link.genefoundry.org/mcpLocal (Python 3.12+, uv):
uv sync --group dev # install
make data # REQUIRED: download HPO + HPOA and build the local database
make data-status # loaded HPO release + counts
make dev # unified REST + MCP on http://127.0.0.1:8000 (/mcp, /health)There is no data until make data (uv run hpo-link-data build) has run once.
claude mcp add --transport http hpo-link --scope user http://127.0.0.1:8000/mcp
make mcp-serve # stdio instead, for Claude Desktop (stdout is the protocol)Three console scripts: hpo-link (unified server), hpo-link-mcp (stdio),
hpo-link-data (build / refresh / status).
Tools
Tool | Purpose |
| Discovery surface — tools, workflows, error taxonomy, limits |
| Database status, loaded HPO release, counts |
| Label, synonym, HP id or xref → one canonical term + |
| Full-text search over names, synonyms and definitions |
| The record — definition, synonyms, grouped xrefs, parents/children, obsolescence |
| Transitive |
| Transitive |
| Direct |
| Direct |
| External CURIE ( |
| An HP term → its mappings, grouped by target prefix |
| HPO terms annotated to a gene |
| Genes annotated to an HPO term |
| HPO terms annotated to a disease |
| Diseases annotated to an HPO term |
| Genes associated with a disease |
| Diseases associated with a gene |
Every response carries _meta.next_commands (ready-to-call follow-ups). Ids are
normalised to HP:NNNNNNN. response_mode ∈ minimal | compact | standard | full
(default compact) trades detail for tokens. Worked examples: docs/usage.md.
Leaf names are unprefixed per
Tool-Naming Standard v1
(serverInfo.name = hpo-link); behind
genefoundry-router the gateway applies
the canonical namespace token hpo, so they surface as hpo_<tool> — e.g.
hpo_resolve_term.
Data & provenance
Built from two upstream artifacts: the HPO ontology (hp.json, via the OBO PURL
http://purl.obolibrary.org/obo/hp.json) and the HPOA annotations
(phenotype.hpoa), which link HPO terms to OMIM / Orphanet / DECIPHER diseases and,
derived from those, to genes.
Refresh is a conditional GET (ETag / Last-Modified); a 304 reuses the local file, so
make data-refresh is cheap and rebuilds only on a new release. Builds are atomic and
lock-serialised, and the loaded release is reported by get_diagnostics. A prebuilt
database can be pulled instead of built (HPO_LINK_DATA__PREBUILT_DB_URL). Details:
docs/data.md.
Data licence: HPO is distributed under a custom licence for research and educational use (https://hpo.jax.org/app/license) — attribution required.
Cite: Köhler S, Gargano M, Matentzoglu N, et al. The Human Phenotype Ontology in 2021. Nucleic Acids Research 2021;49(D1):D1207–D1217. doi:10.1093/nar/gkaa1043. For the most recent release cite instead: Gargano MA, Matentzoglu N, Coleman B, et al. The Human Phenotype Ontology in 2024: phenotypes around the world. Nucleic Acids Research 2024;52(D1):D1333–D1346. doi:10.1093/nar/gkad1005.
Documentation
Usage — per-tool examples, the citation contract, typical workflows.
Architecture — the two planes, ingest pipeline, SQLite schema, request lifecycle.
Data & provenance — sources, freshness, build integrity, prebuilt artifacts, licence.
Configuration — every
HPO_LINK_*variable and the Host/Origin/CORS allowlists.Deployment — Docker, refresh scheduling, health and deploy verification.
AGENTS.md — engineering conventions, invariants, definition of done.
Contributing
See AGENTS.md for the invariants and conventions. make ci-local is the
definition-of-done gate: format, lint, line budget, README standard, mypy, and tests.
Write the failing test first.
License
MIT © Bernt Popp — code only. The HPO data is licensed separately for research and educational use with required attribution (https://hpo.jax.org/app/license); see Data & provenance.
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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/hpo-link'
If you have feedback or need assistance with the MCP directory API, please join our Discord server