🚀 opengenes - mcp
OpenGenesデータベース用のMCP(Model Context Protocol)サーバーです。このサーバーは、OpenGenesに対するModel Context Protocol(MCP)を実装し、老化と寿命に関する研究データにアクセスするための標準化されたインターフェースを提供します。MCPにより、AIアシスタントやエージェントは構造化されたインターフェースを通じて包括的な生物医学データセットを照会することができます。
このサーバーは、[Hugging Face Hub](https://huggingface.co/longevity - genie/bio - mcp - data)(具体的にはopengenesフォルダ)から最新のOpenGenesデータベースとドキュメントを自動的にダウンロードします。これにより、手動でファイルを管理することなく、常に最新のデータにアクセスできます。
OpenGenesデータベースには以下の内容が含まれています。
- lifespan_change:モデル生物を対象とした遺伝子介入とその寿命への影響に関する実験データ
- gene_criteria:老化関連遺伝子の基準分類(12種類のカテゴリ)
- gene_hallmarks:特定の遺伝子に関連する老化の特徴
- longevity_associations:集団研究から得られた寿命と関連する遺伝的変異
Model Context Protocolが何であるか、およびそれをより効率的に使用する方法を理解したい場合は、[DeepLearning AIコース](https://www.deeplearning.ai/short - courses/mcp - build - rich - context - ai - apps - with - anthropic/)を受講するか、YouTubeでMCPに関するビデオを検索してください。
🚀 クイックスタート
uvのインストール
curl -LsSf https://astral.sh/uv/install.sh | sh
uv --version
uvx --version
uvxは、必要に応じてPythonパッケージをインストールして実行できる便利なツールです。
uvxでの実行
リポジトリをクローンすることなく、uvxを使用してopengenes - mcpサーバーを直接実行できます。
uvx opengenes - mcp
その他のuvxモード(STDIO、HTTP、SSE)
STDIOモード(STDIOを必要とするMCPクライアント用。ファイルを保存したい場合に便利)
uvx opengenes - mcp stdio
HTTPモード(Webサーバー)
uvx opengenes - mcp server
uvx opengenes - mcp server --port 8000
SSEモード(Server - Sent Events)
uvx opengenes - mcp sse
uvxで問題が発生した場合は、多くの場合、uvキャッシュをクリーンアップすることで解決できます。
```
uv cache clean
```
HTTPモードでは、`http://localhost:3001/mcp`(ドキュメントは`http://localhost:3001/docs`)でアクセスできるWebサーバーが起動します。STDIOモードは、標準入出力を介して通信するMCPクライアント用に設計されており、SSEモードはリアルタイム通信にServer - Sent Eventsを使用します。
注意:現在、Swagger/OpenAPIインターフェースはありません。したがって、ブラウザで直接サーバーにアクセスしても、有用な情報は表示されません。利用可能なツールと機能を探索するには、MCPインスペクターを使用するか(以下を参照)、MCPクライアントを介して接続して利用可能なツールを確認してください。
✨ 主な機能
MCPは、AIシステムと専門分野の知識を橋渡しするプロトコルです。以下の機能を提供します。
- 構造化されたアクセス:信頼できる老化と寿命に関する研究データへの直接接続
- 自然言語クエリ:SQLを通じた専門データベースとの簡易的な対話
- 型安全性:FastMCPによる強力な型付けと検証
- AI統合:AIアシスタントやエージェントとのシームレスな統合
📦 インストール
リポジトリのセットアップ
git clone https://github.com/longevity - genie/opengenes - mcp.git
cd opengenes - mcp
uv sync
MCPサーバーの実行
リポジトリをクローンした場合は、uvを使用してサーバーを実行できます。
uv run server
uv run stdio
uv run sse
💻 使用例
OpenGenes MCPサーバーがAIアシスタントと実際にどのように動作するかを以下に示します。

AIアシスタントを介して自然言語でOpenGenesデータベースを照会する例です。これはMCPサーバーを介してSQLクエリに変換されます。このデータベースは、研究質問用のチャットインターフェースやAIベースの開発ツール(Cursor、Windsurf、Copilot付きのVS Codeなど)で使用でき、コーディング中に老化と寿命に関する研究データに直接アクセスすることで、バイオインフォマティクスの生産性を大幅に向上させることができます。
📚 ドキュメント
データソースと更新
OpenGenes MCPサーバーは、Hugging Face Hubの[longevity - genie/bio - mcp - data](https://huggingface.co/longevity - genie/bio - mcp - data)リポジトリからデータを自動的にダウンロードします。これにより、以下のことが保証されます。
- 常に最新:手動で更新することなく、最新のOpenGenesデータベースに自動的にアクセスできます。
- 信頼性の高い配布:バージョン管理と変更追跡を備えた集中型データホスティング。
- 効率的なキャッシュ:ダウンロードしたファイルはローカルにキャッシュされ、ネットワーク要求を最小限に抑えます。
- フォールバックサポート:開発やオフライン使用のために、ローカルのフォールバックファイルがサポートされています。
データファイルは、Hugging Faceリポジトリのopengenesサブフォルダに保存され、以下のファイルが含まれています。
open_genes.sqlite - 完全なOpenGenesデータベース
prompt.txt - データベーススキーマのドキュメントと使用ガイドライン
利用可能なツール
このサーバーは、OpenGenesデータベースと対話するための3つの主要なツールを提供します。
opengenes_db_query(sql: str) - OpenGenesデータベースに対して読み取り専用のSQLクエリを実行します。
opengenes_get_schema_info() - テーブル、列、列挙型を含む詳細なスキーマ情報を取得します。
opengenes_example_queries() - 説明付きのサンプルSQLクエリのリストを取得します。
利用可能なリソース
resource://db - prompt - 完全なデータベーススキーマのドキュメントと使用ガイドライン
resource://schema - summary - テーブルとその目的のフォーマットされた要約
AIクライアントの設定(Anthropic Claude Desktop、Cursor、Windsurfなど)
さまざまなユースケースに対応した事前設定済みのJSONファイルを提供しています。
- STDIOモード(推奨)用:
mcp - config - stdio.jsonを使用します。
- HTTPモード用:
mcp - config.jsonを使用します。
- ローカル開発用:
mcp - config - stdio - debug.jsonを使用します。
設定ビデオチュートリアル
AIクライアントでMCPサーバーを設定する方法のビジュアルガイドについては、姉妹MCPサーバー(biothings - mcp)の設定チュートリアルビデオをご覧ください。OpenGenes MCPサーバーの設定原理はまったく同じです。上記の適切なJSON設定ファイルを使用してください。
OpenGenes MCPサーバーの検査
MCPインスペクターを使用してサーバーの機能を探索する
MCPサーバーが提供するメソッドを検査する場合は、npxを使用します(nodejsとnpmをインストールする必要がある場合があります)。
uvxを使用したSTDIOモードの場合:
npx @modelcontextprotocol/inspector --config mcp - config - stdio.json --server opengenes - mcp
HTTPモードの場合(サーバーが最初に実行されていることを確認):
npx @modelcontextprotocol/inspector --config mcp - config.json --server opengenes - mcp
ローカル開発の場合:
npx @modelcontextprotocol/inspector --config mcp - config - stdio - debug.json --server opengenes - mcp
インスペクターを手動で実行し、インターフェースを介して設定することもできます。
npx @modelcontextprotocol/inspector
その後、MCPインスペクターを使用して、http://127.0.0.1:6274 でツールとリソースを探索できます(複数回インスペクターを実行するとポートが変更される場合があります)。
AIシステムとの統合
AIクライアント(Cursor、Windsurf、ClaudeDesktop、Copilot付きのVS Code、または[その他](https://github.com/punkpeye/awesome - mcp - clients))を、リポジトリから適切な設定ファイルを使用するように設定するだけです。
データベーススキーマ
詳細なスキーマ情報
主要なテーブル
- lifespan_change(47列):モデル生物を対象とした介入詳細を含む実験的な寿命データ
- gene_criteria(2列):老化基準による遺伝子分類(12種類のカテゴリ)
- gene_hallmarks(2列):遺伝子の老化の特徴のマッピング
- longevity_associations(11列):ヒト研究から得られた集団遺伝学的な寿命データ
主要なフィールド
- HGNC:遺伝子シンボル(すべてのテーブルでの主要識別子)
- model_organism:研究生物(マウス、線虫、ハエなど)
- effect_on_lifespan:寿命変化の方向(増加/減少/変化なし)
- intervention_method:遺伝子介入の方法(ノックアウト、過剰発現など)
- criteria:老化関連遺伝子の分類(12種類のカテゴリ)
- hallmarks of aging:遺伝子に関連する生物学的な老化プロセス
サンプルクエリ
一般的な研究質問に対するサンプルSQLクエリ
```sql
-- 最も多くの寿命実験が行われた上位の遺伝子を取得
SELECT HGNC, COUNT(*) as experiment_count
FROM lifespan_change
WHERE HGNC IS NOT NULL
GROUP BY HGNC
ORDER BY experiment_count DESC
LIMIT 10;
-- マウスの寿命を延ばす遺伝子を検索
SELECT DISTINCT HGNC, effect_on_lifespan
FROM lifespan_change
WHERE model_organism = 'mouse'
AND effect_on_lifespan = 'increases lifespan'
AND HGNC IS NOT NULL;
-- 遺伝子に関連する老化の特徴を取得
SELECT HGNC, "hallmarks of aging"
FROM gene_hallmarks
WHERE "hallmarks of aging" LIKE '%mitochondrial%';
-- 民族別の寿命関連を検索
SELECT HGNC, "polymorphism type", "nucleotide substitution", ethnicity
FROM longevity_associations
WHERE ethnicity LIKE '%Italian%';
-- 寿命への影響と寿命関連の両方を持つ遺伝子を検索
SELECT DISTINCT lc.HGNC
FROM lifespan_change lc
INNER JOIN longevity_associations la ON lc.HGNC = la.HGNC
WHERE lc.HGNC IS NOT NULL;
</details>
### MCPが回答を支援するサンプル質問
<details>
<summary>このMCPサーバーを使用して探索できる研究質問</summary>
* どの遺伝子への介入がマウスの寿命を最も延ばしたか?
* モデル動物で最も寿命を延ばしたノックダウンはどれか?
* GHRノックアウトマウスではどのプロセスが改善されているか?
* ハエの寿命を最も延ばした遺伝子介入はどれか?
* VEGFAを過剰発現させたマウスの寿命はどの程度延びたか?
* マウスの寿命を延ばす肝臓特異的な介入はあるか?
* 最も多くの研究で確認された遺伝子と寿命の関連はどれか?
* FOXO3のどの多型がヒトの寿命と関連しているか?
* APOE遺伝子と寿命の関連がどの民族グループで示されているか?
* INS遺伝子の多型は寿命と関連しているか?
* 転写変化と関連する遺伝子はどれか?
* KL遺伝子に関連する老化の特徴はどれか?
* ヒトの寿命と関連する遺伝子はいくつあるか?
* IGF1R遺伝子に関してどのようなタイプの研究が行われているか?
* PTENと老化の関連について知っている証拠は何か?
* ヒトの老化と寿命の両方に関連する遺伝子はどれか?
* ヒトでACE2遺伝子の発現は老化とともに変化するか?
* ワームの寿命を延ばすためにどの遺伝子をダウンレギュレートする必要があるか?
</details>
## 🔧 技術詳細
### 安全機能
- **読み取り専用アクセス**:SELECTクエリのみが許可されます。
- **入力検証**:INSERT、UPDATE、DELETE、DROP、CREATE、ALTER、TRUNCATE操作はブロックされます。
- **エラーハンドリング**:包括的なエラーハンドリングと有益なメッセージが提供されます。
### テストと検証
MCPサーバーには、複雑なクエリに対する応答の品質を評価するLLM - as - a - judgeテストを含む包括的なテストが用意されています。ただし、コスト削減のため、CIではLLMベースのテストはデフォルトで無効になっています。
#### LLMエージェントテストの環境設定
Geminiモデルを使用したLLMエージェントテストを実行する場合は、Gemini APIキーを含む`.env`ファイルを設定する必要があります。
```bash
# プロジェクトルートに.envファイルを作成
echo "GEMINI_API_KEY=your - gemini - api - key - here" > .env
注意:.envファイルとGemini APIキーは、LLMエージェントテストを実行する場合にのみ必要です。他のすべてのテストと基本的なMCPサーバー機能は、APIキーなしで動作します。
テストの実行
MCPサーバーのテストを実行します。
uv run pytest -vvv -s
手動テストも実行できます。
uv run python test/manual_test_questions.py
ローカルで構築したMCPサーバーでも、uvxと同じようにMCPインスペクターを使用できます。
注意:MCPインスペクターの使用はオプションです。ほとんどのMCPクライアント(Cursor、Windsurfなど)は、設定後にこのサーバーから利用可能なツールを自動的に表示します。ただし、インスペクターは詳細なテストや探索に役立ちます。
npxを介してインスペクターを使用する場合は、Node.jsとnpmがインストールされていることを確認してください。Node.jsのバージョン管理には[nvm](https://github.com/nvm - sh/nvm)(Node Version Manager)の使用が推奨されます。
🤝 コントリビュート
コミュニティからのコントリビューションを歓迎します!🎉 老化と寿命に関する研究に興味のある研究者、開発者、愛好者の方々には、多くの参加方法があります。
特に、私たちのMCPサーバーを試して、フィードバックを共有することをお勧めします! サーバーを使用した経験、遭遇した問題、改善提案は、このツールをすべての研究コミュニティにとってより良いものにするために非常に貴重です。
コントリビュートの方法
- 🐛 バグ報告:問題を見つけた場合は、詳細な情報を含むGitHubのIssueを作成してください。
- 💡 機能要求:新しい機能に関するアイデアがある場合は、お知らせいただけると幸いです!
- 📝 ドキュメント:ドキュメント、サンプル、チュートリアルの改善にご協力ください。
- 🧪 テスト:テストケースを追加してください。特にエッジケースや新しいクエリパターンに対するテストを追加すると良いです。
- 🔍 データ品質:データの不整合を特定して報告したり、改善提案を行ってください。
- 🚀 パフォーマンス:クエリを最適化し、キャッシュを改善し、サーバーのパフォーマンスを向上させてください。
- 🌐 統合:新しいMCPクライアントやAIシステムのサンプルを作成してください。
- 🎥 チュートリアルとビデオ:MCPサーバーの使用方法を示すチュートリアル、ビデオガイド、教育コンテンツを作成してください。
- 📖 ユーザーストーリー:私たちのMCPサーバーを使用した研究ワークフローや成功事例を共有してください。
- 🤝 コミュニティアウトリーチ:バイオインフォマティクスコミュニティでMCPの採用を促進するお手伝いをしてください。
チュートリアル、ビデオ、ユーザーストーリーは私たちにとって特に貴重です! 私たちはバイオインフォマティクスコミュニティのAI採用を推進するために取り組んでおり、研究者が私たちのMCPサーバー(このサーバーや他に開発しているもの)をどのように使用するかの実際の例は、実用的なメリットを示し、幅広い採用を促進するのに役立ちます。
始めるには
- リポジトリをフォークします。
- 機能ブランチを作成します(
git checkout -b feature/amazing - feature)。
- 変更を加え、テストを追加します。
- テストスイートを実行します(
uv run pytest)。
- 変更をコミットします(
git commit -m 'Add amazing feature')。
- ブランチにプッシュします(
git push origin feature/amazing - feature)。
- プルリクエストを作成します。
開発ガイドライン
- 既存のコードスタイルに従ってください(フォーマットには
blackを使用しています)。
- 新しい機能に対してテストを追加してください。
- 必要に応じてドキュメントを更新してください。
- コミットを集中的に行い、明確なコミットメッセージを書いてください。
質問やアイデアは?
議論のためにIssueを作成することを躊躇しないでください!私たちは友好的で、新しい方が始めるのをいつでも喜んで手助けします。あなたのコントリビューションは、すべての人のためにオープンサイエンスと寿命研究を前進させる手助けになります。🧬✨
既知の問題
データベースのカバレッジ
現在、このMCPサーバーは完全なOpenGenesデータベースの一部のみを使用しています。完全なOpenGenesデータベースには、まだMCP実装に含まれていない追加のテーブルとデータが含まれています。完全なデータベースのサポートを拡張するためのコントリビューターが必要です! データベースのカバレッジを拡張する手助けに興味がある場合は、コントリビュートセクションを参照してください。
テストのカバレッジ
包括的なテスト(LLM - as - a - judge評価を含む)を提供していますが、すべてのテストケースが実際のOpenGenesウェブインターフェースに対して手動で検証されているわけではありません。一部の自動テスト結果は、精度を確保するために手動で検証する必要がある場合があります。テストのカバレッジと検証の改善に対するコントリビューションを歓迎します。
📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。
謝辞
- [OpenGenes Database](https://open - genes.com/) 提供の包括的な老化研究データ
- Rafikova E, Nemirovich - Danchenko N, Ogmen A, Parfenenkova A, Velikanova A, Tikhonov S, Peshkin L, Rafikov K, Spiridonova O, Belova Y, Glinin T, Egorova A, Batin M. Open Genes - a new comprehensive database of human genes associated with aging and longevity. Nucleic Acids Res. 2024 Jan 5;52(D1):D950 - D962. doi: 10.1093/nar/gkad712. PMID: 37665017; PMCID: PMC10768108.
- Model Context Protocol 提供のプロトコル仕様
- FastMCP 提供のMCPサーバーフレームワーク
このプロジェクトは、健康、遺伝学、寿命研究のためのオープンソースAIアシスタントやライブラリを開発する [Longevity Genie](https://github.com/longevity - genie) 組織の一部です。
Longevity Genieによる他のMCPサーバー
バイオメディカル研究用の他の専用MCPサーバーも開発しています。
- [biothings - mcp](https://github.com/longevity - genie/biothings - mcp) - BioThings.io API用のMCPサーバー。遺伝子注釈(mygene.info)、変異注釈(myvariant.info)、化学化合物データ(mychem.info)へのアクセスを提供します。
以下の団体から支援を受けています。

HEALES - Healthy Life Extension Society
および
[](https://ibima.med.uni - rostock.de/)
[IBIMA - Institute for Biostatistics and Informatics in Medicine and Ageing Research](https://ibima.med.uni - rostock.de/)