article
README
🚀 Oh My KEGG MCP
Oh My KEGG MCP 是一个用于访问 KEGG(京都基因与基因组百科全书)数据库的 Model Context Protocol (MCP) 服务器(非官方),它能助力用户高效检索和分析各类生物学数据。
✨ 主要特性
- 丰富的 KEGG 工具:提供 30 个 KEGG 工具,可对路径、基因、化合物、反应、酶、疾病、药物等多种生物学数据进行检索与分析。
- 可流式 HTTP 传输:支持基于 HTTP 的通信方式,适用于 Web 环境。
- LangChain 集成:与 LangChain Agent 完美集成,使大语言模型(LLM)能够充分利用 KEGG 数据。
- Ollama 支持:可与本地 LLM 模型搭配使用。
📦 安装指南
1. 安装必需包
pip install -r requirements.txt
2. 配置环境变量
参考 .env.example 文件创建 .env 文件:
cp .env.example .env
编辑 .env 文件并设置必要的值:
# OpenAI API 密钥(使用 OpenAI 模型时需要)
# 使用 Ollama 时无需设置
OPENAI_API_KEY=your_openai_api_key
# MCP 服务器 URL(客户端使用)
# 若服务器在其他主机/端口运行,需进行修改
KEGG_MCP_SERVER_URL=http://localhost:3000/mcp
# MCP 服务器配置(服务器运行时使用,可选)
# 已有默认值,无需修改
MCP_HOST=localhost
MCP_PORT=3000
MCP_PATH=/mcp
# Ollama 配置(可选)
# 若 Ollama 在其他主机/端口运行,需进行修改
# OLLAMA_HOST=http://localhost:11434
⚠️ 重要提示
- 使用 Ollama 时:无需设置
OPENAI_API_KEY,当前代码默认使用 Ollama 作为模型。- 使用 OpenAI 时:需在
OPENAI_API_KEY中设置实际的 API 密钥,并在langchain_integration.py中使用ChatOpenAI。- 服务器配置:
MCP_HOST、MCP_PORT、MCP_PATH用于服务器运行,已有默认值,无需修改。- Ollama 主机:若 Ollama 在非默认端口(11434)运行,可设置
OLLAMA_HOST。
💻 使用示例
1. 启动服务器
# 使用默认配置启动(localhost:3000/mcp)
python kegg_mcp_server.py
# 或通过环境变量配置启动
MCP_HOST=localhost MCP_PORT=3000 MCP_PATH=/mcp python kegg_mcp_server.py
服务器启动后,会显示如下信息:
Starting KEGG MCP Server on http://localhost:3000/mcp
Transport: Streamable HTTP
2. 启动客户端
# 基本启动(使用可流式 HTTP)
python langchain_integration.py
# 仅进行 Ollama 连接测试
python langchain_integration.py --test
# 使用 stdio(可选,需要单独的 TypeScript 服务器)
# 在 langchain_integration.py 中将 use_http 设置为 False
# 注意:目前仅支持可流式 HTTP 方式
可用工具
数据库信息与统计(2 个)
get_database_info- 查询数据库信息和统计数据list_organisms- 查询所有 KEGG 生物体列表
路径分析(3 个)
search_pathways- 搜索路径get_pathway_info- 获取路径详细信息get_pathway_genes- 获取路径的基因列表
基因分析(2 个)
search_genes- 搜索基因get_gene_info- 获取基因详细信息(可包含序列)
化合物分析(2 个)
search_compounds- 搜索化合物get_compound_info- 获取化合物详细信息
反应与酶分析(4 个)
search_reactions- 搜索反应get_reaction_info- 获取反应详细信息search_enzymes- 搜索酶get_enzyme_info- 获取酶详细信息
疾病与药物分析(5 个)
search_diseases- 搜索疾病get_disease_info- 获取疾病详细信息search_drugs- 搜索药物get_drug_info- 获取药物详细信息get_drug_interactions- 查询药物相互作用
模块与直系同源分析(4 个)
search_modules- 搜索模块get_module_info- 获取模块详细信息search_ko_entries- 搜索 KO 条目get_ko_info- 获取 KO 详细信息
聚糖分析(2 个)
search_glycans- 搜索聚糖get_glycan_info- 获取聚糖详细信息
BRITE 层次分析(2 个)
search_brite- 搜索 BRITE 层次get_brite_info- 获取 BRITE 详细信息
高级分析工具(5 个)
get_pathway_compounds- 获取路径的化合物列表get_pathway_reactions- 获取路径的反应列表get_compound_reactions- 获取化合物的反应列表get_gene_orthologs- 查找基因的直系同源物batch_entry_lookup- 批量查询条目
交叉引用与集成(2 个)
convert_identifiers- 转换数据库间的标识符find_related_entries- 查找相关条目
基础用法
import asyncio
from langchain_integration import create_kegg_client, load_and_display_tools, create_default_model, run_agent_query
from langchain.agents import create_agent
async def main():
# 创建客户端(可流式 HTTP)
client = create_kegg_client()
try:
# 加载工具
tools = await load_and_display_tools(client)
# 创建模型和 Agent
model = create_default_model()
agent = create_agent(model=model, tools=tools)
# 执行查询
await run_agent_query(
agent,
"인간의 당분해(glycolysis) 경로를 찾아주세요.",
"당분해 경로 검색"
)
finally:
if hasattr(client, 'close'):
try:
await client.close()
except:
pass
if __name__ == "__main__":
asyncio.run(main())
📚 详细文档
项目结构
kegg-mcp-test/
├── kegg_mcp_server.py # Python MCP 服务器(可流式 HTTP)
├── langchain_integration.py # LangChain 集成客户端
├── requirements.txt # Python 包依赖
├── .env.example # 环境变量示例文件
├── .gitignore # Git 忽略文件列表
├── LICENSE # MIT 许可证
└── README.md # 项目文档(此文件)
通信方式
可流式 HTTP(推荐)
- 优点:支持 Web 环境,扩展性好,采用标准 HTTP 协议。
- 使用方法:通过 Python 服务器 (
kegg_mcp_server.py) 运行。 - 端口:默认端口为 3000(可通过环境变量修改)。
stdio(仅适用于本地,可选)
- 优点:具备最高安全性,开销低,配置简单。
- 使用方法:在
langchain_integration.py中将use_http设置为False即可使用。 - 限制:仅支持本地运行,需要单独的 TypeScript 服务器。
问题解决
服务器无法启动
- 检查端口是否被占用:
lsof -i :3000 - 确保所需包已安装:
pip install -r requirements.txt - 检查 Python 版本:需要 Python 3.11 及以上版本。
客户端连接失败
- 确认服务器是否正在运行。
- 检查服务器 URL 是否正确:
KEGG_MCP_SERVER_URL环境变量。 - 检查防火墙设置。
Ollama 连接失败
- 确认 Ollama 是否正在运行:
ollama serve - 检查模型是否已安装:
ollama list - 下载模型:
ollama pull gemma3:4b(或使用其他模型)
📄 许可证
本项目采用 MIT 许可证。
微信扫一扫