@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:

  1. caller-supplied _apiKey (free key, https://bioportal.bioontology.org/accounts/new),
  2. 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

Things that will otherwise cost you an afternoon:

  • display_links=false is 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 from links.ontology. Its @id is 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_ontology filter 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 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
  • 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_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

Regenerated from source · build September 18, 2026