genome-mcp


Namegenome-mcp JSON
Version 0.2.4 PyPI version JSON
download
home_pageNone
SummaryGenome MCP server - 优化版本:智能基因组数据访问
upload_time2025-10-27 04:13:18
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords mcp genomics bioinformatics ncbi gene
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Genome MCP

🧬 智能基因组数据服务器 - 通过MCP协议提供高质量的基因信息查询、同源基因分析和进化研究功能。

[![PyPI version](https://img.shields.io/pypi/v/genome-mcp.svg)](https://pypi.org/project/genome-mcp/)
[![Python versions](https://img.shields.io/pypi/pyversions/genome-mcp.svg)](https://pypi.org/project/genome-mcp/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Tests](https://img.shields.io/badge/tests-42%2F42-passing-brightgreen.svg)](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[![PyPI version](https://img.shields.io/pypi/v/genome-mcp.svg)](https://pypi.org/project/genome-mcp/)\n[![Python versions](https://img.shields.io/pypi/pyversions/genome-mcp.svg)](https://pypi.org/project/genome-mcp/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Tests](https://img.shields.io/badge/tests-42%2F42-passing-brightgreen.svg)](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"
}
        
Elapsed time: 2.24853s