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 for data authoring, and
materialize-data for the hardened deployment init sidecar).
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.
Local data authoring can refresh from upstream with conditional GET (ETag /
Last-Modified), but deployed servers do not. Production uses the immutable,
digest-pinned release declared in container-release.json: hpo-data-init
materializes it before the application starts, then the application reads the
selected snapshot only. 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 init sidecar, 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.
Related MCP Servers
- FlicenseBqualityDmaintenanceA production-ready Model Context Protocol (MCP) server that provides comprehensive access to the BioOntology API for searching, annotating, and exploring over 1,200 biological ontologies.Last updated109
- FlicenseAqualityDmaintenanceProvides access to the Human Phenotype Ontology (HPO) API with tools for searching, browsing hierarchy, and analyzing phenotypic terms used in genetic research.Last updated12
- Alicense-qualityDmaintenanceMCP servers for querying Brick and 223P ontologies, enabling abbreviation expansion, term/property lookup, and definition retrieval.Last updated5BSD 3-Clause
- AlicenseAqualityAmaintenanceMCP server that provides tools to query harmonized gene-disease validity data from the Gene Curation Coalition, supporting consensus and conflict detection for gene-disease assertions.Last updated12MIT
Related MCP Connectors
MCP gateway federating 21 biomedical MCP servers behind one endpoint: gnomAD, ClinVar, HPO, VEP.
MCP server for Open Archives: Dutch genealogical records and historical page transcriptions.
MCP server for Drosophila neuroscience data from VirtualFlyBrain
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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