Skip to main content
Glama
pickleton89

Mutation Clinical Trial Matching MCP

by pickleton89

変異臨床試験マッチングMCP

Claude Desktop が変異に基づいて clincialtrials.gov 内の一致を検索できるようにする Model Context Protocol (MCP) サーバー。

状態

これは現在開発の第一段階です。claudeクエリで指定された変異に基づいてトライアルを取得します。ただし、まだバグがあり、さらなる改良と追加が実装される必要があります。

Related MCP server: MedAdapt Content Server

概要

このプロジェクトは、Agentic Codingの原則に基づき、Claude Desktopとclinicaltrials.gov APIを統合するシステムを構築します。このサーバーは、遺伝子変異に関する自然言語クエリに対応し、関連する臨床試験に関する要約情報を返します。

flowchart LR Claude[Claude Desktop] <-->|MCP Protocol| Server[MCP Server] subgraph Flow[PocketFlow] QueryNode[Query Node] -->|trials_data| SummarizeNode[Summarize Node] end Server -->|mutation| Flow QueryNode -->|API Request| API[Clinicaltrials.gov API] API -->|Trial Data| QueryNode Flow -->|summary| Server Server -->|Return| Claude

フロー内の各ノードは、 prepexecpostメソッドを使用して PocketFlow ノード パターンに従います。

プロジェクト構造

このプロジェクトは、エージェンティック コーディング パラダイムに従って構成されています。

  1. 要件(人間主導):

    • 特定の遺伝子変異に関連する臨床試験を検索して要約する

    • コンテキストリソースとして変異情報を提供する

    • Claude Desktopとシームレスに統合

  2. フロー設計(共同作業):

    • ユーザーが遺伝子変異についてクロード・デスクトップに問い合わせる

    • クロードはMCPサーバーツールを

    • サーバーはclinicaltrials.gov APIをクエリします

    • サーバーは結果を処理し、要約します

    • サーバーはフォーマットされた結果をクロードに返す

  3. ユーティリティ(共同):

    • clinicaltrials/query.py : clinicaltrials.gov への API 呼び出しを処理します

    • utils/call_llm.py : Claude を操作するためのユーティリティ

  4. ノード設計(AI主導):

    • utils/node.py : prep/exec/postパターンで基本NodeクラスとBatchNodeクラスを実装します

    • clinicaltrials/nodes.py : クエリと要約のための特殊なノードを定義します。

    • clinicaltrials_mcp_server.py : フロー実行をオーケストレーションする

  5. 実装(AI主導):

    • プロトコルの詳細を処理するためのFastMCP SDK

    • あらゆるレベルでのエラー処理

    • 一般的な変異に関するリソース

コンポーネント

MCP サーバー ( clinicaltrials_mcp_server.py )

公式Python SDKを使用してモデルコンテキストプロトコルインターフェースを実装するメインサーバー。次の機能を備えています。

  • クロードが使用できるツールを登録して公開する

  • 一般的な変異に関する情報を提供するリソース

  • Claude Desktopとの通信を処理します

クエリモジュール ( clinicaltrials/query.py )

以下の事項について clinicaltrials.gov API にクエリを実行する責任があります。

  • 堅牢なエラー処理

  • 入力検証

  • 詳細なログ記録

サマライザー ( llm/summarize.py )

臨床試験データを処理およびフォーマットします。

  • 試験を段階ごとに整理する

  • 重要な情報(NCT ID、概要、条件など)を抽出します

  • 読みやすいマークダウン要約を作成する

ノードパターンの実装

このプロジェクトは、AI ワークフローを構築するためのモジュール式で保守可能なアプローチを提供する PocketFlow Node パターンを実装します。

コアノードクラス ( utils/node.py )

  • Node : データ処理用のprepexecpostメソッドを備えた基本クラス

  • BatchNode : 複数のアイテムをバッチ処理するための拡張機能

  • フロー: ノードの実行を順番に調整する

