@pipeworx/bioportal
Connect: https://gateway.pipeworx.io/bioportal/mcp · Install: one-click buttons
No MCP client? Skip the connection: POST https://gateway.pipeworx.io/v1/tools/search_packs {"query":"..."} to find a tool below, GET /v1/tools/<name> for its schema, POST the same URL with arguments for the data — see For AI agents.
Tools: 4
Term search, class lookup and cross-ontology mappings over the ~1,300 biomedical ontologies NCBO’s BioPortal carries — NCIT, SNOMEDCT, LOINC, RXNORM, MESH, HPO, ICD10CM, GO and the rest.
Tools
bioportal_search(query, ontologies?, exact_match?, require_definitions?, limit?)— free text to coded concept, with preferred label, synonyms, definition, CUI and the permanent class IRI.bioportal_ontologies(filter?, limit?)— the catalogue of ontologies, so you can find the acronym before you search.bioportal_class(ontology, class_id)— the full record for one class.bioportal_mappings(ontology, class_id, to_ontology?, limit?)— the equivalent concept in other ontologies, with the mapping method.
Auth
BioPortal requires an apikey on every request. Resolution order in this pack:
- caller-supplied
_apiKey(free key, https://bioportal.bioontology.org/accounts/new), - otherwise the demo key NCBO publishes in its own REST documentation, which is shared across all of its users and rate-limited accordingly.
Every response carries key_source so a caller can see which one answered.
When a platform key is provisioned (PLATFORM_BIOPORTAL_KEY), the change is
one line: add "platformKeyEnv": "PLATFORM_BIOPORTAL_KEY" to this pack’s entry
in workers/gateway/src/pack-manifest.json and re-run
node scripts/sync-pack-manifest.mjs. The gateway then injects it as _apiKey
and the demo fallback stops being reached. It is deliberately NOT declared
today: keyBlockedTools() in the gateway marks every tool of a pack that
declares an UNSET platformKeyEnv as key-blocked, which would sink a pack that
currently works for everyone.
Data sources
- https://data.bioontology.org/search —
q,ontologies,exact_match,require_definitions,pagesize. - https://data.bioontology.org/ontologies — the catalogue.
- <https://data.bioontology.org/ontologies/{acronym}/classes/{URL-encoded IRI}>
and its
/mappingschild.
Things that will otherwise cost you an afternoon:
display_links=falseis the difference between 4.4 MB and 312 KB on/ontologies. Use it there.- But do NOT set it on
/search: a search hit’s ontology acronym is only derivable fromlinks.ontology. Its@idis a purl (http://purl.bioontology.org/ontology/MESH/D008545) whose path segment is not reliably the acronym. - The class IRI must be URL-encoded as a single path segment —
#and/included — e.g./ontologies/NCIT/classes/http%3A%2F%2Fncicb.nci.nih.gov%2Fxml%2Fowl%2FEVS%2FThesaurus.owl%23C3224. - A mapping record lists BOTH ends in
classes, including the class you asked about. Pick the one whose ontology is not the source, or every mapping looks like a self-mapping. - Not every concept maps to the big terminologies. NCIT “Melanoma” (C3224)
has 114 mappings and none of them are to SNOMEDCT — the targets are CADSR-VS,
RH-MESH, MESH, MEDDRA, LOINC and a long tail. An empty
to_ontologyfilter result is a real answer, not a failure.
Scope, so nobody builds this twice
The ols pack covers EBI’s Ontology Lookup Service — a different repository
with a different, OBO-leaning set of ontologies. BioPortal is the one carrying
the US clinical terminologies. cbioportal is cancer genomics and is unrelated
despite the name.
Tools
- bioportal_search — Search ~1,300 biomedical ontologies for a term and get back the matching classes with their preferred label, synonyms, definition, ontology and permanent class IRI. AUTHORITATIVE for mapping free text
- bioportal_ontologies — List the biomedical ontologies BioPortal carries — acronym, full name and type — so you can pick the right vocabulary acronym before searching or looking up a class. AUTHORITATIVE catalogue of what is
- bioportal_class — Full record for one ontology class by its IRI — preferred label, every synonym, the curated definition, semantic types, obsolescence flag, and links to parents and children. AUTHORITATIVE for the cano
- bioportal_mappings — Cross-ontology mappings for one class — the equivalent concepts in every other BioPortal ontology, with the mapping source (SAME_URI, LOOM, CUI, REST). AUTHORITATIVE for translating a code between ter
Tools
bioportal_class— Full record for one ontology class by its IRI — preferred label, every synonym, the curated definition, semantic types, obsolescence flag, and links to parents and children. AUTHORITATIVE for the canobioportal_mappings— Cross-ontology mappings for one class — the equivalent concepts in every other BioPortal ontology, with the mapping source (SAME_URI, LOOM, CUI, REST). AUTHORITATIVE for translating a code between terbioportal_ontologies— List the biomedical ontologies BioPortal carries — acronym, full name and type — so you can pick the right vocabulary acronym before searching or looking up a class. AUTHORITATIVE catalogue of what isbioportal_search— Search ~1,300 biomedical ontologies for a term and get back the matching classes with their preferred label, synonyms, definition, ontology and permanent class IRI. AUTHORITATIVE for mapping free text