返回 MCP 目录
public公开dns本地运行

oh-my-kegg-mcp

这是一个用于访问KEGG生物数据库的Model Context Protocol服务器,提供30个生物数据分析工具,支持HTTP传输和LangChain集成,方便LLM调用KEGG数据进行生物信息学分析。

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_HOSTMCP_PORTMCP_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 服务器。

问题解决

服务器无法启动

  1. 检查端口是否被占用:lsof -i :3000
  2. 确保所需包已安装:pip install -r requirements.txt
  3. 检查 Python 版本:需要 Python 3.11 及以上版本。

客户端连接失败

  1. 确认服务器是否正在运行。
  2. 检查服务器 URL 是否正确:KEGG_MCP_SERVER_URL 环境变量。
  3. 检查防火墙设置。

Ollama 连接失败

  1. 确认 Ollama 是否正在运行:ollama serve
  2. 检查模型是否已安装:ollama list
  3. 下载模型:ollama pull gemma3:4b(或使用其他模型)

📄 许可证

本项目采用 MIT 许可证。

🔗 参考资料

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端