article
README
🚀 OLS MCP 服务器
大语言模型在处理本体时表现不佳,常常会虚构术语或其标识符。本服务器提供了一种可靠的方式来访问和查询本体,确保信息准确且最新。

本仓库包含一个模型上下文协议(MCP)服务器,用于访问 本体查询服务(OLS) API。该服务器使 AI 助手能够从各种生物和医学本体中搜索和检索本体术语、概念和层次结构。
本服务器旨在与 Claude Desktop 等 AI 助手无缝协作,允许用户使用自然语言查询本体。它支持广泛的本体,包括基因本体(GO)、人类表型本体(HP)等等。

未启用(下图上半部分)和启用 mcp 服务器(下图下半部分)的对比:

✨ 主要特性
OLS MCP 服务器提供以下工具:
- 🔍 搜索术语:跨本体搜索术语,并支持灵活过滤
- 📚 搜索本体:发现可用的本体及其元数据
- ℹ️ 获取本体信息:检索特定本体的详细信息
- 🎯 获取术语信息:获取特定术语的全面详细信息
- 🌳 获取术语子项:查找本体层次结构中的直接子术语
- 👨👩👧👦 获取术语祖先:检索父术语和祖先
- 🤖 查找相似术语:使用大语言模型嵌入发现语义相似的术语
📦 安装指南
前提条件
- Python 3.12 或更高版本
- uv 包管理器
安装 uv(如果尚未安装)
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
安装 OLS MCP 服务器
# 克隆仓库
git clone https://github.com/seandavi/ols-mcp-server.git
cd ols-mcp-server
# 安装依赖
uv sync
# 作为工具安装(可选)
uv tool install .
💻 使用示例
基础用法
在与 Claude Desktop 完成配置后,你可以使用自然语言与 OLS API 进行交互:
# 搜索术语
> "在人类表型本体中搜索与糖尿病相关的术语"
> "在基因本体中查找所有包含 '细胞凋亡' 的术语"
# 获取本体信息
> "告诉我关于基因本体的信息"
> "有哪些适用于化合物的本体?"
# 探索术语层次结构
> "展示基因本体中 '代谢过程' 术语的子项"
> "HP:0000118 的祖先术语有哪些?"
# 查找相似术语
> "在基因本体中查找与 '心脏发育' 相似的术语"
📚 详细文档
开发环境设置
- 克隆仓库:
git clone <repository-url> cd ols-mcp-server - 安装依赖:
uv sync --extra dev - 激活虚拟环境:
source .venv/bin/activate # macOS/Linux # 或者 .venv\Scripts\activate # Windows
代码质量
# 格式化代码
uv run ruff format
# 代码检查
uv run ruff check
# 类型检查
uv run mypy src/
添加新特性
- 在
src/ols_mcp_server/server.py中使用@mcp.tool()装饰器添加新工具 - 在
src/ols_mcp_server/models.py中创建模型以实现结构化响应 - 更新测试以覆盖新功能
- 根据需要更新文档
API 文档
服务器与 EBI 本体查询服务 API v2 进行交互。关键端点如下:
- 搜索:
https://www.ebi.ac.uk/ols4/api/search - 本体:
https://www.ebi.ac.uk/ols4/api/v2/ontologies - 术语:
https://www.ebi.ac.uk/ols4/api/terms - 层次结构:
https://www.ebi.ac.uk/ols4/api/v2/ontologies/{ontology}/classes/{term}/children
🔧 技术细节
支持的本体
服务器可与通过 EBI 本体查询服务获取的任何本体协同工作,包括:
- GO(基因本体)
- EFO(实验因子本体)
- HP(人类表型本体)
- MONDO(君主疾病本体)
- ChEBI(生物相关化学实体)
- UBERON(超级解剖学本体)
- 还有更多...
🔧 故障排除
常见问题
- 未找到服务器:确保在你的 Claude 配置中服务器的路径正确
- 权限错误:确保服务器脚本可执行
- 网络错误:检查你的互联网连接和防火墙设置
- Python 版本:确保使用的是 Python 3.12 或更高版本
🤝 贡献指南
- 分叉仓库
- 创建功能分支:
git checkout -b feature-name - 进行更改
- 运行测试:
uv run pytest - 格式化代码:
uv run ruff format - 提交拉取请求
📄 许可证
文档中未提及许可证相关信息。
🙏 致谢
- EBI 本体查询服务 提供 API
- FastMCP 提供 MCP 框架
- 本体社区维护这些宝贵资源
微信扫一扫