mcpField
M
Mondo

Mondo

远程服务
pipeworx.io健康医疗01 天前更新

关于 Mondo

Mondo 将自由文本疾病和病症名称解析为 Mondo Disease Ontology 术语,适用于研究人员和临床数据工作流。它支持批量处理,明确标注匹配质量而不把模糊匹配视为精确匹配,并返回跨本体引用。

主要功能

  1. 01批量解析病症文本
  2. 02标注精确、层级、模糊或未匹配结果
  3. 03返回跨本体引用
  4. 04可选返回后代术语 ID

适用场景

  1. 01规范化临床试验登记中的病症字段
  2. 02将药品标签适应症映射到本体术语
  3. 03构建包含疾病亚型的筛选条件

MCP 相关

通过 Pipeworx 或独立本地 stdio 服务,以 MCP 工具形式提供病症解析。Pipeworx 端点还包含共享网关元工具。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://gateway.pipeworx.io/mondo/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

@pipeworx/mondo

将自由文本疾病/病症字符串——临床试验注册库的“conditions”字段、药品标签上的适应症措辞,以及调用方手动输入的任何内容——解析到 Mondo 疾病本体(MONDO),并提供值得信赖的匹配质量标签,以及匹配术语的跨本体交叉引用。

属于 Pipeworx 的一部分——一个将 AI Agent 连接到 1683+ 个实时数据源的 MCP 网关。

工具

  • mondo_resolve_condition(conditions, expand?) — 批量解析 1-25 个 自由文本疾病/病症字符串。对每个字符串,返回原始措辞(原样保留)、最佳 MONDO id + 标签,以及 match_quality:

    • exact-label — 与 Mondo 术语的首选标签完全相同(忽略大小写/标点)。
    • exact-synonym — 与该术语列出的某个精确同义词完全相同。
    • broader / narrower — 该字符串准确命名了通过 Mondo 层级找到的父项或子项术语,而非全文搜索命中的最相关术语本身。这也包括移除注册库添加到疾病名称前面的固定前缀,即开头的分期/状态限定词,例如“Stage IV Melanoma”、“Metastatic Breast Cancer”、“Recurrent X”——如果移除后剩余部分与某个精确标签/同义词匹配,响应会标记为 broader(输入名称的是匹配疾病的亚型/分期),并附注说明移除了哪些内容。
    • fuzzy — 来自 EBI OLS4 的最接近全文匹配,并非已确认的精确术语。绝不会标记为精确匹配。
    • no-match — 未找到合理匹配。响应会说明尝试过哪些查询(包括放宽后的变体——移除括号内容、将“Specific, General”形式的 MeSH 名称还原为非倒置形式,以及逐步截去末尾限定词,例如“Stage IV”),并在放宽查询找到候选项时列出最接近的候选项。绝不会返回空结果 (docs/silent-zero-policy.md)。

    每个非 no-match 结果还会包含该解析 id 的 xrefs(OMIM、Orphanet、DOID、 UMLS、MeSH),数据取自 MyDisease.info 记录。 传入 expand: true 还会返回 descendant_mondo_ids——已解析术语下的所有亚型,最多 500 个——用于构建包含亚型的注册库筛选条件(例如“非小细胞肺癌的任何亚型”)。

    匹配质量标签就是本工具的核心。 模糊匹配或层级匹配绝不会升级为“精确”——进行临床安全检查或构建注册库筛选条件的调用方需要了解其中的区别。

不提供第二个工具:术语详情、层级遍历(祖先/子项)和 Mondo 原始搜索已在 ebi-ols pack 中提供——此 pack 只在其基础上增加解析和匹配质量层,不会重复提供已有功能。

身份验证

无需密钥。两个上游都是公开、无需身份验证的 API。

数据源

  • https://www.ebi.ac.uk/ols4/api/search(EBI Ontology Lookup Service, 限定为 ontology=mondo)——对 Mondo 术语进行全文搜索,提供首选标签以及精确/相关同义词。与 ebi-ols 工具包代理的上游相同;这里直接调用,而非通过该工具包转发。
  • https://mydisease.info/v1/disease/{id}(MyDisease.info,BioThings)——每个术语的 Mondo 记录:跨本体交叉引用(mondo.xrefs.omim / .omimps、.orphanet、.doid、.umls、.mesh),以及完整的传递闭包 mondo.ancestors / mondo.descendants ID 列表,用于更广泛/更狭窄的层级检查和 expand 标志。与 mydisease 工具包代理的上游相同;这里直接调用,而非通过该工具包转发。

