Medical Mcps について
Medical Mcps は、生物医学研究向けの MCP サーバーです。複数のデータベース API をまとめ、遺伝子、疾患、薬剤、文献、臨床試験などを検索できます。統合エンドポイントと API ごとの接続先を選べます。
主な機能
- 01生物・医療データベース API の統合
- 02複数 API をまとめる統合エンドポイント
- 03遺伝子・タンパク質・変異の検索
- 04薬剤・疾患・標的データ
- 05文献・臨床試験の検索
- 06HTTP レスポンスのキャッシュ
活用シーン
- 01遺伝子と疾患の関連を調べる
- 02薬剤標的や生物活性を検索する
- 03生物医学文献や臨床試験を探す
MCP 対応
複数の生物医学 API に基づくツールを MCP クライアントに公開します。統合エンドポイントまたは API ごとのエンドポイントで接続できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://medical-mcps-production.up.railway.app/tools/unified/mcpclaude mcp add --transport http medical-mcps https://medical-mcps-production.up.railway.app/tools/unified/mcp{"mcpServers":{"medical-mcps":{"type":"http","url":"https://medical-mcps-production.up.railway.app/tools/unified/mcp"}}}Cursor で開く{"servers":{"medical-mcps":{"type":"http","url":"https://medical-mcps-production.up.railway.app/tools/unified/mcp"}}}VS Code で開く{"mcpServers":{"medical-mcps":{"type":"http","url":"https://medical-mcps-production.up.railway.app/tools/unified/mcp"}}}{"mcpServers":{"medical-mcps":{"serverUrl":"https://medical-mcps-production.up.railway.app/tools/unified/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
生物学 API の MCP サーバー
研究目的で複数の生物学および医療データベースを統合する MCP サーバーです。
クイックスタート
本番サーバーへの接続
この MCP サーバーを使用する最も簡単な方法は、本番環境のデプロイに接続することです。すべての API は、すべてのツールに一か所からアクセスできる統合エンドポイントから利用できます。
本番 URL: https://mcp.cloud.curiloo.com/tools/unified/mcp
Cursor(またはその他の MCP クライアント)での設定
.cursor/mcp.json(または同等の MCP クライアント設定)に以下を追加します。
{
"mcpServers": {
"medical-apis": {
"url": "https://mcp.cloud.curiloo.com/tools/unified/mcp"
}
}
}
利用できる内容
接続すると、14 の生物学および医療 API にわたる100 以上のツールを利用できます。
- 経路:Reactome、KEGG、Pathway Commons
- 遺伝子とタンパク質:UniProt、MyGene.info、Node Normalization
- 標的と関連:OpenTargets Platform
- バリアント:MyVariant.info、GWAS Catalog
- 疾患:OMIM、MyDisease.info
- 医薬品:ChEMBL、MyChem.info、OpenFDA
- 文献:PubMed/PubTator3
- 臨床試験:ClinicalTrials.gov、NCI Clinical Trials
- ナレッジグラフ:Every Cure Matrix Knowledge Graph
例:遺伝子を検索する
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "mygene_get_gene",
"arguments": {
"gene_id_or_symbol": "TP53"
}
}
}
個別の API エンドポイント
API を個別に利用したい場合は、各 API に専用のエンドポイントがあります。
/tools/reactome/mcp- Reactome のみ/tools/pubmed/mcp- PubMed のみ/tools/chembl/mcp- ChEMBL のみ- ...(一覧については利用可能なエンドポイントを参照してください)
ローカル開発
独自のインスタンスをローカルで実行するには、次のいずれかの方法を使用できます。
- Docker Compose を使用する(手早くセットアップする場合に推奨) - Docker Compose のセットアップを参照
- Python/uv で直接実行する - 以下のサーバーの実行を参照
統合済みの API
✅ 実装済みの API
- Reactome API - 経路情報、遺伝子/タンパク質のクエリ、疾患との関連
- KEGG API - 経路マップ、遺伝子アノテーション、疾患および医薬品の情報
- UniProt API - タンパク質配列、機能アノテーション、疾患との関連
- OMIM API - 遺伝性疾患の情報、遺伝子と疾患の関連(API キーが必要)
- GWAS Catalog API - 遺伝的関連、バリアント情報、研究メタデータ
- Pathway Commons API - 統合経路データ、経路間の相互作用、遺伝子/タンパク質ネットワーク
- Node Normalization API - CURIE の正規化、データベース間の識別子マッピング
- ChEMBL API - 医薬品と標的の相互作用、生物活性データ、作用機序、医薬品の適応症
- ClinicalTrials.gov API - 臨床試験の検索、研究メタデータ、試験のステータス
- PubMed/PubTator3 API - 生物医学文献の検索、論文の取得、プレプリントの検索
- OpenFDA API - FDA の有害事象報告、医薬品ラベル、医療機器の事象、医薬品の承認
- OpenTargets Platform API - 標的/疾患の検索、関連、エビデンス
- MyVariant.info API - 遺伝子バリアントのアノテーション、集団頻度、臨床的意義
- BioThings Suite APIs - MyGene.info(遺伝子アノテーション)、MyDisease.info(疾患情報)、MyChem.info(医薬品/化学物質データ)
- NCI Clinical Trials API - がん臨床試験の検索とメタデータ(API キーが必要)

