返回市场
开源基因-MCP服务器

开源基因-MCP服务器

作者:longevity-genie12 星标更新:2025-10-15

项目介绍

opengenes-mcp

Tests PyPI version Python 3.10+ License: MIT Code style: black

MCP (模型上下文协议)服务器用于OpenGenes数据库

此服务器实现了OpenGenes的模型上下文协议(MCP),提供了一个标准化接口来访问衰老和长寿研究数据。MCP使AI助手和代理能够通过结构化接口查询全面的生物医学数据集。

服务器会自动从Hugging Face Hub下载最新的OpenGenes数据库和文档(特别是从opengenes文件夹),确保您始终可以访问最新数据而无需手动管理文件。

OpenGenes数据库包含:

  • lifespan_change:关于基因干预及其对模式生物寿命影响的实验数据
  • gene_criteria:与衰老相关的基因分类标准(12个不同类别)
  • gene_hallmarks:与特定基因相关的衰老标志
  • longevity_associations:来自人群研究的与长寿相关的遗传变异

如果您想了解更多关于模型上下文协议是什么以及如何更有效地使用它,您可以参加DeepLearning AI课程或在YouTube上搜索MCP视频。

🏆 生物信息学MCP框架的一部分

这个MCP服务器是**Holy Bio MCP项目的一部分——一个统一的生物信息学研究框架,该框架赢得了2025年Bio x AI黑客马拉松比赛**,并在胜利后继续积极开发和扩展。

Holy Bio MCP框架将多个专门的MCP服务器整合到一个连贯的生态系统中,用于高级生物研究:

这些服务器共同提供了超过50种专门的生物信息学功能,可以在AI驱动的研究工作流程中无缝协作。更多关于完整框架的信息,请参阅github.com/longevity-genie/holy-bio-mcp

使用示例

这里是如何在实践中使用OpenGenes MCP服务器与AI助手交互:

OpenGenes MCP使用示例

示例展示了如何通过AI助手使用自然语言查询OpenGenes数据库,这会被转换成SQL查询通过MCP服务器。您可以在研究问题的聊天界面和基于AI的开发工具(如Cursor、Windsurf、带有Copilot的VS Code)中使用此数据库,以显著提高您的生物信息学生产力,同时在编码时直接访问衰老和长寿研究数据。

关于MCP(模型上下文协议)

MCP是一种协议,弥合了AI系统与专业领域知识之间的差距。它支持:

  • 结构化访问:直接连接到权威的衰老和长寿研究数据
  • 自然语言查询:通过SQL简化与专业数据库的交互
  • 类型安全:通过FastMCP进行强类型验证
  • AI集成:与AI助手和代理无缝集成

数据源和更新

OpenGenes MCP服务器会自动从Hugging Face Hub上的longevity-genie/bio-mcp-data存储库下载数据。这确保了:

  • 始终最新:无需手动更新即可自动访问最新的OpenGenes数据库
  • 可靠分发:集中式数据托管,具有版本控制和变更跟踪
  • 高效缓存:下载的文件被本地缓存以最小化网络请求
  • 备用支持:支持开发和离线使用的本地备用文件

数据文件存储在Hugging Face存储库的opengenes子文件夹中,包括:

  • open_genes.sqlite - 完整的OpenGenes数据库
  • prompt.txt - 数据库模式文档和使用指南

可用工具

此服务器提供了三种主要工具来与OpenGenes数据库交互:

  1. opengenes_db_query(sql: str) - 对OpenGenes数据库执行只读SQL查询
  2. opengenes_get_schema_info() - 获取详细的模式信息,包括表、列和枚举
  3. opengenes_example_queries() - 获取带有描述的示例SQL查询列表

可用资源

  1. resource://db-prompt - 完整的数据库模式文档和使用指南
  2. resource://schema-summary - 表格及其目的的格式化摘要

快速开始

安装uv

# 下载并安装uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# 验证安装
uv --version
uvx --version

uvx是一个非常好的工具,如果需要的话它可以运行一个python包。

使用uvx运行

您可以直接使用uvx运行opengenes-mcp服务器,而无需克隆仓库:

# 在流式http模式下运行服务器(默认)
uvx opengenes-mcp
<details> <summary>其他uvx模式(STDIO, HTTP, SSE)</summary>

STDIO模式(对于需要stdio的MCP客户端,当您想要保存文件时可能会有用)

# 或显式指定stdio模式
uvx opengenes-mcp stdio

HTTP模式(Web服务器)

# 在默认端口(3001)上运行流式HTTP模式的服务器
uvx opengenes-mcp server

# 在特定端口上运行
uvx opengenes-mcp server --port 8000

SSE模式(服务器发送事件)

# 在SSE模式下运行服务器
uvx opengenes-mcp sse
</details>

在使用uvx遇到问题时,通常可以通过清理uv缓存来解决:

uv cache clean

