🚀 Oh My KEGG MCP
これはKEGG (Kyoto Encyclopedia of Genes and Genomes) データベースにアクセスするためのModel Context Protocol (MCP) サーバーです。(非公式)
✨ 主な機能
- 30のKEGGツール:代謝経路、遺伝子、化合物、反応、酵素、疾患、薬物など、様々な生物学的データの検索と分析が可能です。
- Streamable HTTP Transport:Web環境で使用可能なHTTPベースの通信方式を採用しています。
- 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. クライアントの起動
# デフォルトの起動 (Streamable HTTPを使用)
python langchain_integration.py
# Ollamaの接続テストのみを実行
python langchain_integration.py --test
# stdioを使用 (オプション、別途TypeScriptサーバーが必要)
# langchain_integration.pyでuse_http=Falseに変更
# 注意: 現在はStreamable HTTP方式のみ提供されています
利用可能なツール
Database Information & Statistics (2つ)
get_database_info- データベースの情報と統計を取得します。list_organisms- すべてのKEGG生物のリストを取得します。
Pathway Analysis (3つ)
search_pathways- 代謝経路を検索します。get_pathway_info- 代謝経路の詳細情報を取得します。get_pathway_genes- 代謝経路の遺伝子リストを取得します。
Gene Analysis (2つ)
search_genes- 遺伝子を検索します。get_gene_info- 遺伝子の詳細情報(配列を含むオプション)を取得します。
Compound Analysis (2つ)
search_compounds- 化合物を検索します。get_compound_info- 化合物の詳細情報を取得します。
Reaction & Enzyme Analysis (4つ)
search_reactions- 反応を検索します。get_reaction_info- 反応の詳細情報を取得します。search_enzymes- 酵素を検索します。get_enzyme_info- 酵素の詳細情報を取得します。
Disease & Drug Analysis (5つ)
search_diseases- 疾患を検索します。get_disease_info- 疾患の詳細情報を取得します。search_drugs- 薬物を検索します。get_drug_info- 薬物の詳細情報を取得します。get_drug_interactions- 薬物の相互作用を取得します。
Module & Orthology Analysis (4つ)
search_modules- モジュールを検索します。get_module_info- モジュールの詳細情報を取得します。search_ko_entries- KOエントリを検索します。get_ko_info- KOの詳細情報を取得します。
Glycan Analysis (2つ)
search_glycans- 糖鎖を検索します。get_glycan_info- 糖鎖の詳細情報を取得します。
BRITE Hierarchy Analysis (2つ)
search_brite- BRITE階層を検索します。get_brite_info- BRITEの詳細情報を取得します。
Advanced Analysis Tools (5つ)
get_pathway_compounds- 代謝経路の化合物リストを取得します。get_pathway_reactions- 代謝経路の反応リストを取得します。get_compound_reactions- 化合物の反応リストを取得します。get_gene_orthologs- 遺伝子の直列相同体を検索します。batch_entry_lookup- バッチエントリを検索します。
Cross-References & Integration (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():
# クライアントを作成 (Streamable HTTP)
client = create_kegg_client()
try:
# ツールをロード
tools = await load_and_display_tools(client)
# モデルとエージェントを作成
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サーバー (Streamable HTTP)
├── langchain_integration.py # LangChain統合クライアント
├── requirements.txt # Pythonパッケージの依存関係
├── .env.example # 環境変数のサンプルファイル
├── .gitignore # Gitで無視するファイルのリスト
├── LICENSE # MITライセンス
└── README.md # プロジェクトのドキュメント (このファイル)
通信方式
Streamable 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 License
参考資料

Edgeone Pages MCP Server
EdgeOne Pages MCPは、MCPプロトコルを通じてHTMLコンテンツをEdgeOne Pagesに迅速にデプロイし、公開URLを取得するサービスです。
TypeScript
24.0K
4.8ポイント

Gmail MCP Server
Claude Desktop用に設計されたGmail自動認証MCPサーバーで、自然言語でのやり取りによるGmailの管理をサポートし、メール送信、ラベル管理、一括操作などの完全な機能を備えています。
TypeScript
17.6K
4.5ポイント

Context7
Context7 MCPは、AIプログラミングアシスタントにリアルタイムのバージョン固有のドキュメントとコード例を提供するサービスで、Model Context Protocolを通じてプロンプトに直接統合され、LLMが古い情報を使用する問題を解決します。
TypeScript
78.2K
4.7ポイント

Baidu Map
認証済み
百度マップMCPサーバーは国内初のMCPプロトコルに対応した地図サービスで、地理コーディング、ルート計画など10個の標準化されたAPIインターフェースを提供し、PythonとTypescriptでの迅速な接続をサポートし、エージェントに地図関連の機能を実現させます。
Python
35.1K
4.5ポイント

Gitlab MCP Server
認証済み
GitLab MCPサーバーは、Model Context Protocolに基づくプロジェクトで、GitLabアカウントとのやり取りに必要な包括的なツールセットを提供します。コードレビュー、マージリクエスト管理、CI/CD設定などの機能が含まれます。
TypeScript
21.4K
4.3ポイント

Unity
認証済み
UnityMCPはUnityエディターのプラグインで、モデルコンテキストプロトコル (MCP) を実装し、UnityとAIアシスタントのシームレスな統合を提供します。リアルタイムの状態監視、リモートコマンドの実行、ログ機能が含まれます。
C#
27.4K
5ポイント

Magic MCP
Magic Component Platform (MCP) はAI駆動のUIコンポーネント生成ツールで、自然言語での記述を通じて、開発者が迅速に現代的なUIコンポーネントを作成するのを支援し、複数のIDEとの統合をサポートします。
JavaScript
19.5K
5ポイント

Sequential Thinking MCP Server
MCPプロトコルに基づく構造化思考サーバーで、思考段階を定義することで複雑な問題を分解し要約を生成するのに役立ちます。
Python
30.9K
4.5ポイント