実装ノード ( clinicaltrials/nodes.py )

  1. クエリトライアルノード:

    # Queries clinicaltrials.gov API def prep(self, shared): return shared["mutation"] def exec(self, mutation): return query_clinical_trials(mutation) def post(self, shared, mutation, result): shared["trials_data"] = result shared["studies"] = result.get("studies", []) return "summarize"
  2. 要約トライアルノード:

    # Formats trial data into readable summaries def prep(self, shared): return shared["studies"] def exec(self, studies): return format_trial_summary(studies) def post(self, shared, studies, summary): shared["summary"] = summary return None # End of flow

フロー実行

MCP サーバーはフローを作成し、実行します。

# Create nodes query_node = QueryTrialsNode() summarize_node = SummarizeTrialsNode() # Create flow flow = Flow(start=query_node) flow.add_node("summarize", summarize_node) # Run flow with shared context shared = {"mutation": mutation} result = flow.run(shared)

このパターンは、準備、実行、後処理を分離することで、コードの保守性とテスト性を向上させます。詳細については、設計ドキュメントをご覧ください。

使用法

  1. uv を使用して依存関係をインストールします。

    uv pip install -r requirements.txt
  2. Claude デスクトップを設定します。

    • ~/Library/Application Support/Claude/claude_desktop_config.jsonの設定はすでに設定されているはずです。

  3. Claude Desktop を起動して、次のような質問をします。

    • 「EGFR L858R 変異に対する臨床試験にはどのようなものがありますか?」

    • 「BRAF V600E変異に対する臨床試験はありますか?」

    • 「ALK再構成の試験について教えてください」

  4. 次の質問をしてリソースを活用しましょう:

    • 「KRAS G12C変異について詳しく教えていただけますか?」


Claude Desktopとの統合

このプロジェクトをClaude Desktop MCPツールとして設定できます。設定ではパスプレースホルダーを使用し、実際のパスに置き換えてください。

"mutation-clinical-trials-mcp": { "command": "{PATH_TO_VENV}/bin/python", "args": [ "{PATH_TO_PROJECT}/clinicaltrials_mcp_server.py" ], "description": "Matches genetic mutations to relevant clinical trials and provides summaries." }

パス変数:

  • {PATH_TO_VENV} : 仮想環境ディレクトリへのフルパス。

  • {PATH_TO_PROJECT} : プロジェクト ファイルが含まれるディレクトリへのフル パス。

インストール手順:

  1. リポジトリをローカル マシンにクローンします。

  2. まだインストールしていない場合は、uv をインストールします。

    curl -LsSf https://astral.sh/uv/install.sh | sh # macOS/Linux # or iwr -useb https://astral.sh/uv/install.ps1 | iex # Windows PowerShell
  3. 仮想環境を作成し、依存関係を 1 つのステップでインストールします。

    uv venv .venv uv pip install -r requirements.txt
  4. 必要に応じて仮想環境をアクティブ化します。

    source .venv/bin/activate # macOS/Linux .venv\Scripts\activate # Windows
  5. 仮想環境とプロジェクト ディレクトリへの完全なパスを決定します。

  6. これらの特定のパスを使用して構成を更新します。

例:

  • macOS/Linuxの場合:

    "command": "/Users/username/projects/mutation_trial_matcher/.venv/bin/python"
  • Windowsの場合:

    "command": "C:\\Users\\username\\projects\\mutation_trial_matcher\\.venv\\Scripts\\python.exe"

パス検索のヒント:

  • 仮想環境内の Python インタープリターへの正確なパスを見つけるには、次のコマンドを実行します。

    • which python (macOS/Linux)

    • where python (Windows、venv を有効化した後)

  • プロジェクト パスには、 clinicaltrials_mcp_server.pyを含むディレクトリへのフル パスを使用します。


今後の改善

計画されている機能強化と今後の作業の包括的なリストについては、 future_work.mdドキュメントを参照してください。

依存関係

