変異臨床試験マッチングMCP
Claude Desktop が変異に基づいて clincialtrials.gov 内の一致を検索できるようにする Model Context Protocol (MCP) サーバー。
状態
これは現在開発の第一段階です。claudeクエリで指定された変異に基づいてトライアルを取得します。ただし、まだバグがあり、さらなる改良と追加が実装される必要があります。
Related MCP server: MedAdapt Content Server
概要
このプロジェクトは、Agentic Codingの原則に基づき、Claude Desktopとclinicaltrials.gov APIを統合するシステムを構築します。このサーバーは、遺伝子変異に関する自然言語クエリに対応し、関連する臨床試験に関する要約情報を返します。
フロー内の各ノードは、 prep 、 exec 、 postメソッドを使用して PocketFlow ノード パターンに従います。
プロジェクト構造
このプロジェクトは、エージェンティック コーディング パラダイムに従って構成されています。
要件(人間主導):
特定の遺伝子変異に関連する臨床試験を検索して要約する
コンテキストリソースとして変異情報を提供する
Claude Desktopとシームレスに統合
フロー設計(共同作業):
ユーザーが遺伝子変異についてクロード・デスクトップに問い合わせる
クロードはMCPサーバーツールを
サーバーはclinicaltrials.gov APIをクエリします
サーバーは結果を処理し、要約します
サーバーはフォーマットされた結果をクロードに返す
ユーティリティ(共同):
clinicaltrials/query.py: clinicaltrials.gov への API 呼び出しを処理しますutils/call_llm.py: Claude を操作するためのユーティリティ
ノード設計(AI主導):
utils/node.py: prep/exec/postパターンで基本NodeクラスとBatchNodeクラスを実装しますclinicaltrials/nodes.py: クエリと要約のための特殊なノードを定義します。clinicaltrials_mcp_server.py: フロー実行をオーケストレーションする
実装(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 : データ処理用の
prep、exec、postメソッドを備えた基本クラスBatchNode : 複数のアイテムをバッチ処理するための拡張機能
フロー: ノードの実行を順番に調整する
実装ノード ( clinicaltrials/nodes.py )
クエリトライアルノード:
# 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"要約トライアルノード:
# 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 サーバーはフローを作成し、実行します。
このパターンは、準備、実行、後処理を分離することで、コードの保守性とテスト性を向上させます。詳細については、設計ドキュメントをご覧ください。
使用法
uv を使用して依存関係をインストールします。
uv pip install -r requirements.txtClaude デスクトップを設定します。
~/Library/Application Support/Claude/claude_desktop_config.jsonの設定はすでに設定されているはずです。
Claude Desktop を起動して、次のような質問をします。
「EGFR L858R 変異に対する臨床試験にはどのようなものがありますか?」
「BRAF V600E変異に対する臨床試験はありますか?」
「ALK再構成の試験について教えてください」
次の質問をしてリソースを活用しましょう:
「KRAS G12C変異について詳しく教えていただけますか?」
Claude Desktopとの統合
このプロジェクトをClaude Desktop MCPツールとして設定できます。設定ではパスプレースホルダーを使用し、実際のパスに置き換えてください。
パス変数:
{PATH_TO_VENV}: 仮想環境ディレクトリへのフルパス。{PATH_TO_PROJECT}: プロジェクト ファイルが含まれるディレクトリへのフル パス。
インストール手順:
リポジトリをローカル マシンにクローンします。
まだインストールしていない場合は、uv をインストールします。
curl -LsSf https://astral.sh/uv/install.sh | sh # macOS/Linux # or iwr -useb https://astral.sh/uv/install.ps1 | iex # Windows PowerShell仮想環境を作成し、依存関係を 1 つのステップでインストールします。
uv venv .venv uv pip install -r requirements.txt必要に応じて仮想環境をアクティブ化します。
source .venv/bin/activate # macOS/Linux .venv\Scripts\activate # Windows仮想環境とプロジェクト ディレクトリへの完全なパスを決定します。
これらの特定のパスを使用して構成を更新します。
例:
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.logClaudeデスクトップを再起動します
サーバーが正しく動作していることを確認する
開発プロセス
このプロジェクトは、人間が設計し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ファイルを参照してください。