advancedmd-connector
advancedmd-connector
advancedmd-connector は、組織内で AdvancedMD と通信する唯一のプロセスです。AdvancedMD データのすべてのコンシューマー(バックエンドワークフローの appointment-validator、srt-auths、note-audit、patient-intake、admin-console の資格情報チェック、および AI エージェント(Adam と任意の Claude Code、Cursor、Desktop エージェント))は、HTTP または MCP 経由でツール呼び出しを送信し、JSON 結果を受け取ります。このコネクタだけが AdvancedMD の資格情報、ログインセッション、レートクロックを保持します。
現在、15 のプロセスがそれぞれ AdvancedMD の資格情報を保持し、独立してログインし、AdvancedMD のオフィスキーごとの上限(超過呼び出しごとに $0.01 を請求し、約 1 分に 1 回以上のログインを拒否する)に対して独立してレート制限を行っています。コネクタは、セッションとクロックを中央で一元管理することでこれを修正します。1 つのプロセス、1 つのレートクロック、1 つのツールサーフェス、既存のすべてのコンシューマに対してツール名と結果の形状は変更されません。完全な契約については SPEC.md を、各選択の理由については docs/CONNECTOR_DECISIONS.md を参照してください。
アーキテクチャ
backend workflows ------ JSON tool call ------> +-----------------------------+
(validator, srt-auths, | advancedmd-connector |
note-audit, intake, | |
admin-console, chatbot) | HTTP API MCP surface |
| \ / |
agents ----------------- MCP tool call -------> | receivers (one per |
(Adam via remote MCP; | open request) |
Cursor, Claude Code, | | |
Desktop via stdio shim | entry queue |
or remote MCP) | | |
| worker loop (1 at a |
| | time) |
| handler |
| | |
| request queue |
| | |
| sender loop (clock, |
| | session) |
+----------|------------------+
| XML over HTTPS
v
AdvancedMD1 つのプロセス。1 つのポート(デフォルト 8820)。破線のボックスより上はすべてコンシューマです。ボックスの外側で AMD 資格情報を保持したり XML を送信したりするものはありません。
Related MCP server: Enterprise MCP Gateway and Tool Registry
5 つのコマンドでローカル実行
cp .env.example .env # fill AMD_USERNAME, AMD_PASSWORD, AMD_OFFICE_KEY
pip install -e ".[dev]"
export $(cat .env | grep -v '^#' | xargs) CONNECTOR_TOKENS_PATH=/tmp/tokens.json
connector tokens add myapp --priority interactive --tools '*' # prints a token once
uvicorn --factory connector.app:build_app --host 0.0.0.0 --port 8820GET http://localhost:8820/health は、最初のログイン試行が完了すると {"status": "starting"} または "ok" を返すはずです。docker compose up --build は同じものをコンテナ化して実行し、同じ .env を読み取ります。
エージェントを接続する
ツール名、引数スキーマ、および編集済みの結果形状は、3 つの接続方法すべてで同一です(SPEC 12.1)。そのため、エージェント設定はプロンプトを変更せずに別の方法へ移行できます。
リモート MCP(ホスト型エージェント、例: Adam)— コネクタのストリーミング HTTP サーフェスを直接指定します:
{"mcpServers": {"amd-patients": {"type": "http",
"url": "http://advancedmd-connector:8820/mcp/patients",
"headers": {"Authorization": "Bearer <agent token>"}}}}10 のルートが提供されます: /mcp/patients、/mcp/visits、/mcp/providers、/mcp/codes、/mcp/billing、/mcp/payments、/mcp/masterfiles、/mcp/system、/mcp/ehr、/mcp/all(和集合)。
ローカル stdio シム(ワークステーション上のエージェント)— 公開済みの advancedmd-mcp パッケージをインストールし、ネットワーク経由でコネクタを指定します。資格情報もツールロジックも保持しません:
{"mcpServers": {"amd-patients": {"command": "uvx",
"args": ["advancedmd-mcp", "--domain", "patients"],
"env": {"ADVANCEDMD_CONNECTOR_URL": "http://100.94.62.115:8820",
"ADVANCEDMD_CONNECTOR_TOKEN": "<agent token>"}}}}Claude Code プラグイン — plugin/ は、${ADVANCEDMD_CONNECTOR_URL} と ${ADVANCEDMD_CONNECTOR_TOKEN} の環境変数参照を使用して、9 つの stdio サーバーすべてを宣言します:
claude plugin add <path or repo>/plugin同じ plugin/.mcp.json は、コピーにより Cursor および Claude Desktop でも有効です。
ワークフローから使用する
バックエンドの Python サービスは、orlando-derm-backend/lib/advancedmd_connector/ の SDK を使用します。この SDK は、既存のすべてのメソッド名と型付き結果を維持します:
from lib.advancedmd_connector import AmdConnector
connector = AmdConnector.from_env() # ADVANCEDMD_CONNECTOR_URL, ADVANCEDMD_CONNECTOR_TOKEN
bundle = await connector.get_patient_bundle(patient_id)
result = await connector.tool("getdemographic", patient_id=patient_id) # generic callSDK は AMD 資格情報、XML、AMD URL を保持しません。HTTP のみです。完全なメソッドテーブルと例外マッピングについては SPEC 13 を参照してください。
トークンを発行する
トークンは、バンドルされた connector CLI を使用してトークンテーブルファイル(CONNECTOR_TOKENS_PATH)に対して発行および失効されます:
connector tokens add appointment-validator --priority batch --tools '*'
connector tokens add my-agent --priority interactive --tools getdemographic,lookuppatient
connector tokens list
connector tokens revoke my-agent平文トークンは発行時に一度だけ印刷され、保存も復元もできません。完全なフラグリファレンスは docs/OPERATIONS.md、トークンモデルは docs/TOKENS.md を参照してください。
遅いときに確認すべき場所
GET /health(トークン不要、内部ネットワークのみ)— セッション状態、エントリーキューの深さと最長待機時間、リクエストキューの深さ、およびレートクロックのティア別使用量/制限を 1 回の呼び出しで確認できます。GET /metrics(トークン不要)— Prometheus テキスト: 呼び出し元/ツール/結果別のツール呼び出し数と待機ヒストグラム、ティア別の AMD リクエスト数とポスト時間ヒストグラム、ティア別のクロック使用/制限/スリープ時間、再ログインおよびログイン拒否カウンター、キューの深さ。完全なメトリクスリストは SPEC 18、アラート条件は SPEC 18.2 を参照してください。AMD の応答が遅くても
/healthを遅延させてはなりません — 送信ループと/healthは同じイベントループ上で実行されますが、ブロッキング I/O は禁止されているため(SPEC 4.4)、ハングした AMD 呼び出しは/healthの応答不能としてではなく、クロック/キューの圧力として/healthに現れます。
バッチスケジュール
コネクタ自体はバッチジョブを実行しません。バッチ優先度の呼び出し元が送信するものを直列化するだけです。現在スケジュールされているコンシューマ(SPEC 22 移行テーブル)は、appointment-validator(夜間 1 回)、srt-auths(スキャンとイベント実行)、note-audit(毎日 1 回)です。バッチ優先度のリクエストは、BATCH_AGING_MS(デフォルト 60 秒)後に昇格してエージングされるため、長いバッチバックログが対話型呼び出しを無期限に飢餓させません(SPEC 5.3)。ただし、再起動するとインメモリセッションが失われるため(SPEC 16.3)、デプロイはこれらのウィンドウを避ける必要があります。
関連資料
SPEC.md — 完全なビルド契約。
docs/CONNECTOR_DECISIONS.md — 各選択の理由。
docs/API.md — HTTP API(SPEC 11 からミラーリング)。
docs/OPERATIONS.md — トークン CLI、デプロイ、ロールバック、アラート、フィクスチャ手順。
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Unified MCP Server is a remote MCP connector for AI agents and vertical AI products that provides access to 22,000+ authorized SaaS tools across 400+ integrations and 24 categories directly inside LLMs (Claude, GPT, Gemini, Cohere). Tools operate only on explicitly authorized customer connections, enabling agents to safely read and write against live third-party systems.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Related MCP Servers
- FlicenseAqualityFmaintenanceMCP server that exposes 300+ AI agents as tools via a single API key. Supports listing agents, invoking any agent with chat-completion style messages, checking agent health, and retrieving platform statistics.54-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to discover and execute tools via a secure MCP server with JWT authentication, RBAC, rate limiting, and audit logging.1MIT
- AlicenseNot gradedqualityCmaintenanceA universal MCP server for registering internal, external, and OpenAPI-based APIs as MCP tools. It exposes them to MCP clients via Streamable HTTP and provides admin portal, RBAC/session auth, credential injection, and audit logging.Academic Free v1.1
- FlicenseNot gradedqualityCmaintenanceAn MCP server that enables LLMs to securely query synthetic clinical data through validated, scoped tools (patient summaries, conditions, medications, lab trends, encounters) while maintaining audit logs and access controls.-