このプロジェクトは、次の主要な依存関係に依存しています。

  • Python 3.7+ - ベースランタイム環境

  • PocketFlow ( pocketflow>=0.0.1 ) - Nodeパターンを使用してモジュール式AIワークフローを構築するためのフレームワーク

  • MCP SDK ( mcp[cli]>=1.0.0 ) - Claude デスクトップツールを構築するための公式モデルコンテキストプロトコル SDK

  • リクエスト( requests==2.31.0 ) - clinicaltrials.gov への API 呼び出しを行うための HTTP ライブラリ

  • Python-dotenv ( python-dotenv==1.1.0 ) - .env ファイルから環境変数を読み込むため

すべての依存関係は、インストール手順に記載されているように、uv を使用してインストールできます。

トラブルシューティング

Claude Desktop が MCP サーバーから切断された場合:

  • 次のログを確認してください: ~/Library/Logs/Claude/mcp-server-clinicaltrials-mcp.log

  • Claudeデスクトップを再起動します

  • サーバーが正しく動作していることを確認する

開発プロセス

このプロジェクトは、人間が設計しAIエージェントが実装するエージェントコーディングの原則に基づき、AI支援コーディングアプローチを用いて開発されました。元のプログラムは2025年4月30日にメインマシン上に構築されました。実装は、以下の開発者とのペアプログラミングによって作成されました。

  • ウィンドサーフィン

    • チャットGPT 4.1

    • クロード 3.7 ソネット

これらの AI アシスタントは、高レベルの設計要件を機能コードに変換し、API 統合を支援し、ベスト プラクティスに従ってプロジェクトを構成するのに役立ちました。

.windsurfrules文字数制限の扱い

PocketFlowのテンプレートリポジトリにある.windsurfrulesファイルには包括的なプロジェクトルールが含まれていますが、Windsurfではルールファイルに6,000文字の制限があります。つまり、ガイドライン全体をプロジェクトに直接含めることはできず、重要なルールが省略または切り捨てられる可能性があります。

これを解決するには、次の 2 つの解決策が推奨されます。

1. Windsurf 🪁 メモリを使用してルールを保存する

Windsurfのメモリ機能を利用すると、PocketFlowのルールセット全体を保存できます。たとえ.windsurfrulesファイルのサイズ制限を超えていても、です。この方法により、Windsurfと連携する際に、プロジェクトのすべての規約とベストプラクティスを参照できるため、切り捨てによる損失を防ぐことができます。メモリファイルとルールファイルの詳細な比較と手順については、 docs/memory_vs_windsurfrules.mdをご覧ください。

2. Context7を使用してガイドラインにアクセスする

重要事項:このプロジェクトはPocketFlow-Template-Pythonリポジトリに基づいており、包括的な.windsurfrulesファイルが含まれています。ただし、Windsurfのルールファイルには6,000文字の制限があるため、PocketFlowの完全なガイドラインをWindsurfのメモリに完全に読み込むことはできません。

この制限に対処するため、開発中にContext7 MCPサーバーを使用してPocketFlowのガイドラインにアクセスする方法についての詳細な手順を作成しました。このアプローチにより、文字数制限に縛られることなく、PocketFlowのデザインパターンとベストプラクティスを最大限に活用できます。

PocketFlowでContext7を使用するための詳細な手順については、 Context7ガイドをご覧ください。このガイドには以下の内容が含まれています。

  • WindsurfでContext7 MCPを設定するための手順

  • PocketFlow ドキュメントにアクセスするための自然言語プロンプト

  • 具体的な実装パターンの取得例

  • 重要なパターンを将来の参照用に記憶として保存する方法

このガイドに従うことで、このプロジェクトを開発および拡張しながら、PocketFlow の Agentic Coding 原則との整合性を維持できます。

謝辞

このプロジェクトは、PocketFlow-Template-Pythonをベースに構築されました。この実装を可能にした基盤と構造を提供してくださった、このプロジェクトの初期の貢献者の方々に深く感謝いたします。

このプロジェクトは、元のテンプレートに概説されている Agentic Coding 方法論に従います。

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pickleton89/mutation-clinical-trial-matching-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server