供后续维护者参考的匹配说明:

  • 规范化时不区分大小写,并将连续的任意非字母数字字符(连字符、逗号、标点符号)视为一个空格,因此 “Non-small Cell Lung Cancer”和“non small cell lung cancer”会被视为相同。不会进行词干提取,也不会扩展 OLS4 已返回的 exact_synonyms 之外的同义词——如果一个字符串不在该列表中,即使人类会认为它是释义,也不会被判定为精确匹配。
  • MeSH 倒置的“特定词,通用词”逗号形式(“Carcinoma, Non-Small-Cell Lung”)是临床试验注册中的主要疾病名称形式,因此会先将其还原为正序(“Non-Small-Cell Lung Carcinoma”),并与字面字符串一起检查是否精确匹配,然后才回退到模糊匹配——对已知惯例进行固定转换算作精确匹配,而非猜测。
  • 前置限定词剥离(src/index.ts 中的 STAGE_QUALIFIER_RE / STATUS_QUALIFIER_RE)采用简短且固定的有序列表——分期标记(“Stage IV”、“Stage IIIA”)或以下词语之一:metastatic / recurrent / advanced / refractory / unresectable / relapsed / relapsing / progressive / localized / localised——在尾词放宽阶梯之前检查,因为无论字面字符串是否返回零条结果(“Stage IV Melanoma”),还是返回若干非精确结果(“Metastatic Breast Cancer”已将“breast cancer”显示为排名第一的全文搜索结果,但并非精确匹配),此规则都适用。仅进行确定性的前缀匹配,最多 3 轮,因此像“Advanced Metastatic Melanoma”这样的连续限定词会被全部剥离。
  • 在线测试(2026-09)时,OLS4 的 exact=true 搜索参数无法可靠地将结果限制为精确匹配——因此改为在客户端将规范化后的查询文本与每个候选项的标签及精确同义词进行比较,以确定是否精确匹配。
  • MyDisease 记录中的 omim 交叉引用有时会以 omimps(OMIM 表型系列)而非 omim 的形式出现;两者都会合并到返回的 omim 数组中。
  • 每次 OLS4/MyDisease 请求都会通过 fetchWithTimeout 设置超时上限;MyDisease 数据补充失败时会降级为空交叉引用,而不会导致整个解析失败(OLS4 匹配仍然有效)。

快速开始

添加到 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):

{
  "mcpServers": {
    "mondo": {
      "url": "https://gateway.pipeworx.io/mondo/mcp"
    }
  }
}
此端点实际提供的内容

tools/list 在 https://gateway.pipeworx.io/mondo/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 都连接到同一个网关和相同的 1683+ 个数据源。唯一的区别是直接列出哪个工具包的工具;通过任一端点,ask_pipeworx 都能访问所有工具。

没有 MCP 客户端?通过 HTTP 调用

curl -X POST https://gateway.pipeworx.io/v1/tools/mondo_resolve_condition \
  -H 'Content-Type: application/json' \
  -d '{"conditions":["Carcinoma, Non-Small-Cell Lung","NSCLC Stage IV","type 2 diabetes mellitus","Carcinoid Tumors","Ehlers-Danlos syndrome"]}'

首次调用无需账户。检查任意工具:GET https://gateway.pipeworx.io/v1/tools/mondo_resolve_condition。查找工具:使用 {"query":"..."} 向 POST https://gateway.pipeworx.io/v1/tools/search_packs 发送请求。

独立运行(无需网关账户)

此软件包也可以作为本地 stdio MCP 服务运行——无需 Pipeworx 账户,也无需经过网关:

{
  "mcpServers": {
    "mondo": {
      "command": "npx",
      "args": ["-y", "@pipeworx/mcp-mondo"]
    }
  }
}

也可以直接运行,以确认它能启动:

npx -y @pipeworx/mcp-mondo

它通过 stdin/stdout 使用 MCP 协议,并响应 initialize/tools/list/tools/call,仅提供此工具包的工具——不包含上述网关连接额外提供的任何共享元工具。来源相同,工具相同,但没有 ask_pipeworx 路由。

使用 ask_pipeworx

你也可以用日常语言提问,而不是直接调用工具——无论使用上面的工具包端点还是完整网关,都可以这样操作:

ask_pipeworx({ question: "your question about Mondo data" })

网关会选择合适的工具,并自动填入参数。

更多信息

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。