Health Claims MCP Server
Healthcare MCP + A2A Server (Mock)
医療保険請求ドメイン向けのModel Context Protocol (MCP)およびAgent-to-Agent (A2A) 通信を実証するサンプルプロジェクトです。
mcp_server/— 8つのヘルスケアツールを公開するFastMCPサーバーa2a/— JSON-RPC 2.0上で調整を行う4つの専門エージェントを備えたカスタムA2Aプロトコルrun_a2a.py— すべてのエージェントをまとめて実行するスタンドアロンHTTPサーバー
すべてのデータは合成されたものであり、実際のPHI(個人健康情報)や外部への呼び出しは含まれません。
公式A2A SDK:
a2a-sdk(v1.0.1+) がA2Aプロトコルの公式Pythonライブラリとなりました。本プロジェクトには、学習目的で構築されたカスタム実装が含まれています。
プロジェクト構成
healthcare-mcp/
├── mcp_server/ # MCP server
│ ├── __init__.py
│ └── server.py # FastMCP with 8 healthcare tools
├── a2a/ # A2A protocol implementation
│ ├── __init__.py
│ ├── message.py # JSON-RPC 2.0 message types
│ ├── a2a_protocol.py # Protocol engine, registry, routing
│ └── agents.py # 4 healthcare domain agents
├── run_a2a.py # Standalone A2A HTTP server
├── test_a2a_communication.py # A2A protocol tests (40 tests)
├── diagrams/
│ ├── mcp.mmd # MCP Gateway architecture
│ └── a2a.mmd # A2A messaging pattern
├── requirements.txt
└── pytest.iniセットアップ
前提条件: Python 3.10以上
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txtMCPサーバーの実行
MCPサーバーは、MCP互換クライアントに対してヘルスケアツールを公開します。
stdio (デフォルト — MCPクライアント用)
python mcp_server/server.pyStreamable HTTP
export MCP_TRANSPORT=streamable-http
export FASTMCP_HOST=127.0.0.1
export FASTMCP_PORT=8000
python mcp_server/server.pyエンドポイント: http://127.0.0.1:8000/mcp
SSE
export MCP_TRANSPORT=sse
python mcp_server/server.pyMCP環境変数
変数 | デフォルト | 説明 |
|
| トランスポート: |
|
| HTTPトランスポートのバインドホスト |
|
| HTTPトランスポートのバインドポート |
|
| streamable-httpエンドポイントのURLパス |
| (なし) | オプションのマウントパスプレフィックス |
A2Aサーバーの実行
A2Aサーバーは4つのヘルスケアエージェントすべてを起動し、HTTP経由で公開します。これは、MCPツール関数をプロセス内で呼び出すローカルMCPクライアントを使用するため、個別のMCPサーバーは不要です。
python run_a2a.pyサーバーはデフォルトで http://127.0.0.1:8001 で起動します。
A2A環境変数
変数 | デフォルト | 説明 |
|
| バインドホスト |
|
| バインドポート |
A2Aエンドポイント
メソッド | パス | 説明 |
|
| エージェントカード — 検出用の機能とメタデータ |
|
| 登録済みエージェントの一覧表示 |
|
| A2A JSON-RPC 2.0メッセージの受信 |
例: エージェントの検出
curl http://127.0.0.1:8001/.well-known/agent.json | python -m json.tool例: A2Aメッセージの送信
curl -s -X POST http://127.0.0.1:8001/ \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "check_member_eligibility",
"params": {"member_id": "M-1001"},
"id": "req-001",
"sender": "external-client",
"recipient": "claims-agent",
"type": "request"
}' | python -m json.toolMCPツール
請求 (Claims)
ツール | パラメータ | 説明 |
|
| 請求を一覧表示( |
|
| メンバー、医療機関、査定額を含む請求詳細 |
|
| 問い合わせチケットの送信 |
給付 (Benefits)
ツール | パラメータ | 説明 |
|
| メンバーのプランにおける免責金額および自己負担上限額の残高 |
|
| 費用負担の見積もり |
医療機関と承認 (Providers & Authorizations)
ツール | パラメータ | 説明 |
|
| 専門分野による医療機関検索 |
|
| 事前承認リクエストの送信 |
|
| 事前承認の現在のステータスを取得 |
A2Aエージェントシステム
エージェント
エージェント | ID | 役割 |
|
| 患者コーディネーター — 資格確認、医療機関検索 |
|
| 請求処理担当 — 資格確認、請求履歴、費用見積もり |
|
| ネットワーク管理者 — 医療機関検索 |
|
| 給付スペシャリスト — 費用計算 |
通信フロー
MemberAssistAgent
├─ A2A → ClaimsAgent: "check_member_eligibility"
│ ├─ MCP: list_member_claims, get_member_benefits
│ └─ MCP: get_claim_detail
│
└─ A2A → ProviderAdvocateAgent: "search_network_providers"
└─ MCP: search_providers
ClaimsAgent
└─ A2A → BenefitsAgent: "calculate_member_responsibility"
└─ MCP: estimate_member_responsibilityコード内でのエージェントの使用
import asyncio
from a2a import A2AProtocol, MemberAssistAgent, ClaimsAgent, ProviderAdvocateAgent, BenefitsAgent
async def main():
protocol = A2AProtocol()
member_assist = MemberAssistAgent(protocol, mcp_client)
claims = ClaimsAgent(protocol, mcp_client)
provider_advocate = ProviderAdvocateAgent(protocol, mcp_client)
benefits = BenefitsAgent(protocol, mcp_client)
for agent in [member_assist, claims, provider_advocate, benefits]:
await agent.register()
protocol.register_handler("check_member_eligibility", claims.handle_check_member_eligibility)
protocol.register_handler("search_network_providers", provider_advocate.handle_search_network_providers)
protocol.register_handler("calculate_member_responsibility", benefits.handle_calculate_member_responsibility)
eligibility = await member_assist.check_eligibility("M-1001")
providers = await member_assist.find_providers("primary care", "55401")
asyncio.run(main())テスト
pytest -v # all 40 tests
pytest test_a2a_communication.py # A2A protocol tests onlyテストドキュメントについては TEST_GUIDE.md を、コマンドのフィルタリングについては QUICKSTART.md を参照してください。
モックデータリファレンス
メンバー
ID | 名前 | プラン |
| Jordan Lee |
|
| Casey Patel |
|
プラン
ID | 名前 | 免責金額 | 残高 | 自己負担上限 | 残高 | ネットワーク内共同保険 |
| Optum Choice PPO | $1,500 | $420 | $5,000 | $2,100 | 20% |
| Optum Select HMO | $500 | $120 | $3,000 | $980 | 10% |
医療機関
ID | 名前 | 専門分野 | ネットワーク | 郵便番号 |
| Northside Primary Care | プライマリケア | ネットワーク内 | 55401 |
| Lakeview Ortho Clinic | 整形外科 | ネットワーク内 | 55111 |
| Metro Imaging Center | 放射線科 | ネットワーク外 | 55415 |
請求
ID | メンバー | 医療機関 | ステータス | 請求額 |
| M-1001 | PR-2001 | 支払い済み | $250.00 |
| M-1001 | PR-2003 | 保留中 | $980.00 |
| M-1002 | PR-2002 | 拒否(事前承認が必要) | $1,350.00 |
事前承認
ID | メンバー | ステータス |
| M-1002 | 承認済み |
アーキテクチャ図
ファイル | 説明 |
ドメインサーバーへルーティングするMCPゲートウェイ | |
エージェント間のA2Aメッセージング |
Mermaid Live Editor またはMermaid互換ビューアでレンダリングしてください。
MCPインスペクター
MCP Inspector は、MCPツールを対話的に呼び出すためのブラウザベースのツールです。
npm install
npm start注意事項
すべてのデータはメモリ上にあり、再起動時にリセットされます。
estimate_member_responsibilityはモックの乗数(ネットワーク内75%、ネットワーク外60%)を使用しています。支払いを保証するものではありません。PHI、外部API呼び出し、永続ストレージは含まれていません。
公式のA2A Python SDKは
a2a-sdk>=1.0.1です。本プロジェクトのa2a/モジュールは、同じプロトコルパターンを教育目的でカスタム実装したものです。
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/immannan/healthcare-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server