HTTP模式将启动一个Web服务器,您可以在http://localhost:3001/mcp(文档位于http://localhost:3001/docs)访问它。STDIO模式设计用于通过标准输入/输出通信的MCP客户端,而SSE模式使用服务器发送事件进行实时通信。

注意:目前我们没有Swagger/OpenAPI接口,因此直接在浏览器中访问服务器不会显示太多有用信息。要探索可用工具和功能,您应该使用MCP Inspector(见下文)或通过MCP客户端连接以查看可用工具。

配置您的AI客户端(Anthropic Claude Desktop, Cursor, Windsurf等)

快速配置示例

这里可以直接复制到您的Claude Desktop或Cursor MCP配置中:

{
  "mcpServers": {
    "opengenes-mcp": {
      "command": "uvx",
      "args": ["opengenes-mcp"],
      "env": {
        "MCP_TRANSPORT": "stdio"
      }
    }
  }
}

替代方案:使用预配置文件

我们也提供了针对不同使用场景的预配置JSON文件:

  • 对于STDIO模式(推荐):使用mcp-config-stdio.json
  • 对于HTTP模式:使用mcp-config.json
  • 对于本地开发:使用mcp-config-stdio-debug.json

配置视频教程

为了直观地了解如何配置MCP服务器与AI客户端,查看我们的配置教程视频(针对姊妹MCP服务器biothings-mcp)。配置原则对于OpenGenes MCP服务器完全相同——只需使用上面提供的适当JSON配置文件。

检查OpenGenes MCP服务器

<details> <summary>使用MCP Inspector探索服务器功能</summary>

如果您想检查MCP服务器提供的方法,可以使用npx(您可能需要安装nodejs和npm):

对于使用uvx的STDIO模式:

npx @modelcontextprotocol/inspector --config mcp-config-stdio.json --server opengenes-mcp

对于HTTP模式(确保服务器已运行):

npx @modelcontextprotocol/inspector --config mcp-config.json --server opengenes-mcp

对于本地开发:

npx @modelcontextprotocol/inspector --config mcp-config-stdio-debug.json --server opengenes-mcp

您也可以手动运行Inspector并通过界面配置它:

npx @modelcontextprotocol/inspector

之后,您可以在http://127.0.0.1:6274(注意,如果多次运行Inspector,端口可能会改变)使用MCP Inspector来探索工具和资源。

</details>

与AI系统的集成

只需将您的AI客户端(如Cursor、Windsurf、ClaudeDesktop、带有Copilot的VS Code或其他)指向从仓库提供的适当配置文件。

仓库设置

# 克隆仓库
git clone https://github.com/longevity-genie/opengenes-mcp.git
cd opengenes-mcp
uv sync

运行MCP服务器

如果您已经克隆了仓库,可以使用uv运行服务器:

# 本地启动MCP服务器(HTTP模式)
uv run server

# 或启动在STDIO模式
uv run stdio

# 或启动在SSE模式
uv run sse

数据库模式

<details> <summary>详细的模式信息</summary>

主要表格

  • lifespan_change(47列):跨模式生物的实验寿命数据及干预详情
  • gene_criteria(2列):按衰老标准分类的基因(12个不同类别)
  • gene_hallmarks(2列):与基因相关的衰老标志
  • longevity_associations(11列):来自人类研究的人群遗传学长寿数据

关键字段

  • HGNC:基因符号(所有表格的主要标识符)
  • model_organism:研究生物(小鼠、C. elegans、果蝇等)
  • effect_on_lifespan:寿命变化方向(增加/减少/无变化)
  • intervention_method:基因干预方法(敲除、过表达等)
  • criteria:与衰老相关的基因分类(12个类别)
  • hallmarks of aging:与基因相关的生物学衰老过程
</details>

示例查询

<details> <summary>常见研究问题的样本SQL查询</summary>
-- 获取寿命实验最多的前10个基因
SELECT HGNC, COUNT(*) as experiment_count 
FROM lifespan_change 
WHERE HGNC IS NOT NULL 
GROUP BY HGNC 
ORDER BY experiment_count DESC 
LIMIT 10;

-- 查找延长小鼠寿命的基因
SELECT DISTINCT HGNC, effect_on_lifespan 
FROM lifespan_change 
WHERE model_organism = 'mouse' 
AND effect_on_lifespan = 'increases lifespan' 
AND HGNC IS NOT NULL;

-- 获取与基因相关的衰老标志
SELECT HGNC, "hallmarks of aging" 
FROM gene_hallmarks 
WHERE "hallmarks of aging" LIKE '%mitochondrial%';

-- 根据种族查找长寿关联
SELECT HGNC, "polymorphism type", "nucleotide substitution", ethnicity 
FROM longevity_associations 
WHERE ethnicity LIKE '%Italian%';

-- 查找既有寿命效应又有长寿关联的基因
SELECT DISTINCT lc.HGNC 
FROM lifespan_change lc 
INNER JOIN longevity_associations la ON lc.HGNC = la.HGNC 
WHERE lc.HGNC IS NOT NULL;
</details>

