HPO术语查询服务

一个提供人类表型本体(HPO)API访问的MCP服务器,支持术语搜索、层次导航和统计分析,适用于遗传研究和临床诊断。

  • by Augmented-Nature
  • TypeScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 Augmented-Nature/HPO-MCP-Server

使用说明

非官方HPO MCP服务器

提供对人类表型本体(HPO)API的访问的MCP(模型上下文协议)服务器。HPO包含18000多个描述人类表型异常的术语,广泛应用于遗传研究和临床诊断。

由开发 增强自然

特性

此MCP服务器提供了12种全面的工具来与HPO API交互:

核心搜索和信息工具

  • search_hpo_terms -通过关键字、ID或同义词搜索HPO术语,并支持分页
  • get_hpo_term -通过ID获取特定HPO术语的详细信息
  • 获取所有政策条款 -按页码列出所有HPO术语
  • batch_get-hpo术语 -在单个请求中检索多个HPO术语(最多20个术语)

分层导航工具

  • get_hpo_ancestors -获取所有祖先术语(层次结构中更高的所有术语)
  • 获取租金 -获取直接父条款(上一级)
  • 家长会_儿童 -获取直接的子术语(向下一级)
  • 获取管理员 -获取所有子代术语(层次结构中较低的所有术语)

分析和实用工具

  • validate_hpoid -验证HPO ID格式并验证术语是否存在
  • get_hpo_term_path -获取从根到特定术语的完整层次路径
  • 比较hpo术语 -比较两个术语,找出它们的关系和共同祖先
  • 获取政策条款状态 -获取HPO术语的全面统计和分析

先决条件

  • Node.js:版本18或更高版本
  • Internet连接:访问HPO API时需要

安装

  1. 克隆或下载此服务器:
cd hpo-server
npm install
  1. 构建服务器:
npm run build

用法

运行服务器

npm start
# or
node build/index.js

配置

将服务器添加到MCP设置文件中:

{
  "mcpServers": {
    "hpo-server": {
      "command": "node",
      "args": ["/path/to/hpo-server/build/index.js"]
    }
  }
}

使用示例

搜索和发现

  1. 搜索与扣押相关的术语:

    Search for HPO terms related to "seizure" using search_hpo_terms
    
  2. 按页码搜索:

    Search for "heart defect" terms with 20 results per page using search_hpo_terms
    
  3. 获取详细的学期信息:

    Get detailed information about seizure (HP:0001250) using get_hpo_term
    

分层导航

  1. 探索术语层次结构:

    Get all ancestors of seizure term using get_hpo_ancestors
    
  2. 查找相关术语:

    Get direct children of nervous system abnormality using get_hpo_children
    
  3. 浏览术语后代:

    Get all descendant terms of seizure using get_hpo_descendants
    

分析和实用程序

  1. 验证HPO ID:

    Validate if "HP:0001250" is a correct HPO ID using validate_hpo_id
    
  2. 获取分层路径:

    Show the complete path from root to seizure term using get_hpo_term_path
    
  3. 比较两个术语:

    Compare seizure and nervous system abnormality terms using compare_hpo_terms
    
  4. 获取学期统计数据:

    Get comprehensive statistics for seizure term using get_hpo_term_stats
    
  5. 批量处理:

    Get information for multiple terms (HP:0001250, HP:0000707, HP:0001626) using batch_get_hpo_terms
    
  6. 列出所有术语:

    Browse all HPO terms with pagination using get_all_hpo_terms
    

API功能

HPO ID格式支持

HPO ID可以以多种格式提供:

  • 完整格式: HP:0001250
  • 简短格式: 0001250
  • 服务器自动处理格式转换

分页支持

搜索和列表工具支持分页:

  • max -每页最大结果(因工具而异)
  • offset -要跳过的结果数(默认值:0)

参数详细信息

  • 本我 (字符串,大多数工具都需要):HPO术语ID
  • 怎么翻译 (字符串,搜索时必需):搜索查询-关键字、HPO ID或同义词
  • 类别 (数组,可选):按特定HPO类别筛选
  • 最大 (数字,可选):返回的最大结果
  • 偏移 (数字,可选):分页偏移

API详细信息

  • 基本URL: https://ontology.jax.org/api/hp/
  • 认证:不需要(公共API)
  • 速率限制:由客户端管理,超时30秒
  • 错误处理:全面的错误消息和优雅的降级

项目结构

hpo-server/
├── src/
│   ├── index.ts              # Main MCP server implementation
│   ├── types/
│   │   └── hpo.ts           # TypeScript interfaces for HPO data
│   ├── utils/
│   │   └── api-client.ts    # HPO API HTTP client
│   └── handlers/
│       └── hpo-handlers.ts  # MCP tool implementations
├── build/                   # Compiled JavaScript output
├── package.json
├── tsconfig.json
└── README.md

发展

构建服务器

cd hpo-server
npm run build

依赖项

  • @modelcontextprotocol/sdk -用于服务器实现的MCP SDK
  • axios -用于HPO API请求的HTTP客户端

关于人类表型本体论

HPO提供了人类疾病中遇到的表型异常的标准化词汇。每个术语都描述了一种表型异常,如“房间隔缺损”或“智力残疾”。HPO是:

错误处理

服务器包括全面的错误处理:

  • 尽可能正确格式化无效的HPO ID
  • 网络错误提供清晰的用户友好消息
  • API错误通过上下文传递
  • 带有有用错误消息的参数验证

局限性

  • 执行最大结果限制以防止压倒性的反应
  • 为了稳定,网络超时设置为30秒
  • 某些HPO API端点可能有自己的速率限制(妥善处理)