# Genome MCP
🧬 智能基因组数据服务器 - 通过MCP协议提供高质量的基因信息查询、同源基因分析和进化研究功能。
[](https://pypi.org/project/genome-mcp/)
[](https://pypi.org/project/genome-mcp/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/your-repo/genome-mcp)
## 🚀 核心特性
- **🧬 基因信息查询**: 基于NCBI Gene数据库的准确基因信息
- **🔄 同源基因分析**: 基于Ensembl API的跨物种同源基因查询(253+ TP53同源基因)
- **🧬 进化分析**: 系统发育关系构建和保守性分析
- **🔍 语义搜索**: 理解查询意图的智能搜索功能
- **📊 批量处理**: 优化的并发查询,支持大规模数据分析
- **🌐 多传输模式**: 支持STDIO、HTTP、SSE传输协议
- **⚡ 异步架构**: 高性能异步处理架构
- **🔬 科学可靠**: 基于权威数据库,无模拟数据,完全科学可信
## 安装
### 🚀 推荐方式:使用 uv
本项目强烈推荐使用 **uv** - 现代化的Python包管理器,提供极快的安装速度和更好的依赖管理。
```bash
# 使用uv安装(推荐)
uv add genome-mcp
# 或使用uvx直接运行
uvx genome-mcp
```
### 传统方式:使用 pip
```bash
pip install genome-mcp
```
> **💡 为什么推荐uv?**
> - 🚀 **10倍安装速度**:比pip快10倍的依赖解析和安装
> - 🔒 **依赖一致性**:可靠的依赖锁定,避免版本冲突
> - ⚡ **零配置缓存**:智能缓存系统,重复安装近乎瞬时
> - 🌐 **现代化工具链**:专为现代Python开发设计的完整工具生态系统
## 🛠️ MCP 接入配置
### Claude Desktop
编辑配置文件:
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
推荐使用 uvx 运行:
```json
{
"mcpServers": {
"genome-mcp": {
"command": "uvx",
"args": ["genome-mcp"],
"env": {}
}
}
}
```
或使用传统方式:
```json
{
"mcpServers": {
"genome-mcp": {
"command": "python",
"args": ["-m", "genome_mcp"],
"env": {}
}
}
}
```
或使用 uv run:
```json
{
"mcpServers": {
"genome-mcp": {
"command": "uv",
"args": ["run", "-m", "genome_mcp"],
"env": {}
}
}
}
```
### Continue.dev
在 VS Code 的 Continue.dev 扩展配置中:
```json
{
"mcpServers": {
"genome-mcp": {
"command": "uvx",
"args": ["genome-mcp"]
}
}
}
```
### Cursor (VS Code 扩展)
在 Cursor 设置中添加:
```json
{
"mcpServers": {
"genome-mcp": {
"command": "uvx",
"args": ["genome-mcp"],
"env": {
"GENOME_MCP_LOG_LEVEL": "info"
}
}
}
}
```
### Cline (Claude for VS Code)
在 Cline 设置文件中:
```json
{
"mcpServers": {
"genome-mcp": {
"command": "uvx",
"args": ["genome-mcp"],
"timeout": 30000
}
}
}
```
### 其他支持 MCP 的客户端
1. **Windsurf**: 使用与 Claude Desktop 相同的配置格式
2. **OpenHands**: 在 config.json 中添加服务器配置
3. **Custom MCP Client**: 参考下面的 Python 示例
### 自定义 MCP 客户端
使用 stdio 传输:
```python
import subprocess
import json
# 启动 MCP 服务器
process = subprocess.Popen(
["python", "-m", "genome_mcp"],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
text=True
)
# 发送初始化消息
init_message = {
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {"name": "test-client", "version": "1.0.0"}
}
}
process.stdin.write(json.dumps(init_message) + "\n")
response = process.stdout.readline()
print("Server response:", response)
```
## 🔧 API 功能
### 可用工具
1. **get_data** - 智能数据获取
- 支持基因符号、ID、区域搜索、同源基因查询
- 自动类型识别和查询优化
- 批量查询支持
2. **advanced_query** - 高级批量查询
- 复杂查询条件组合
- 批量处理优化
- 自定义输出格式
3. **smart_search** - 语义搜索
- 自然语言查询理解
- 智能结果排序
- 上下文感知搜索
4. **kegg_pathway_enrichment_tool** - KEGG通路富集分析 🆕
- 基因列表在KEGG通路中的富集分析
- 超几何分布检验计算统计显著性
- FDR多重检验校正
- 支持人类、小鼠、大鼠等多种模式生物
### 使用示例
```python
import asyncio
from genome_mcp import get_data, advanced_query, smart_search
async def main():
# 获取基因信息
gene_info = await get_data("TP53")
print("Gene info:", gene_info)
# 区域搜索
region_data = await get_data("chr17:7565097-7590856", query_type="region")
print("Region data:", region_data)
# 批量查询
batch_results = await get_data(["TP53", "BRCA1", "EGFR"], query_type="gene")
print("Batch results:", batch_results)
# 语义搜索
search_results = await smart_search("tumor suppressor genes involved in cancer")
print("Search results:", search_results)
# 高级查询
advanced_results = await advanced_query(
query="cancer genes",
query_type="search",
database="gene",
max_results=20
)
print("Advanced results:", advanced_results)
# KEGG通路富集分析
kegg_results = await kegg_pathway_enrichment_tool(
gene_list=["7157", "672", "675"], # TP53, BRCA1, BRCA2的Entrez ID
organism="hsa",
pvalue_threshold=0.05,
min_gene_count=2
)
print("KEGG enrichment results:", kegg_results)
asyncio.run(main())
```
## 📋 JSON 响应格式
### get_data 响应示例
```json
{
"success": true,
"data": {
"gene_info": {
"uid": "7157",
"name": "TP53",
"description": "tumor protein p53",
"status": "Gene",
"chromosome": "17",
"maplocation": "17p13.1",
"genomicinfo": [
{
"chraccver": "GRCh38.p13",
"chrstart": 7565097,
"chrstop": 7590856
}
]
}
},
"query_info": {
"query": "TP53",
"query_type": "gene",
"database": "gene"
}
}
```
### smart_search 响应示例
```json
{
"success": true,
"data": {
"results": [
{
"uid": "7157",
"name": "TP53",
"description": "tumor protein p53"
}
],
"total_count": 1,
"query_understanding": {
"intent": "gene_search",
"key_terms": ["tumor", "suppressor", "genes", "cancer"]
}
}
}
```
### kegg_pathway_enrichment_tool 响应示例
```json
{
"query_genes": ["7157", "672", "675"],
"organism": "hsa",
"total_pathways_found": 51,
"significant_pathways": 15,
"all_pathways": [
{
"pathway_id": "hsa01522",
"pathway_name": "Path: hsa01522",
"genes": ["7157"],
"gene_count": 1,
"pvalue": 0.0001,
"fdr": 0.0051,
"fold_enrichment": 6666.67
}
],
"query_info": {
"analysis_date": "2025-10-24",
"method": "KEGG Pathway Enrichment",
"statistical_test": "Hypergeometric Test",
"fdr_correction": "Benjamini-Hochberg"
}
}
```
## 💻 命令行使用
```bash
# 启动 MCP 服务器 (stdio 模式)
python -m genome_mcp
# 或使用 uv
uv run -m genome_mcp
# HTTP 服务器模式
python -m genome_mcp --port 8080
# SSE 服务器模式
python -m genome_mcp --mode sse --port 8080
# 查看帮助
python -m genome_mcp --help
# 测试示例
python examples/mcp-client-example.py
```
传输模式:
- **stdio**: 标准输入输出,用于MCP客户端集成
- **http**: HTTP API服务器,用于Web集成
- **sse**: Server-Sent Events,用于实时数据流
## 🔍 MCP 协议调试
### 初始化请求
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {
"roots": {"listChanged": true}
},
"clientInfo": {"name": "debug-client", "version": "1.0.0"}
}
}
```
### 服务器响应
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2024-11-05",
"capabilities": {
"tools": {"listChanged": false}
},
"serverInfo": {
"name": "Genome MCP",
"version": "0.2.0"
}
}
}
```
### 工具调用示例
```json
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "get_data",
"arguments": {
"query": "TP53",
"query_type": "auto"
}
}
}
```
## 📁 配置文件
项目中包含以下配置文件模板:
- `examples/claude-desktop-config.json` - Claude Desktop 配置
- `mcp-config.json` - 通用 MCP 配置
- `examples/mcp-client-example.py` - 完整的 Python MCP 客户端示例
- `examples/usage_examples.py` - API 使用示例
- `examples/fastmcp_example.py` - FastMCP 框架示例
## 🔧 故障排除
### 常见问题
1. **导入错误**: 确保已安装依赖
```bash
pip install aiohttp fastmcp
```
2. **网络错误**: 检查到 NCBI 的网络连接
```bash
curl -I "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/"
```
3. **MCP 协议错误**: 确保使用正确的 JSON-RPC 2.0 格式
- 消息必须以换行符结尾
- 必须包含 `jsonrpc: "2.0"` 字段
4. **权限错误**: 确保有权限执行 Python 脚本
### 调试模式
启用详细日志:
```bash
GENOME_MCP_LOG_LEVEL=debug python -m genome_mcp
```
测试API功能:
```bash
python examples/mcp-client-example.py
```
### 性能优化
- 使用批量查询减少API调用
- 启用缓存机制
- 调整超时设置
- 使用适当的传输模式
## 📚 依赖
- `aiohttp>=3.8.0` - HTTP 客户端
- `fastmcp>=2.0.0` - MCP 协议支持
- Python >= 3.10
## 🏗️ 开发
```bash
git clone https://github.com/gqy20/genome-mcp
cd genome-mcp
pip install -e ".[dev]"
make test
make lint
```
### 开发命令
```bash
make install # 安装开发依赖
make format # 格式化代码
make lint # 代码质量检查
make test # 运行测试
make check # 完整检查
make build # 构建包
```
## 📄 许可证
MIT License - 详见 [LICENSE](LICENSE) 文件
## 🤝 贡献
欢迎提交 Issue 和 Pull Request!
## 📞 支持
- 📖 [文档](https://github.com/gqy20/genome-mcp#readme)
- 🐛 [问题反馈](https://github.com/gqy20/genome-mcp/issues)
- 💬 [讨论](https://github.com/gqy20/genome-mcp/discussions)
---
**Genome MCP** - 让基因组数据访问更简单、更智能!
Raw data
{
"_id": null,
"home_page": null,
"name": "genome-mcp",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "gqy20 <qingyu_ge@foxmail.com>",
"keywords": "mcp, genomics, bioinformatics, ncbi, gene",
"author": null,
"author_email": "gqy20 <qingyu_ge@foxmail.com>",
"download_url": "https://files.pythonhosted.org/packages/19/ca/9909167f8306f21217324037d70b62afdc7dbbf7ffe4a4bd0b14fdebc201/genome_mcp-0.2.4.tar.gz",
"platform": null,
"description": "# Genome MCP\n\n\ud83e\uddec \u667a\u80fd\u57fa\u56e0\u7ec4\u6570\u636e\u670d\u52a1\u5668 - \u901a\u8fc7MCP\u534f\u8bae\u63d0\u4f9b\u9ad8\u8d28\u91cf\u7684\u57fa\u56e0\u4fe1\u606f\u67e5\u8be2\u3001\u540c\u6e90\u57fa\u56e0\u5206\u6790\u548c\u8fdb\u5316\u7814\u7a76\u529f\u80fd\u3002\n\n[](https://pypi.org/project/genome-mcp/)\n[](https://pypi.org/project/genome-mcp/)\n[](https://opensource.org/licenses/MIT)\n[](https://github.com/your-repo/genome-mcp)\n\n## \ud83d\ude80 \u6838\u5fc3\u7279\u6027\n\n- **\ud83e\uddec \u57fa\u56e0\u4fe1\u606f\u67e5\u8be2**: \u57fa\u4e8eNCBI Gene\u6570\u636e\u5e93\u7684\u51c6\u786e\u57fa\u56e0\u4fe1\u606f\n- **\ud83d\udd04 \u540c\u6e90\u57fa\u56e0\u5206\u6790**: \u57fa\u4e8eEnsembl API\u7684\u8de8\u7269\u79cd\u540c\u6e90\u57fa\u56e0\u67e5\u8be2\uff08253+ TP53\u540c\u6e90\u57fa\u56e0\uff09\n- **\ud83e\uddec \u8fdb\u5316\u5206\u6790**: \u7cfb\u7edf\u53d1\u80b2\u5173\u7cfb\u6784\u5efa\u548c\u4fdd\u5b88\u6027\u5206\u6790\n- **\ud83d\udd0d \u8bed\u4e49\u641c\u7d22**: \u7406\u89e3\u67e5\u8be2\u610f\u56fe\u7684\u667a\u80fd\u641c\u7d22\u529f\u80fd\n- **\ud83d\udcca \u6279\u91cf\u5904\u7406**: \u4f18\u5316\u7684\u5e76\u53d1\u67e5\u8be2\uff0c\u652f\u6301\u5927\u89c4\u6a21\u6570\u636e\u5206\u6790\n- **\ud83c\udf10 \u591a\u4f20\u8f93\u6a21\u5f0f**: \u652f\u6301STDIO\u3001HTTP\u3001SSE\u4f20\u8f93\u534f\u8bae\n- **\u26a1 \u5f02\u6b65\u67b6\u6784**: \u9ad8\u6027\u80fd\u5f02\u6b65\u5904\u7406\u67b6\u6784\n- **\ud83d\udd2c \u79d1\u5b66\u53ef\u9760**: \u57fa\u4e8e\u6743\u5a01\u6570\u636e\u5e93\uff0c\u65e0\u6a21\u62df\u6570\u636e\uff0c\u5b8c\u5168\u79d1\u5b66\u53ef\u4fe1\n\n## \u5b89\u88c5\n\n### \ud83d\ude80 \u63a8\u8350\u65b9\u5f0f\uff1a\u4f7f\u7528 uv\n\n\u672c\u9879\u76ee\u5f3a\u70c8\u63a8\u8350\u4f7f\u7528 **uv** - \u73b0\u4ee3\u5316\u7684Python\u5305\u7ba1\u7406\u5668\uff0c\u63d0\u4f9b\u6781\u5feb\u7684\u5b89\u88c5\u901f\u5ea6\u548c\u66f4\u597d\u7684\u4f9d\u8d56\u7ba1\u7406\u3002\n\n```bash\n# \u4f7f\u7528uv\u5b89\u88c5\uff08\u63a8\u8350\uff09\nuv add genome-mcp\n\n# \u6216\u4f7f\u7528uvx\u76f4\u63a5\u8fd0\u884c\nuvx genome-mcp\n```\n\n### \u4f20\u7edf\u65b9\u5f0f\uff1a\u4f7f\u7528 pip\n\n```bash\npip install genome-mcp\n```\n\n> **\ud83d\udca1 \u4e3a\u4ec0\u4e48\u63a8\u8350uv\uff1f**\n> - \ud83d\ude80 **10\u500d\u5b89\u88c5\u901f\u5ea6**\uff1a\u6bd4pip\u5feb10\u500d\u7684\u4f9d\u8d56\u89e3\u6790\u548c\u5b89\u88c5\n> - \ud83d\udd12 **\u4f9d\u8d56\u4e00\u81f4\u6027**\uff1a\u53ef\u9760\u7684\u4f9d\u8d56\u9501\u5b9a\uff0c\u907f\u514d\u7248\u672c\u51b2\u7a81\n> - \u26a1 **\u96f6\u914d\u7f6e\u7f13\u5b58**\uff1a\u667a\u80fd\u7f13\u5b58\u7cfb\u7edf\uff0c\u91cd\u590d\u5b89\u88c5\u8fd1\u4e4e\u77ac\u65f6\n> - \ud83c\udf10 **\u73b0\u4ee3\u5316\u5de5\u5177\u94fe**\uff1a\u4e13\u4e3a\u73b0\u4ee3Python\u5f00\u53d1\u8bbe\u8ba1\u7684\u5b8c\u6574\u5de5\u5177\u751f\u6001\u7cfb\u7edf\n\n## \ud83d\udee0\ufe0f MCP \u63a5\u5165\u914d\u7f6e\n\n### Claude Desktop\n\n\u7f16\u8f91\u914d\u7f6e\u6587\u4ef6\uff1a\n- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- **Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n\u63a8\u8350\u4f7f\u7528 uvx \u8fd0\u884c:\n\n```json\n{\n \"mcpServers\": {\n \"genome-mcp\": {\n \"command\": \"uvx\",\n \"args\": [\"genome-mcp\"],\n \"env\": {}\n }\n }\n}\n```\n\n\u6216\u4f7f\u7528\u4f20\u7edf\u65b9\u5f0f:\n\n```json\n{\n \"mcpServers\": {\n \"genome-mcp\": {\n \"command\": \"python\",\n \"args\": [\"-m\", \"genome_mcp\"],\n \"env\": {}\n }\n }\n}\n```\n\n\u6216\u4f7f\u7528 uv run:\n\n```json\n{\n \"mcpServers\": {\n \"genome-mcp\": {\n \"command\": \"uv\",\n \"args\": [\"run\", \"-m\", \"genome_mcp\"],\n \"env\": {}\n }\n }\n}\n```\n\n### Continue.dev\n\n\u5728 VS Code \u7684 Continue.dev \u6269\u5c55\u914d\u7f6e\u4e2d:\n\n```json\n{\n \"mcpServers\": {\n \"genome-mcp\": {\n \"command\": \"uvx\",\n \"args\": [\"genome-mcp\"]\n }\n }\n}\n```\n\n### Cursor (VS Code \u6269\u5c55)\n\n\u5728 Cursor \u8bbe\u7f6e\u4e2d\u6dfb\u52a0:\n\n```json\n{\n \"mcpServers\": {\n \"genome-mcp\": {\n \"command\": \"uvx\",\n \"args\": [\"genome-mcp\"],\n \"env\": {\n \"GENOME_MCP_LOG_LEVEL\": \"info\"\n }\n }\n }\n}\n```\n\n### Cline (Claude for VS Code)\n\n\u5728 Cline \u8bbe\u7f6e\u6587\u4ef6\u4e2d:\n\n```json\n{\n \"mcpServers\": {\n \"genome-mcp\": {\n \"command\": \"uvx\",\n \"args\": [\"genome-mcp\"],\n \"timeout\": 30000\n }\n }\n}\n```\n\n### \u5176\u4ed6\u652f\u6301 MCP \u7684\u5ba2\u6237\u7aef\n\n1. **Windsurf**: \u4f7f\u7528\u4e0e Claude Desktop \u76f8\u540c\u7684\u914d\u7f6e\u683c\u5f0f\n2. **OpenHands**: \u5728 config.json \u4e2d\u6dfb\u52a0\u670d\u52a1\u5668\u914d\u7f6e\n3. **Custom MCP Client**: \u53c2\u8003\u4e0b\u9762\u7684 Python \u793a\u4f8b\n\n### \u81ea\u5b9a\u4e49 MCP \u5ba2\u6237\u7aef\n\n\u4f7f\u7528 stdio \u4f20\u8f93:\n\n```python\nimport subprocess\nimport json\n\n# \u542f\u52a8 MCP \u670d\u52a1\u5668\nprocess = subprocess.Popen(\n [\"python\", \"-m\", \"genome_mcp\"],\n stdin=subprocess.PIPE,\n stdout=subprocess.PIPE,\n text=True\n)\n\n# \u53d1\u9001\u521d\u59cb\u5316\u6d88\u606f\ninit_message = {\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"initialize\",\n \"params\": {\n \"protocolVersion\": \"2024-11-05\",\n \"capabilities\": {},\n \"clientInfo\": {\"name\": \"test-client\", \"version\": \"1.0.0\"}\n }\n}\n\nprocess.stdin.write(json.dumps(init_message) + \"\\n\")\nresponse = process.stdout.readline()\nprint(\"Server response:\", response)\n```\n\n## \ud83d\udd27 API \u529f\u80fd\n\n### \u53ef\u7528\u5de5\u5177\n\n1. **get_data** - \u667a\u80fd\u6570\u636e\u83b7\u53d6\n - \u652f\u6301\u57fa\u56e0\u7b26\u53f7\u3001ID\u3001\u533a\u57df\u641c\u7d22\u3001\u540c\u6e90\u57fa\u56e0\u67e5\u8be2\n - \u81ea\u52a8\u7c7b\u578b\u8bc6\u522b\u548c\u67e5\u8be2\u4f18\u5316\n - \u6279\u91cf\u67e5\u8be2\u652f\u6301\n\n2. **advanced_query** - \u9ad8\u7ea7\u6279\u91cf\u67e5\u8be2\n - \u590d\u6742\u67e5\u8be2\u6761\u4ef6\u7ec4\u5408\n - \u6279\u91cf\u5904\u7406\u4f18\u5316\n - \u81ea\u5b9a\u4e49\u8f93\u51fa\u683c\u5f0f\n\n3. **smart_search** - \u8bed\u4e49\u641c\u7d22\n - \u81ea\u7136\u8bed\u8a00\u67e5\u8be2\u7406\u89e3\n - \u667a\u80fd\u7ed3\u679c\u6392\u5e8f\n - \u4e0a\u4e0b\u6587\u611f\u77e5\u641c\u7d22\n\n4. **kegg_pathway_enrichment_tool** - KEGG\u901a\u8def\u5bcc\u96c6\u5206\u6790 \ud83c\udd95\n - \u57fa\u56e0\u5217\u8868\u5728KEGG\u901a\u8def\u4e2d\u7684\u5bcc\u96c6\u5206\u6790\n - \u8d85\u51e0\u4f55\u5206\u5e03\u68c0\u9a8c\u8ba1\u7b97\u7edf\u8ba1\u663e\u8457\u6027\n - FDR\u591a\u91cd\u68c0\u9a8c\u6821\u6b63\n - \u652f\u6301\u4eba\u7c7b\u3001\u5c0f\u9f20\u3001\u5927\u9f20\u7b49\u591a\u79cd\u6a21\u5f0f\u751f\u7269\n\n### \u4f7f\u7528\u793a\u4f8b\n\n```python\nimport asyncio\nfrom genome_mcp import get_data, advanced_query, smart_search\n\nasync def main():\n # \u83b7\u53d6\u57fa\u56e0\u4fe1\u606f\n gene_info = await get_data(\"TP53\")\n print(\"Gene info:\", gene_info)\n\n # \u533a\u57df\u641c\u7d22\n region_data = await get_data(\"chr17:7565097-7590856\", query_type=\"region\")\n print(\"Region data:\", region_data)\n\n # \u6279\u91cf\u67e5\u8be2\n batch_results = await get_data([\"TP53\", \"BRCA1\", \"EGFR\"], query_type=\"gene\")\n print(\"Batch results:\", batch_results)\n\n # \u8bed\u4e49\u641c\u7d22\n search_results = await smart_search(\"tumor suppressor genes involved in cancer\")\n print(\"Search results:\", search_results)\n\n # \u9ad8\u7ea7\u67e5\u8be2\n advanced_results = await advanced_query(\n query=\"cancer genes\",\n query_type=\"search\",\n database=\"gene\",\n max_results=20\n )\n print(\"Advanced results:\", advanced_results)\n\n # KEGG\u901a\u8def\u5bcc\u96c6\u5206\u6790\n kegg_results = await kegg_pathway_enrichment_tool(\n gene_list=[\"7157\", \"672\", \"675\"], # TP53, BRCA1, BRCA2\u7684Entrez ID\n organism=\"hsa\",\n pvalue_threshold=0.05,\n min_gene_count=2\n )\n print(\"KEGG enrichment results:\", kegg_results)\n\nasyncio.run(main())\n```\n\n## \ud83d\udccb JSON \u54cd\u5e94\u683c\u5f0f\n\n### get_data \u54cd\u5e94\u793a\u4f8b\n\n```json\n{\n \"success\": true,\n \"data\": {\n \"gene_info\": {\n \"uid\": \"7157\",\n \"name\": \"TP53\",\n \"description\": \"tumor protein p53\",\n \"status\": \"Gene\",\n \"chromosome\": \"17\",\n \"maplocation\": \"17p13.1\",\n \"genomicinfo\": [\n {\n \"chraccver\": \"GRCh38.p13\",\n \"chrstart\": 7565097,\n \"chrstop\": 7590856\n }\n ]\n }\n },\n \"query_info\": {\n \"query\": \"TP53\",\n \"query_type\": \"gene\",\n \"database\": \"gene\"\n }\n}\n```\n\n### smart_search \u54cd\u5e94\u793a\u4f8b\n\n```json\n{\n \"success\": true,\n \"data\": {\n \"results\": [\n {\n \"uid\": \"7157\",\n \"name\": \"TP53\",\n \"description\": \"tumor protein p53\"\n }\n ],\n \"total_count\": 1,\n \"query_understanding\": {\n \"intent\": \"gene_search\",\n \"key_terms\": [\"tumor\", \"suppressor\", \"genes\", \"cancer\"]\n }\n }\n}\n```\n\n### kegg_pathway_enrichment_tool \u54cd\u5e94\u793a\u4f8b\n\n```json\n{\n \"query_genes\": [\"7157\", \"672\", \"675\"],\n \"organism\": \"hsa\",\n \"total_pathways_found\": 51,\n \"significant_pathways\": 15,\n \"all_pathways\": [\n {\n \"pathway_id\": \"hsa01522\",\n \"pathway_name\": \"Path: hsa01522\",\n \"genes\": [\"7157\"],\n \"gene_count\": 1,\n \"pvalue\": 0.0001,\n \"fdr\": 0.0051,\n \"fold_enrichment\": 6666.67\n }\n ],\n \"query_info\": {\n \"analysis_date\": \"2025-10-24\",\n \"method\": \"KEGG Pathway Enrichment\",\n \"statistical_test\": \"Hypergeometric Test\",\n \"fdr_correction\": \"Benjamini-Hochberg\"\n }\n}\n```\n\n## \ud83d\udcbb \u547d\u4ee4\u884c\u4f7f\u7528\n\n```bash\n# \u542f\u52a8 MCP \u670d\u52a1\u5668 (stdio \u6a21\u5f0f)\npython -m genome_mcp\n\n# \u6216\u4f7f\u7528 uv\nuv run -m genome_mcp\n\n# HTTP \u670d\u52a1\u5668\u6a21\u5f0f\npython -m genome_mcp --port 8080\n\n# SSE \u670d\u52a1\u5668\u6a21\u5f0f\npython -m genome_mcp --mode sse --port 8080\n\n# \u67e5\u770b\u5e2e\u52a9\npython -m genome_mcp --help\n\n# \u6d4b\u8bd5\u793a\u4f8b\npython examples/mcp-client-example.py\n```\n\n\u4f20\u8f93\u6a21\u5f0f\uff1a\n- **stdio**: \u6807\u51c6\u8f93\u5165\u8f93\u51fa\uff0c\u7528\u4e8eMCP\u5ba2\u6237\u7aef\u96c6\u6210\n- **http**: HTTP API\u670d\u52a1\u5668\uff0c\u7528\u4e8eWeb\u96c6\u6210\n- **sse**: Server-Sent Events\uff0c\u7528\u4e8e\u5b9e\u65f6\u6570\u636e\u6d41\n\n## \ud83d\udd0d MCP \u534f\u8bae\u8c03\u8bd5\n\n### \u521d\u59cb\u5316\u8bf7\u6c42\n\n```json\n{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"initialize\",\n \"params\": {\n \"protocolVersion\": \"2024-11-05\",\n \"capabilities\": {\n \"roots\": {\"listChanged\": true}\n },\n \"clientInfo\": {\"name\": \"debug-client\", \"version\": \"1.0.0\"}\n }\n}\n```\n\n### \u670d\u52a1\u5668\u54cd\u5e94\n\n```json\n{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"result\": {\n \"protocolVersion\": \"2024-11-05\",\n \"capabilities\": {\n \"tools\": {\"listChanged\": false}\n },\n \"serverInfo\": {\n \"name\": \"Genome MCP\",\n \"version\": \"0.2.0\"\n }\n }\n}\n```\n\n### \u5de5\u5177\u8c03\u7528\u793a\u4f8b\n\n```json\n{\n \"jsonrpc\": \"2.0\",\n \"id\": 3,\n \"method\": \"tools/call\",\n \"params\": {\n \"name\": \"get_data\",\n \"arguments\": {\n \"query\": \"TP53\",\n \"query_type\": \"auto\"\n }\n }\n}\n```\n\n## \ud83d\udcc1 \u914d\u7f6e\u6587\u4ef6\n\n\u9879\u76ee\u4e2d\u5305\u542b\u4ee5\u4e0b\u914d\u7f6e\u6587\u4ef6\u6a21\u677f\uff1a\n\n- `examples/claude-desktop-config.json` - Claude Desktop \u914d\u7f6e\n- `mcp-config.json` - \u901a\u7528 MCP \u914d\u7f6e\n- `examples/mcp-client-example.py` - \u5b8c\u6574\u7684 Python MCP \u5ba2\u6237\u7aef\u793a\u4f8b\n- `examples/usage_examples.py` - API \u4f7f\u7528\u793a\u4f8b\n- `examples/fastmcp_example.py` - FastMCP \u6846\u67b6\u793a\u4f8b\n\n## \ud83d\udd27 \u6545\u969c\u6392\u9664\n\n### \u5e38\u89c1\u95ee\u9898\n\n1. **\u5bfc\u5165\u9519\u8bef**: \u786e\u4fdd\u5df2\u5b89\u88c5\u4f9d\u8d56\n ```bash\n pip install aiohttp fastmcp\n ```\n\n2. **\u7f51\u7edc\u9519\u8bef**: \u68c0\u67e5\u5230 NCBI \u7684\u7f51\u7edc\u8fde\u63a5\n ```bash\n curl -I \"https://eutils.ncbi.nlm.nih.gov/entrez/eutils/\"\n ```\n\n3. **MCP \u534f\u8bae\u9519\u8bef**: \u786e\u4fdd\u4f7f\u7528\u6b63\u786e\u7684 JSON-RPC 2.0 \u683c\u5f0f\n - \u6d88\u606f\u5fc5\u987b\u4ee5\u6362\u884c\u7b26\u7ed3\u5c3e\n - \u5fc5\u987b\u5305\u542b `jsonrpc: \"2.0\"` \u5b57\u6bb5\n\n4. **\u6743\u9650\u9519\u8bef**: \u786e\u4fdd\u6709\u6743\u9650\u6267\u884c Python \u811a\u672c\n\n### \u8c03\u8bd5\u6a21\u5f0f\n\n\u542f\u7528\u8be6\u7ec6\u65e5\u5fd7:\n```bash\nGENOME_MCP_LOG_LEVEL=debug python -m genome_mcp\n```\n\n\u6d4b\u8bd5API\u529f\u80fd:\n```bash\npython examples/mcp-client-example.py\n```\n\n### \u6027\u80fd\u4f18\u5316\n\n- \u4f7f\u7528\u6279\u91cf\u67e5\u8be2\u51cf\u5c11API\u8c03\u7528\n- \u542f\u7528\u7f13\u5b58\u673a\u5236\n- \u8c03\u6574\u8d85\u65f6\u8bbe\u7f6e\n- \u4f7f\u7528\u9002\u5f53\u7684\u4f20\u8f93\u6a21\u5f0f\n\n## \ud83d\udcda \u4f9d\u8d56\n\n- `aiohttp>=3.8.0` - HTTP \u5ba2\u6237\u7aef\n- `fastmcp>=2.0.0` - MCP \u534f\u8bae\u652f\u6301\n- Python >= 3.10\n\n## \ud83c\udfd7\ufe0f \u5f00\u53d1\n\n```bash\ngit clone https://github.com/gqy20/genome-mcp\ncd genome-mcp\npip install -e \".[dev]\"\nmake test\nmake lint\n```\n\n### \u5f00\u53d1\u547d\u4ee4\n\n```bash\nmake install # \u5b89\u88c5\u5f00\u53d1\u4f9d\u8d56\nmake format # \u683c\u5f0f\u5316\u4ee3\u7801\nmake lint # \u4ee3\u7801\u8d28\u91cf\u68c0\u67e5\nmake test # \u8fd0\u884c\u6d4b\u8bd5\nmake check # \u5b8c\u6574\u68c0\u67e5\nmake build # \u6784\u5efa\u5305\n```\n\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\n\nMIT License - \u8be6\u89c1 [LICENSE](LICENSE) \u6587\u4ef6\n\n## \ud83e\udd1d \u8d21\u732e\n\n\u6b22\u8fce\u63d0\u4ea4 Issue \u548c Pull Request\uff01\n\n## \ud83d\udcde \u652f\u6301\n\n- \ud83d\udcd6 [\u6587\u6863](https://github.com/gqy20/genome-mcp#readme)\n- \ud83d\udc1b [\u95ee\u9898\u53cd\u9988](https://github.com/gqy20/genome-mcp/issues)\n- \ud83d\udcac [\u8ba8\u8bba](https://github.com/gqy20/genome-mcp/discussions)\n\n---\n\n**Genome MCP** - \u8ba9\u57fa\u56e0\u7ec4\u6570\u636e\u8bbf\u95ee\u66f4\u7b80\u5355\u3001\u66f4\u667a\u80fd\uff01\n",
"bugtrack_url": null,
"license": null,
"summary": "Genome MCP server - \u4f18\u5316\u7248\u672c\uff1a\u667a\u80fd\u57fa\u56e0\u7ec4\u6570\u636e\u8bbf\u95ee",
"version": "0.2.4",
"project_urls": {
"Bug Tracker": "https://github.com/gqy20/genome-mcp/issues",
"Documentation": "https://github.com/gqy20/genome-mcp#readme",
"Homepage": "https://github.com/gqy20/genome-mcp",
"Repository": "https://github.com/gqy20/genome-mcp"
},
"split_keywords": [
"mcp",
" genomics",
" bioinformatics",
" ncbi",
" gene"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "49d960e48c8bd4cd7a7114f19e6b7b0dab60754fb9440e8def502bef8743e191",
"md5": "705d5f80c176460ea6231fb027cfbc89",
"sha256": "30a9f6ca6de5dd0968e42633711520abe6f0f9fe9cb737c984ca0492208a3bb2"
},
"downloads": -1,
"filename": "genome_mcp-0.2.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "705d5f80c176460ea6231fb027cfbc89",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 42402,
"upload_time": "2025-10-27T04:13:16",
"upload_time_iso_8601": "2025-10-27T04:13:16.613264Z",
"url": "https://files.pythonhosted.org/packages/49/d9/60e48c8bd4cd7a7114f19e6b7b0dab60754fb9440e8def502bef8743e191/genome_mcp-0.2.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "19ca9909167f8306f21217324037d70b62afdc7dbbf7ffe4a4bd0b14fdebc201",
"md5": "be549e220e43192899fae848f8d56783",
"sha256": "849eeaedccb9dfb2bb97822f24f6a8b8e56bdc13c1aff67f9627e3937867b469"
},
"downloads": -1,
"filename": "genome_mcp-0.2.4.tar.gz",
"has_sig": false,
"md5_digest": "be549e220e43192899fae848f8d56783",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 39603,
"upload_time": "2025-10-27T04:13:18",
"upload_time_iso_8601": "2025-10-27T04:13:18.083232Z",
"url": "https://files.pythonhosted.org/packages/19/ca/9909167f8306f21217324037d70b62afdc7dbbf7ffe4a4bd0b14fdebc201/genome_mcp-0.2.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-27 04:13:18",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "gqy20",
"github_project": "genome-mcp",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "genome-mcp"
}