インストール
オプション 1:PyPI からインストール
PyPI からパッケージをインストールします。
pip install medical-mcps
次に、サーバーを実行します。
medical-mcps
サーバーは http://localhost:8000 で利用できます。
Option 2: Docker で実行
事前ビルド済みの Docker イメージをプルして実行します。
# Pull latest image
docker pull pascalwhoop/medical-mcps:latest
# Run server
docker run -p 8000:8000 pascalwhoop/medical-mcps:latest
サーバーは http://localhost:8000 で利用できます。
特定のバージョンを指定する場合:
docker pull pascalwhoop/medical-mcps:v0.1.0
Option 3: Docker Compose(開発におすすめ)
MCP バックエンドを実行する最も簡単な方法です。
# Start all services with auto-rebuild
make docker-watch
# Or start in background
make docker-up
# View logs
make docker-logs
# Stop services
make docker-down
サービスは次の場所で利用できます。
- MCP バックエンド:http://localhost:8000
Option 4: Python をローカルにインストール
# Install dependencies using uv
cd /path/to/medical-mcps
uv sync
サーバーの実行
このサーバーは、HTTP 経由でリモートホスティングするために、Streamable HTTP トランスポート( MCP 仕様に準拠) を使用します。
uv sync の実行後、サーバーを起動できます。
Makefile を使用する(開発におすすめ)
# Start server with uvicorn and livereload (auto-reload on code changes)
make server
uv を直接使用する
# Run HTTP server
uv run mcp-server
# Or with custom host/port
MCP_HOST=0.0.0.0 MCP_PORT=8000 uv run mcp-server
uvicorn を直接使用する
# Run with uvicorn and livereload
uv run uvicorn medical_mcps.http_server:app --reload --host 0.0.0.0 --port 8000
HTTP サーバーは http://localhost:8000(または設定したホスト/ポート)で利用できます。
このサーバーは、FastAPI 上の ASGI アプリとしてマウントされた MCP SDK の Streamable HTTP トランスポートを使用します。MCP エンドポイントは /mcp で利用でき、POST(JSON-RPC メッセージの送信)と GET(任意の SSE ストリーム)をサポートします。
本番環境への接続
MCP サーバーは次の場所にデプロイされ、利用できます。
本番環境のベース URL: https://mcp.cloud.curiloo.com
使用状況の分析: 本番環境でのツール呼び出しは、Cloud Logging を介して BigQuery に記録されます。アーキテクチャ、セットアップ、クエリ例については、docs/USAGE_ANALYTICS.md を参照してください。
統合エンドポイント(おすすめ)
統合エンドポイントを使用すると、すべての API に一か所からアクセスできます。
{
"url": "https://mcp.cloud.curiloo.com/tools/unified/mcp"
}
これにより、1 つの接続からすべての API の 100 以上のツールにアクセスできます。
個別の API エンドポイント
API ごとに個別に使用する場合、各 API に独自のエンドポイントがあります。
本番環境:
{
"url": "https://mcp.cloud.curiloo.com/tools/reactome/mcp"
}
ローカル開発環境:
{
"url": "http://localhost:8000/tools/reactome/mcp"
}
利用可能なエンドポイント
すべてのエンドポイントは、本番環境とローカルの両方の URL で利用できます。
/tools/unified/mcp- 統合サーバー(すべての API を統合)/tools/reactome/mcp- Reactome API/tools/kegg/mcp- KEGG API/tools/uniprot/mcp- UniProt API/tools/omim/mcp- OMIM API(API キーが必要)/tools/gwas/mcp- GWAS Catalog API/tools/pathwaycommons/mcp- Pathway Commons API/tools/nodenorm/mcp- Node Normalization API/tools/chembl/mcp- ChEMBL API/tools/opentargets/mcp- OpenTargets Platform API/tools/ctg/mcp- ClinicalTrials.gov API/tools/pubmed/mcp- PubMed/PubTator3 API/tools/openfda/mcp- OpenFDA API/tools/myvariant/mcp- MyVariant.info API/tools/biothings/mcp- BioThings Suite API(MyGene、MyDisease、MyChem)/tools/nci/mcp- NCI Clinical Trials API(API キーが必要)/tools/everycure-kg/mcp- Every Cure Matrix Knowledge Graph API
例:Cursor で複数の API を設定する
Option 1: 統合エンドポイントを使用する(おすすめ)
1 つの接続からすべての API にアクセスします。
{
"mcpServers": {
"medical-apis": {
"url": "https://mcp.cloud.curiloo.com/tools/unified/mcp"
}
}
}
Option 2: 個別のエンドポイントを使用する
API ごとに個別の接続を使用する場合:
{
"mcpServers": {
"reactome": {
"url": "https://mcp.cloud.curiloo.com/tools/reactome/mcp"
},
"chembl": {
"url": "https://mcp.cloud.curiloo.com/tools/chembl/mcp"
},
"pubmed": {
"url": "https://mcp.cloud.curiloo.com/tools/pubmed/mcp"
}
}
}
接続のテスト
簡単な HTTP リクエストを送信して、本番サーバーにアクセスできるかテストできます。
# Test unified endpoint (recommended)
curl https://mcp.cloud.curiloo.com/tools/unified/mcp \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "method": "initialize", "params": {}, "id": 1}'
# Or test individual API endpoint
curl https://mcp.cloud.curiloo.com/tools/reactome/mcp \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "method": "initialize", "params": {}, "id": 1}'
応答が正常に返れば、サーバーが稼働しており、アクセス可能であることを示します。
HTTP キャッシュ
すべての API クライアントは hishel(RFC 9111 準拠の HTTP キャッシュ)を使用し、応答をディスクに透過的にキャッシュします。これにより、重複する API 呼び出しを減らし、パフォーマンスを向上させます。
キャッシュの設定
- キャッシュの場所:
~/.cache/medical-mcps/api_cache/ - キャッシュ期間:30 日(デフォルトの TTL)
- キャッシュの更新:キャッシュされたエントリにアクセスすると TTL がリセットされます(
refresh_ttl_on_access=True) - API ごとのキャッシュファイル:各 API は独自の SQLite キャッシュファイルを使用します(例:
reactome.db、kegg.db)
キャッシュの動作
- 自動:すべての HTTP ベースの API で、キャッシュはデフォルトで有効です
- 透過的:URL、パラメーター、ヘッダーに基づいて、レスポンスが自動的にキャッシュされます
- RFC 9111 準拠:HTTP キャッシュのセマンティクスと Cache-Control ヘッダーに従います
- キャッシュの可視性:キャッシュされたレスポンスを返すと、ログに「(from cache)」と表示されます
キャッシュの無効化
特定のクライアントでキャッシュを無効にするには、初期化時に enable_cache=False を渡します。
client = ReactomeClient(enable_cache=False)
キャッシュの消去
キャッシュを消去するには、キャッシュディレクトリを削除します。
rm -rf ~/.cache/medical-mcps/api_cache/
または、個別の API キャッシュファイルを削除します。
rm ~/.cache/medical-mcps/api_cache/reactome.db
対応 API
すべての HTTP ベースの API がキャッシュに対応しています。
- Reactome (httpx)
- KEGG (httpx)
- UniProt (httpx)
- OMIM (httpx)
- GWAS Catalog (httpx)
- Pathway Commons (httpx)
- ClinicalTrials.gov (requests)
- PubMed (httpx)
- OpenFDA (httpx)
- MyVariant.info (httpx)
- BioThings Suite (httpx)
- NCI Clinical Trials (httpx)
注記:ChEMBL はライブラリクライアント(HTTP ではありません)を使用するため、キャッシュはライブラリレベルで処理されます。
Sentry による監視
このサーバーには、エラー追跡とパフォーマンス監視のためのオプションの Sentry 統合が含まれています。Sentry は、MCP ツールの実行、プロンプトリクエスト、リソースへのアクセスを自動的に計測します。
セットアップ
- sentry.io から Sentry DSN を取得します
SENTRY_DSN環境変数を設定します。
export SENTRY_DSN="https://[email protected]/project-id"
設定
Sentry は環境変数で設定できます。
SENTRY_DSN- Sentry DSN(Sentry を有効にするために必要)SENTRY_TRACES_SAMPLE_RATE- パフォーマンストレースのサンプルレート(デフォルト:1.0= 100%)SENTRY_SEND_DEFAULT_PII- ツールの入力/出力を Sentry に含めるかどうか(デフォルト:true)SENTRY_ENABLE_LOGS- Sentry へのログ送信を有効にするかどうか(デフォルト:true)SENTRY_PROFILE_SESSION_SAMPLE_RATE- プロファイリングセッションのサンプルレート(デフォルト:1.0= 100%)SENTRY_PROFILE_LIFECYCLE- プロファイラーのライフサイクルモード(デフォルト:trace- トランザクションがアクティブなときに自動実行)ENVIRONMENT- 環境名(デフォルト:local)
パフォーマンス監視:
- トレーシング:デフォルトでトランザクションの 100% をキャプチャします(
traces_sample_rate=1.0) - プロファイリング:デフォルトでセッションの 100% をプロファイリングします(
profile_session_sample_rate=1.0) - ログ:デフォルトで有効です(
enable_logs=True)
追跡される内容
Sentry は以下を自動的に収集します。
MCP 統合:
- ツールの実行:ツール名、引数、結果、実行エラー
- プロンプトリクエスト:プロンプト名、引数、内容
- リソースへのアクセス:リソース URI とアクセスパターン
- リクエストコンテキスト:リクエスト ID、セッション ID、トランスポートの種類
- 実行スパン:すべてのハンドラー呼び出しのタイミング情報
Starlette 統合:
- HTTP リクエスト:メソッド、URL、ヘッダー、フォームデータ、JSON ペイロード
- エラー:Internal Server Error(5xx ステータスコード)につながるすべての例外
- パフォーマンス:リクエストのタイミングとトランザクションデータ
- リクエストデータ:すべてのイベントに添付されます(
send_default_pii=Trueでない限り、PII は除外されます)
HTTPX 統合:
- 送信 HTTP リクエスト:API クライアント(Reactome、KEGG、UniProt など)が行うすべての HTTP リクエスト
- リクエストスパン:送信 HTTP リクエストごとにスパンを作成します
- トレースの伝播:トレースが下流サービスに適切に伝播されるようにします
Asyncio 統合:
- 非同期オペレーション:非同期コンテキストとオペレーションを追跡します
- 非同期エラー:非同期関数やタスクで発生したエラーをキャプチャします
プライバシー
デフォルトでは、Sentry はツールの入力/出力やプロンプトの内容(PII と見なされます)を含めません。これらのデータを含めるには、SENTRY_SEND_DEFAULT_PII=true を設定します。
詳細については、 Sentry MCP 統合のドキュメント を参照してください。
API キーの取り扱い
重要: MCP サーバーはステートレスプロキシです。API キーは保存しません。
クライアントが提供する API キーを必要とする API
認証が必要な API(現在は OMIM)では、MCP クライアントは各ツール呼び出しの際に、パラメーターとして API キーを指定する必要があります。
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "get_entry",
"arguments": {
"mim_number": "104300",
"api_key": "your-omim-api-key-here"
}
}
}
API キーが必要な API:
- OMIM - すべてのツールで
api_keyパラメーターが必要です(https://omim.org/api から取得してください) - NCI Clinical Trials -
api_keyパラメーターは任意です(https://clinicaltrialsapi.cancer.gov/ から取得してください) - OpenFDA - より高いレート制限を利用する場合、
api_keyパラメーターは任意です(https://open.fda.gov/apis/ から取得してください)
API キーが不要な API:
- Reactome、KEGG、UniProt、GWAS Catalog、Pathway Commons、Node Normalization、ChEMBL、 ClinicalTrials.gov、PubMed、MyVariant.info、BioThings Suite(MyGene、MyDisease、MyChem)
今後の API 向けパターン
新しい API で認証が必要な場合は、次のパターンに従ってください。
- すべてのツールに
api_key: strを必須パラメーターとして追加します - API を呼び出す前に API キーが指定されていることを検証します
- キーが指定されていない場合は、明確なエラーメッセージを返します:
"Error: API key is required. Get your API key from <url>" - 指定されたキーを使用して、リクエストごとにクライアントインスタンスを作成します:
client = APIClient(api_key=api_key) - API キーをサーバー設定や環境変数に保存しないでください
例:
@api_mcp.tool()
async def some_tool(param: str, api_key: str) -> str:
"""Tool description.
Args:
param: Required parameter
api_key: API key (REQUIRED - get from https://api-provider.com)
"""
if not api_key:
return "Error: API key is required. Get your API key from https://api-provider.com"
try:
client = APIClient(api_key=api_key)
return await client.some_method(param)
except Exception as e:
return f"Error calling API: {str(e)}"
利用可能なツール
使用する API が明確にわかるように、すべてのツールには API 名のプレフィックス(例:reactome_*)が付いています。
Reactome ツール
reactome_get_pathway- パスウェイの詳細情報を取得しますreactome_query_pathways- キーワードまたは遺伝子/タンパク質名でパスウェイを検索しますreactome_get_pathway_participants- パスウェイに関与するすべての要素を取得しますreactome_get_disease_pathways- 疾患に関連するパスウェイを取得します
KEGG ツール
kegg_get_pathway_info- パスウェイ ID でパスウェイ情報を取得しますkegg_list_pathways- パスウェイの一覧を取得します(生物種による絞り込みは任意です)kegg_find_pathways- クエリキーワードに一致するパスウェイを検索しますkegg_get_gene- 遺伝子 ID で遺伝子情報を取得しますkegg_find_genes- クエリキーワードに一致する遺伝子を検索しますkegg_get_disease- 疾患 ID で疾患情報を取得しますkegg_find_diseases- クエリキーワードに一致する疾患を検索しますkegg_link_pathway_genes- パスウェイに関連付けられた遺伝子を取得します
UniProt ツール
uniprot_get_protein- アクセッション番号でタンパク質情報を取得しますuniprot_search_proteins- UniProtKB のタンパク質を検索しますuniprot_get_protein_sequence- FASTA 形式でタンパク質配列を取得しますuniprot_get_disease_associations- タンパク質に関連する疾患を取得しますuniprot_map_ids- データベース間で識別子を対応付けます
OMIM ツール
omim_get_entry- MIM 番号でエントリー情報を取得しますomim_search_entries- OMIM のエントリーを検索しますomim_get_gene- 遺伝子記号で遺伝子情報を取得しますomim_search_genes- OMIM の遺伝子を検索しますomim_get_phenotype- MIM 番号で表現型情報を取得しますomim_search_phenotypes- 表現型を検索します
注: すべての OMIM ツールで api_key パラメーターが必要です。API キーは https://omim.org/api から取得してください。
GWAS Catalog ツール
gwas_get_association- アソシエーション ID でアソシエーション情報を取得しますgwas_search_associations- さまざまなフィルターを使用してアソシエーションを検索しますgwas_get_variant- rsId で SNP 情報を取得しますgwas_search_variants- rsId で SNP/バリアントを検索しますgwas_get_study- スタディ ID でスタディ情報を取得しますgwas_search_studies- さまざまなフィルターを使用してスタディを検索しますgwas_get_trait- トレイト ID でトレイト情報を取得しますgwas_search_traits- トレイトを検索します
Pathway Commons ツール
pathwaycommons_search- 経路、タンパク質、その他の生物学的エンティティを検索しますpathwaycommons_get_pathway_by_uri- URI で経路情報を取得しますpathwaycommons_top_pathways- 最上位の経路を取得します(遺伝子またはデータソースによる絞り込みも可能です)pathwaycommons_graph- 経路のグラフ/ネットワークを取得します(近傍、経路など)pathwaycommons_traverse- グラフのパス式を使用して経路データをたどります
Node Normalization ツール
nodenorm_get_semantic_types- サポートされている BioLink のセマンティック型をすべて取得しますnodenorm_get_curie_prefixes- サポートされている CURIE プレフィックスをすべて取得しますnodenorm_get_normalized_nodes- 1 つ以上の CURIE を正規化し、同等の識別子を取得しますnodenorm_get_allowed_conflations- 利用可能な統合タイプを取得します
ChEMBL ツール
chembl_get_molecule- ChEMBL ID で分子(医薬品/化合物)の情報を取得しますchembl_search_molecules- 名前または同義語で分子を検索しますchembl_get_target- ChEMBL ID で標的(タンパク質)の情報を取得しますchembl_search_targets- 名前または同義語で標的を検索しますchembl_get_activities- 生物活性データを取得します(標的または分子で絞り込みます)chembl_get_mechanism- 分子の作用機序を取得しますchembl_find_drugs_by_target- 特定のタンパク質を標的とするすべての医薬品を検索しますchembl_find_drugs_by_indication- 疾患/適応症に該当するすべての医薬品を検索しますchembl_get_drug_indications- 特定の医薬品の適応症をすべて取得します
OpenTargets ツール
opentargets_search- OpenTargets プラットフォーム全体から標的、疾患、医薬品を検索しますopentargets_get_associations- 標的と疾患の関連情報を取得しますopentargets_get_evidence- 標的と疾患を結び付けるエビデンスを取得します
このサーバーは、外部実装をコピーするのではなく、コードベース全体で使用されているものと同じ FastMCP + med_mcp_server のパターンに従っています。また、このクライアントは、検索、関連情報、エビデンスの取得に適切な GraphQL クエリを使用して、公式の OpenTargets Platform v4 GraphQL API を呼び出します。
ClinicalTrials.gov ツール
ctg_search_studies- さまざまなフィルターを使って臨床試験を検索しますctg_get_study- NCT ID で単一の試験を取得しますctg_search_by_condition- 病態/疾患で試験を検索しますctg_search_by_intervention- 介入/治療で試験を検索しますctg_get_study_metadata- データモデルのメタデータ(利用可能なフィールド)を取得します
PubMed/PubTator3 ツール
pubmed_search_articles- 遺伝子、疾患、化学物質、キーワード、またはバリアントで PubMed/PubTator3 の生物医学論文を検索しますpubmed_get_article- PMID または DOI で論文の詳細情報を取得します(全文取得に対応)pubmed_search_preprints- Europe PMC を通じて bioRxiv/medRxiv のプレプリント論文を検索します
OpenFDA ツール
openfda_search_adverse_events- 医薬品、反応、または重篤度で FDA の有害事象報告(FAERS)を検索しますopenfda_get_adverse_event- 安全性報告 ID で有害事象報告の詳細を取得しますopenfda_search_drug_labels- 医薬品名、適応症、またはセクションで FDA の医薬品ラベル(SPL)を検索しますopenfda_get_drug_label- セット ID で医薬品ラベル全体を取得します(セクションによる絞り込みも可能です)openfda_search_device_events- 医療機器、製造業者、または問題で FDA の医療機器有害事象報告(MAUDE)を検索します
注: OpenFDA ツールでは、レート制限を引き上げるための省略可能な api_key パラメーターを利用できます。API キーは https://open.fda.gov/apis/ から取得してください。
MyVariant.info ツール
myvariant_search_variants- 遺伝子、HGVS 表記、rsID、臨床的意義、頻度、または CADD スコアで遺伝子バリアントを検索しますmyvariant_get_variant- バリアント ID(HGVS、rsID、または MyVariant ID)でバリアントの包括的な詳細を取得します
BioThings Suite ツール
mygene_get_gene- ID またはシンボルから MyGene.info の遺伝子情報を取得しますmydisease_get_disease- ID または名前から MyDisease.info の疾患情報を取得しますmychem_get_drug- ID または名前から MyChem.info の薬剤・化学物質情報を取得します
NCI 臨床試験ツール
nci_search_trials- 疾患、介入、フェーズ、またはステータスで、がん研究に関する NCI 臨床試験を検索しますnci_get_trial- 試験 ID から NCI 試験の詳細を取得します
注: NCI ツールでは、オプションの api_key パラメーターを使用できます。API キーは
https://clinicaltrialsapi.cancer.gov/ から取得してください。
開発
サーバーは次のように構成されています。
medical_mcps/
├── __init__.py
├── http_server.py # HTTP MCP server (Starlette)
├── med_mcp_server.py # Unified MCP server and tool decorator
├── settings.py # Server configuration
├── sentry_config.py # Sentry error tracking configuration
├── api_clients/ # API client implementations
│ ├── __init__.py
│ ├── base_client.py
│ ├── reactome_client.py
│ ├── kegg_client.py
│ ├── uniprot_client.py
│ ├── omim_client.py
│ ├── gwas_client.py
│ ├── pathwaycommons_client.py
│ ├── nodenorm_client.py
│ ├── chembl_client.py
│ ├── ctg_client.py
│ ├── pubmed_client.py
│ ├── openfda_client.py
│ ├── opentargets_client.py
│ ├── myvariant_client.py
│ ├── mygene_client.py
│ ├── mydisease_client.py
│ ├── mychem_client.py
│ └── nci_client.py
└── servers/ # Individual MCP servers per API
├── __init__.py
├── reactome_server.py
├── kegg_server.py
├── uniprot_server.py
├── omim_server.py
├── gwas_server.py
├── pathwaycommons_server.py
├── nodenorm_server.py
├── chembl_server.py
├── opentargets_server.py
├── ctg_server.py
├── pubmed_server.py
├── openfda_server.py
├── myvariant_server.py
├── biothings_server.py
└── nci_server.py
新しい API を追加するには:
api_clients/に新しいクライアントを作成します(例:newapi_client.py)servers/に新しいサーバーを作成します(例:newapi_server.py)med_mcp_serverの@medmcps_toolデコレーターを使用して、個別のサーバーと統合サーバーの両方にツールを登録しますhttp_server.pyにサーバーを登録します(インポート、マウント、ライフサイクル)- ツールには
{api_name}_{tool_name}の命名規則を使用します
例:
from ..med_mcp_server import unified_mcp, tool as medmcps_tool
@medmcps_tool(name="newapi_tool_name", servers=[newapi_mcp, unified_mcp])
async def tool_function(...):
...
テスト
MCP クライアントを接続してツールを呼び出し、サーバーをテストします。各ツールの応答には、出力に API ソースが含まれます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。