Skip to main content
Glama
bicatu

MCP Medical Appointments Demo

by bicatu

MCP 医療予約デモ

Model Context Protocol(ツール、リソース、プロンプト、エリシテーション、サンプリング、補完)の動作リファレンスであり、医療予約ドメインを中心に構築されています。

TypeScriptHonoMCP SDK、およびZodを使用して構築されています。

目次

機能

MCPサーバープリミティブ

プリミティブ

名前

説明

ツール

search_doctors

名前または専門分野で医師を検索

ツール

get_available_slots

特定の日付の医師の空き時間を取得

ツール

book_appointment

予約を行う(確認のためにエリシテーションを使用)

ツール

cancel_appointment

予約をキャンセルする(確認のためにエリシテーションを使用)

ツール

list_appointments

フィルターを使用して予約を一覧表示

ツール

recommend_specialist

症状に基づいた専門医の推奨(サンプリングを使用)

リソース

specialties://list

全医療専門分野の静的リスト

リソース

doctor://{doctorId}/profile

テンプレートを使用した動的な医師プロフィール

リソース

patient://{patientId}/summary

患者情報 + 予約履歴

リソース

appointment://{appointmentId}

予約の詳細

プロンプト

schedule-appointment

ガイド付き予約ワークフロー(補完機能付き)

プロンプト

patient-history

患者履歴の確認(補完機能付き)

プロンプト

triage-symptoms

症状のトリアージと専門医の推奨

MCPクライアント機能

機能

使用方法

エリシテーション

book_appointment および cancel_appointment は、実行前にユーザーに確認を求めます

サンプリング

recommend_specialist はLLMサンプリングを使用して症状と専門分野を照合します

ルート

サーバーは医療予約ワークスペースのルートを登録します

補完

プロンプトは completable() を使用して専門分野名や患者IDを自動補完します

エージェントスキル

このドメインの SKILL.md.github/skills/medical-appointments/SKILL.md に提供されています。これはMCPプロトコルを必要とせずにMCPサーバーの機能をミラーリングしており、互換性のあるエージェント(GitHub Copilot、Claude Codeなど)であればオンデマンドで読み込むことができます。

スキルがカバーするもの

スキルワークフロー

同等のMCPプリミティブ

医師の検索

search_doctors ツール

空き時間の確認

get_available_slots ツール

予約の実行

book_appointment ツール

予約のキャンセル

cancel_appointment ツール

予約の一覧表示

list_appointments ツール

専門医の推奨

recommend_specialist ツール

予約のスケジュール

schedule-appointment プロンプト

患者履歴

patient-history プロンプト

症状のトリアージ

triage-symptoms プロンプト

このスキルは、エージェントのネイティブなツールアクセスを使用して、HTTP経由でRESTサービスと直接やり取りします。

スキルの制限事項

以下のMCPサーバー機能は agentskills.io仕様 に同等のものが存在しないため、再現されていません。

MCP機能

制限事項

エリシテーション

book_appointmentcancel_appointment はMCPサーバー内でネイティブUIの確認ダイアログを使用します。スキルには同等の機能がなく、エージェントは会話を通じて確認を求めます。

サンプリング

recommend_specialist はMCPサンプリングを介してサブLLMを呼び出し、症状と専門分野を照合します。スキルはエージェント自身の推論を直接使用します(機能的には同等)。

引数の補完

MCPプロンプトは completable() を使用してクライアントUIで専門分野名や患者IDを自動提案します。スキルは対話的な補完を提供しません。

ルート

MCPサーバーはワークスペースルート (roots/list) を登録します。これはMCPトランスポートの概念であり、スキルには同等のものがありません。

VS Code固有のスキルフィールド

argument-hintuser-invocabledisable-model-invocation などのフィールドは、SKILL.md形式に対するVS Code Copilotの拡張機能です。これらはagentskills.io仕様の一部ではなく、スキルの移植性を保つために省略されています。

クイックスタート

前提条件

  • Node.js >= 22.0.0

  • GitHub Copilotを搭載したVS Code(MCP統合用)

1. REST APIのインストールと起動

npm install
npm run dev:service

以下のように表示されるはずです:

Bootstrapped: 8 specialties, 12 doctors, 5 patients
Medical Appointment Service running on http://localhost:3000

2. VS CodeでMCPサーバーを接続する

.vscode/mcp.json ファイルは既に設定済みです。VS Codeは自動的にMCPサーバーを検出し、起動を提案します。または、手動で実行してください:

npm run dev:mcp

3. 試してみる

