关于 Bioportal
Bioportal 是面向生物医学研究与临床术语工作的 MCP 服务,可查询 NCBO BioPortal 的本体及概念。它支持术语检索、类别详情和跨本体映射,并可通过 Pipeworx 网关或本地 stdio 使用。
主要功能
- 01跨约 1,300 个生物医学本体搜索术语
- 02查看本体目录与类别记录
- 03查询跨本体概念映射
- 04返回标签、同义词、定义及 CUI
适用场景
- 01将自由文本术语匹配为编码概念
- 02检查某个本体类别的完整信息
- 03查找其他本体中的等价概念
MCP 相关
作为 MCP 服务,它向客户端提供本体搜索、目录查询、类别查询和映射工具。可连接 Pipeworx 网关,也可作为本地 stdio 服务运行。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://gateway.pipeworx.io/bioportal/mcpclaude mcp add --transport http pipeworx-io-bioportal https://gateway.pipeworx.io/bioportal/mcp{"mcpServers":{"pipeworx-io-bioportal":{"type":"http","url":"https://gateway.pipeworx.io/bioportal/mcp"}}}在 Cursor 中打开{"servers":{"pipeworx-io-bioportal":{"type":"http","url":"https://gateway.pipeworx.io/bioportal/mcp"}}}在 VS Code 中打开{"mcpServers":{"pipeworx-io-bioportal":{"type":"http","url":"https://gateway.pipeworx.io/bioportal/mcp"}}}{"mcpServers":{"pipeworx-io-bioportal":{"serverUrl":"https://gateway.pipeworx.io/bioportal/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
45| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| q | string | 否 | question 的别名。 |
| ask | string | 否 | question 的别名。 |
| text | string | 否 | question 的别名。 |
| input | string | 否 | question 的别名。 |
| packs | array | 否 | 可选。将路由限制为这些包的 slug(例如 ["sec-form-d","sec-13f"]),路由器随后只会从这些包中的工具进行选择。省略则使用默认的完整目录路由。Slug 可从 list_packs / search_packs / https://pipeworx.io/directory 获取;未列出或未知的 slug 会被忽略,并在 _meta.pack_scope.ignored 中列出。如果没有任何 slug 能匹配问题,则会在整个目录中路由,并设置 _meta.pack_scope.full_catalog:true(绝不会返回空答案)。 |
| query | string | 否 | question 的别名。 |
| prompt | string | 否 | question 的别名。 |
| message | string | 否 | question 的别名。 |
| question | string | 是 | 用自然语言表达的问题或请求。支持 query、q、prompt、text、input、ask、message 作为别名。 |
详细介绍
@pipeworx/bioportal
在 NCBO BioPortal 收录的约 1,300 种生物医学本体中搜索术语、查找类并进行跨本体映射,包括 NCIT、SNOMEDCT、LOINC、RXNORM、MESH、HPO、ICD10CM、GO 等。
属于 Pipeworx — 一个将 AI Agent 连接到 1875+ 个实时数据源的 MCP 网关。这是一个独立的非官方集成,与上游提供方无关联、未获其认可,也不是由其发布。
工具
bioportal_search(query, ontologies?, exact_match?, require_definitions?, limit?)— 将自由文本转换为编码概念,并返回首选标签、同义词、定义、CUI 和永久类 IRI。bioportal_ontologies(filter?, limit?)— 本体目录,让你在搜索前查找缩写。bioportal_class(ontology, class_id)— 单个类的完整记录。bioportal_mappings(ontology, class_id, to_ontology?, limit?)— 其他本体中的 等价概念,以及映射方法。
身份验证
BioPortal 要求每个请求都携带 apikey。此工具包中的解析顺序如下:
- 调用方提供的
_apiKey(免费密钥,https://bioportal.bioontology.org/accounts/new), - 否则使用 NCBO 在其 REST 文档中发布的演示密钥,该密钥由所有用户共享,并受相应的速率限制。
每个响应都包含 key_source,以便调用方查看使用了哪个密钥。
配置平台密钥时(PLATFORM_BIOPORTAL_KEY),只需一行更改:在
workers/gateway/src/pack-manifest.json 中此工具包对应的条目添加
"platformKeyEnv": "PLATFORM_BIOPORTAL_KEY",然后重新运行
node scripts/sync-pack-manifest.mjs。网关随后会将其注入为 _apiKey,
并且不再使用演示密钥回退方案。目前特意没有声明此项:网关中的
keyBlockedTools() 会将声明了未设置的 platformKeyEnv 的工具包中的每个工具标记为密钥受阻,这会导致目前对所有人都可用的工具包无法使用。
数据源
- https://data.bioontology.org/search —
q、ontologies、exact_match、require_definitions、pagesize。 - https://data.bioontology.org/ontologies — 本体目录。
- <https://data.bioontology.org/ontologies/{acronym}/classes/{URL-encoded IRI}>
及其
/mappings子路径。
以下细节可能会让你白白花上一个下午:
- **
display_links=false会让/ontologies的响应大小从 4.4 MB 降至 312 KB。**在此处使用它。 - 但不要在
/search上设置它:搜索结果中的本体缩写只能从links.ontology推导得出。其@id是一个 purl (http://purl.bioontology.org/ontology/MESH/D008545),其路径段并不总是缩写。 - 类 IRI 必须作为单个路径段进行 URL 编码 — 包括
#和/,例如:/ontologies/NCIT/classes/http%3A%2F%2Fncicb.nci.nih.gov%2Fxml%2Fowl%2FEVS%2FThesaurus.owl%23C3224。 - 映射记录会在
classes中列出两端,包括你查询的类。请选择本体不是源本体的一端,否则每个映射看起来都会像是自映射。 - **并非每个概念都能映射到大型术语体系。**NCIT 中的“Melanoma”(C3224)有 114 个映射,但没有一个映射到 SNOMEDCT — 目标本体包括 CADSR-VS、RH-MESH、MESH、MEDDRA、LOINC 以及许多其他本体。
to_ontology筛选结果为空是有效结果,并非失败。
范围说明,避免重复构建
ols 工具包涵盖 EBI 的 Ontology Lookup Service — 这是一个不同的仓库,收录了另一组偏向 OBO 的本体。BioPortal 收录的是美国临床术语体系。cbioportal 与癌症基因组学有关,尽管名称相似,但两者并无关联。
快速开始
添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):
{
"mcpServers": {
"bioportal": {
"url": "https://gateway.pipeworx.io/bioportal/mcp"
}
}
}
此端点实际提供的内容
tools/list 在 https://gateway.pipeworx.io/bioportal/mcp 返回上表中的工具,以及共享的 Pipeworx 元工具——ask_pipeworx、
discover_tools、search_within、remember/recall 和网关范围内的其他工具。因此,你看到的工具数量会多于此表:单个工具包端点目前会列出约 30 个共享工具,以及该工具包自己的工具。连接的 initialize 响应会说明确切范围,是当天最权威的答案。
这是有意为之,并非意外的多路复用。元工具可让范围受限的连接回答此工具包无法涵盖的问题——通过 ask_pipeworx 跨整个目录进行路由——无需添加第二个 MCP 服务。目前无法挂载不包含这些元工具的工具包端点;如果额外的架构占用的上下文比路由带来的价值更大,请连接一次完整网关,而不是连接多个工具包端点。
或者连接完整的 Pipeworx 网关,直接列出每个工具包的工具,而不只是此工具包的工具:
{
"mcpServers": {
"pipeworx": {
"url": "https://gateway.pipeworx.io/mcp"
}
}
}
两个 URL 都连接到同一个网关和相同的 1875+ 个数据源。唯一的区别在于哪些工具包的工具会被直接列出;从任一端点都可以通过 ask_pipeworx 访问所有工具。
没有 MCP 客户端?通过 HTTP 调用
curl -X POST https://gateway.pipeworx.io/v1/tools/bioportal_search \
-H 'Content-Type: application/json' \
-d '{"query":"melanoma","ontologies":"NCIT,DOID","limit":3}'
首次调用无需账户。检查任意工具:GET https://gateway.pipeworx.io/v1/tools/bioportal_search。查找工具包:使用 {"query":"..."} 向 https://gateway.pipeworx.io/v1/tools/search_packs 发送 POST 请求。
独立运行(无需网关账户)
此软件包也可作为本地 stdio MCP 服务运行——无需 Pipeworx 账户,也无需经过网关往返:
{
"mcpServers": {
"bioportal": {
"command": "npx",
"args": ["-y", "@pipeworx/mcp-bioportal"]
}
}
}
或者直接运行以确认它能启动:
npx -y @pipeworx/mcp-bioportal
它通过 stdin/stdout 使用 MCP,并仅针对此工具包的工具响应 initialize/tools/list/tools/call——不包含上述网关连接所添加的任何共享元工具。使用相同的源代码和工具,但没有 ask_pipeworx 路由。
使用 ask_pipeworx
你可以不用直接调用工具,而是用通俗英语提问——在上述工具包端点和完整网关上都可以使用:
ask_pipeworx({ question: "your question about Bioportal data" })
网关会自动选择合适的工具并填入参数。
更多信息
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。