mcpField
M
Medical Mcps

Medical Mcps

リモート
github.com/pascalwhoopヘルスケア238 週間前に更新
リポジトリ

Medical Mcps について

Medical Mcps は、生物医学研究向けの MCP サーバーです。複数のデータベース API をまとめ、遺伝子、疾患、薬剤、文献、臨床試験などを検索できます。統合エンドポイントと API ごとの接続先を選べます。

主な機能

  1. 01生物・医療データベース API の統合
  2. 02複数 API をまとめる統合エンドポイント
  3. 03遺伝子・タンパク質・変異の検索
  4. 04薬剤・疾患・標的データ
  5. 05文献・臨床試験の検索
  6. 06HTTP レスポンスのキャッシュ

活用シーン

  1. 01遺伝子と疾患の関連を調べる
  2. 02薬剤標的や生物活性を検索する
  3. 03生物医学文献や臨床試験を探す

MCP 対応

複数の生物医学 API に基づくツールを MCP クライアントに公開します。統合エンドポイントまたは API ごとのエンドポイントで接続できます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://medical-mcps-production.up.railway.app/tools/unified/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

生物学 API の MCP サーバー

PyPI version Python 3.12+ License: MIT Release

研究目的で複数の生物学および医療データベースを統合する 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 のみ
  • ...(一覧については利用可能なエンドポイントを参照してください)
ローカル開発

独自のインスタンスをローカルで実行するには、次のいずれかの方法を使用できます。

統合済みの 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 キーが必要)

README の画像

インストール

オプション 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

サービスは次の場所で利用できます。

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 ツールの実行、プロンプトリクエスト、リソースへのアクセスを自動的に計測します。

セットアップ
  1. sentry.io から Sentry DSN を取得します
  2. 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 で認証が必要な場合は、次のパターンに従ってください。

  1. すべてのツールに api_key: str を必須パラメーターとして追加します
  2. API を呼び出す前に API キーが指定されていることを検証します
  3. キーが指定されていない場合は、明確なエラーメッセージを返します: "Error: API key is required. Get your API key from <url>"
  4. 指定されたキーを使用して、リクエストごとにクライアントインスタンスを作成します:client = APIClient(api_key=api_key)
  5. 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 を追加するには:

  1. api_clients/ に新しいクライアントを作成します(例:newapi_client.py)
  2. servers/ に新しいサーバーを作成します(例:newapi_server.py)
  3. med_mcp_server の @medmcps_tool デコレーターを使用して、個別のサーバーと統合サーバーの両方にツールを登録します
  4. http_server.py にサーバーを登録します(インポート、マウント、ライフサイクル)
  5. ツールには {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 ソースが含まれます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。