安全特性

  • 只读访问:仅允许SELECT查询
  • 输入验证:阻止INSERT、UPDATE、DELETE、DROP、CREATE、ALTER、TRUNCATE操作
  • 错误处理:具有详细信息的综合错误处理

测试与验证

MCP服务器提供了全面的测试,包括LLM作为裁判的测试,评估复杂查询的质量响应。然而,默认情况下在CI中禁用了基于LLM的测试以节省成本。

LLM代理测试环境设置

如果您想运行使用Gemini模型的MCP函数的LLM代理测试,您需要在项目根目录创建一个.env文件,并添加您的Gemini API密钥:

# 在项目根目录创建一个.env文件
echo "GEMINI_API_KEY=your-gemini-api-key-here" > .env

注意.env文件和Gemini API密钥仅在运行LLM代理测试时需要。所有其他测试和基本MCP服务器功能无需任何API密钥即可工作。

运行测试

运行MCP服务器的测试:

uv run pytest -vvv -s

您还可以运行手动测试:

uv run python test/manual_test_questions.py

您可以使用MCP Inspector与本地构建的MCP服务器相同的方式使用uvx。

注意:使用MCP Inspector是可选的。大多数MCP客户端(如Cursor、Windsurf等)一旦配置好就会自动显示此服务器提供的工具。然而,Inspector可用于详细测试和探索。

如果您选择通过npx使用Inspector,请确保已安装Node.js和npm。建议使用nvm(Node Version Manager)来管理Node.js版本。

示例问题,MCP可以帮助回答的问题

<details> <summary>您可以使用此MCP服务器探索的研究问题</summary>
  • 哪些基因干预最能延长小鼠的寿命?
  • 哪些敲低最能延长模型动物的寿命?
  • GHR敲除小鼠中哪些过程得到了改善?
  • 哪种基因干预导致果蝇寿命最大增长?
  • 小鼠过度表达VEGFA后寿命增加了多少?
  • 是否存在特定于肝脏的干预措施可以延长小鼠寿命?
  • 哪种基因-长寿关联由最多的研究证实?
  • FOXO3中的哪些多态性与人类长寿相关?
  • 在哪些种族群体中显示出APOE基因与长寿的关联?
  • INS基因多态性是否与长寿相关?
  • 哪些基因与转录改变相关?
  • KL基因相关的标志有哪些?
  • 有多少基因与人类长寿相关?
  • 对IGF1R基因进行了哪些类型的研究所?
  • 您知道PTEN与衰老之间有何证据?
  • 哪些基因与长寿和老年人表达改变相关?
  • 人类ACE2基因的表达是否随年龄改变?
  • 需要下调哪些基因才能延长蠕虫的寿命?
</details>

贡献

我们欢迎社区贡献!🎉 不论您是研究人员、开发者还是对衰老和长寿研究感兴趣的爱好者,都有许多方式可以参与进来:

我们特别鼓励您尝试我们的MCP服务器并分享您的反馈! 您使用服务器的经验、遇到的问题以及改进建议对于整个研究社区来说都极其宝贵。

贡献方式

  • 🐛 报告错误:发现一个问题?请打开一个GitHub问题并提供详细信息
  • 💡 功能请求:有新的功能想法吗?我们很乐意听到它们!
  • 📝 文档:帮助改进我们的文档、示例或教程
  • 🧪 测试:添加测试案例,尤其是边缘案例或新查询模式
  • 🔍 数据质量:帮助识别并报告数据不一致或提出改进意见
  • 🚀 性能:优化查询、改进缓存或增强服务器性能
  • 🌐 集成:为新的MCP客户端或AI系统创建示例
  • 🎥 教程和视频:创建教程、视频指南或教育内容,展示如何使用MCP服务器
  • 📖 用户故事:分享您使用我们MCP服务器的研究工作流程和成功故事
  • 🤝 社区推广:帮助我们在生物信息学社区推广MCP采用

教程、视频和用户故事对我们尤其有价值! 我们正在努力推动生物信息学社区向AI采用转变,研究人员如何使用我们的MCP服务器(这个和其他我们开发的服务器)的实际例子有助于展示实际益处并鼓励更广泛的采用。

开始

  1. 分叉仓库
  2. 创建功能分支(git checkout -b feature/amazing-feature
  3. 修改并添加测试
  4. 运行测试套件(uv run pytest
  5. 提交更改(git commit -m 'Add amazing feature'
  6. 推送到您的分支(git push origin feature/amazing-feature
  7. 打开拉取请求

开发指南

  • 遵循现有的代码风格(我们使用black进行格式化)
  • 为新功能添加测试
  • 根据需要更新文档
  • 保持提交专注并编写清晰的提交消息

问题或想法?

不要犹豫,打开一个讨论问题!我们友好且总是乐于帮助新手开始。您的贡献有助于推进开放科学和长寿研究。🧬✨

已知问题

数据库覆盖

目前,此MCP服务器仅使用完整的OpenGenes数据库的一个子集。完整的OpenGenes数据库包含额外