VS CodeのCopilot Chat(エージェントモード)で、以下を試してください:

  • "Search for cardiologists"(循環器内科医を検索して)

  • "What slots does Dr. Sarah Chen have available next Monday?"(来週の月曜日にSarah Chen医師の空き時間はありますか?)

  • "Book an appointment with doc-3 for patient pat-1"(患者pat-1のためにdoc-3との予約を入れて)

  • "Show me Alice Johnson's appointment history"(Alice Johnsonの予約履歴を見せて)

  • "I've been having severe headaches and dizziness — what specialist should I see?"(ひどい頭痛とめまいがするのですが、何科を受診すべきですか?)

または、プロンプトピッカーからプロンプトを使用してください:

  • Schedule Appointment — ガイド付き予約ワークフロー

  • Patient History — 患者の受診履歴を確認

  • Triage Symptoms — 症状に基づいた専門医の照合

アーキテクチャ

┌─────────────────┐     stdio      ┌───────────────────┐     HTTP     ┌──────────────────┐
│   VS Code /     │◄──────────────►│   MCP Server      │─────────────►│  Hono REST API   │
│   MCP Client    │                │   (TypeScript)    │  localhost   │  (localhost:3000)│
└─────────────────┘                └───────────────────┘              └──────────────────┘
                                     Tools, Resources,                  In-memory store
                                     Prompts                            + JSON bootstrap

このプロジェクトは2プロセス設計を採用しています:

  1. Hono REST APIdata/ 内のJSONシードファイルからブートストラップされる、インメモリデータストアを備えたHTTPサービス。

  2. MCPサーバー — stdio経由で接続し、MCPプリミティブ(ツール、リソース、プロンプト)を通じてREST APIを公開します。

MCPサーバーはデータストアに直接触れることはなく、HTTPクライアントを介してREST APIを呼び出すことで、2つのレイヤーを明確に分離しています。

REST APIエンドポイント

メソッド

エンドポイント

説明

GET

/api/specialties

全専門分野を一覧表示

GET

/api/specialties/:id

IDで専門分野を取得

GET

/api/doctors

医師を一覧表示(フィルター: ?specialtyId=, ?name=

GET

/api/doctors/:id

IDで医師を取得

GET

/api/doctors/:id/slots?date=YYYY-MM-DD

空き時間を取得

GET

/api/patients

全患者を一覧表示

GET

/api/patients/:id

IDで患者を取得

POST

/api/patients

患者を作成

GET

/api/appointments

予約を一覧表示(フィルター: ?patientId=, ?doctorId=, ?status=, ?date=

GET

/api/appointments/:id

IDで予約を取得

POST

/api/appointments

予約を入れる

PATCH

/api/appointments/:id/cancel

予約をキャンセル

PATCH

/api/appointments/:id/complete

予約を完了

プロジェクト構造

mcp-demo/
├── data/
│   ├── specialties.json      # 8 medical specialties
│   ├── doctors.json           # 12 doctors across specialties
│   └── patients.json          # 5 sample patients
├── src/
│   ├── types.ts               # Shared domain types
│   ├── service/
│   │   ├── store.ts           # In-memory data store
│   │   ├── app.ts             # Hono app composition
│   │   ├── main.ts            # Service entry point
│   │   └── routes/            # REST route handlers
│   └── mcp/
│       ├── api-client.ts      # HTTP client for the REST API
│       ├── tools.ts           # MCP tool registrations
│       ├── resources.ts       # MCP resource registrations
│       ├── prompts.ts         # MCP prompt registrations
│       └── server.ts          # MCP server entry point
├── .vscode/
│   └── mcp.json               # VS Code MCP server config
├── package.json
└── tsconfig.json

スクリプト

コマンド

説明

npm run dev:service

ホットリロード付きでHono REST APIを起動

npm run dev:mcp

stdioモードでMCPサーバーを起動

npm run build

TypeScriptを dist/ にコンパイル

npm run typecheck

ファイルを出力せずに型チェックを実行

ドメインモデル

エンティティ

説明

Specialty

医療専門分野(循環器内科、皮膚科など)

Doctor

専門分野、空き日、勤務時間、スロット期間を持つ

Patient

名前、メールアドレス、電話番号、生年月日

Appointment

患者と医師を特定の日時で結びつけ、理由とステータスを持つ

TimeSlot

特定の日の医師の空き時間または予約済み時間枠

設定

REST APIはデフォルトでポート 3000 でリッスンします。MCPサーバーは http://localhost:3000 経由でAPIと通信し、stdio を介してVS Codeに接続します。

シードデータ(専門分野、医師、患者)は起動時に data/ ディレクトリから読み込まれます。デモデータセットをカスタマイズするには、それらのJSONファイルを編集してください。

貢献

貢献を歓迎します。リポジトリをフォークし、機能ブランチを作成してプルリクエストを送ってください。

ライセンス

MIT

-
security - not tested
F
license - not found
-
quality - not tested

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/bicatu/mcp-skills-demo'

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