MCP Medical Appointments Demo
MCP 医疗预约演示
一个关于 Model Context Protocol 的工作参考实现——涵盖工具、资源、提示词、启发式交互、采样和补全——围绕医疗预约调度领域构建。
使用 TypeScript、Hono、MCP SDK 和 Zod 构建。
目录
功能
MCP 服务器原语
原语 | 名称 | 描述 |
工具 |
| 按姓名或专业搜索医生 |
工具 |
| 获取医生在某日的可预约时间段 |
工具 |
| 预订预约(使用启发式交互进行确认) |
工具 |
| 取消预约(使用启发式交互进行确认) |
工具 |
| 带过滤条件列出预约 |
工具 |
| 基于症状的专家推荐(使用采样) |
资源 |
| 所有医疗专业的静态列表 |
资源 |
| 带有模板的动态医生资料 |
资源 |
| 患者信息 + 预约历史 |
资源 |
| 完整的预约详情 |
提示词 |
| 指导式预约调度工作流(带有补全) |
提示词 |
| 患者历史记录回顾(带有补全) |
提示词 |
| 症状分诊和专家推荐 |
MCP 客户端功能
功能 | 使用方式 |
启发式交互 |
|
采样 |
|
根目录 | 服务器为医疗预约工作区注册一个根目录 |
补全 | 提示词使用 |
代理技能
此领域的 SKILL.md 位于 .github/skills/medical-appointments/SKILL.md。它镜像了 MCP 服务器的功能,而无需 MCP 协议——任何兼容的代理(GitHub Copilot、Claude Code 等)都可以按需加载它。
技能涵盖内容
技能工作流 | 等效的 MCP 原语 |
查找医生 |
|
检查空闲时间段 |
|
预订预约 |
|
取消预约 |
|
列出预约 |
|
推荐专家 |
|
调度预约 |
|
患者历史记录 |
|
症状分诊 |
|
该技能使用代理的原生工具访问权限,直接通过 HTTP 与 REST 服务交互。
技能限制
以下 MCP 服务器功能在 agentskills.io 规范 中没有等效项,因此未进行复制:
MCP 功能 | 限制 |
启发式交互 |
|
采样 |
|
参数补全 | MCP 提示词使用 |
根目录 | MCP 服务器注册工作区根目录 ( |
VS Code 特定技能字段 |
|
快速入门
前置要求
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:30002. 在 VS Code 中连接 MCP 服务器
.vscode/mcp.json 文件已配置好。VS Code 将自动检测并提示启动 MCP 服务器。或者,手动运行它:
npm run dev:mcp3. 试用
在 VS Code 的 Copilot Chat(代理模式)中,尝试:
“搜索心脏病专家”
“Sarah Chen 医生下周一有哪些空闲时间段?”
“为患者 pat-1 预订 doc-3 的预约”
“向我展示 Alice Johnson 的预约历史”
“我一直头痛和头晕——我应该看什么科室的医生?”
或者使用提示词选择器中的提示词:
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该项目使用双进程设计:
Hono REST API — 带有内存数据存储的 HTTP 服务,从
data/中的 JSON 种子文件引导。MCP 服务器 — 通过 stdio 连接,并通过 MCP 原语(工具、资源、提示词)暴露 REST API。
MCP 服务器从不直接接触数据存储——它通过 HTTP 客户端调用 REST API,保持两层之间的清晰分离。
REST API 端点
方法 | 端点 | 描述 |
|
| 列出所有专业 |
|
| 按 ID 获取专业 |
|
| 列出医生(过滤器: |
|
| 按 ID 获取医生 |
|
| 获取空闲时间段 |
|
| 列出所有患者 |
|
| 按 ID 获取患者 |
|
| 创建患者 |
|
| 列出预约(过滤器: |
|
| 按 ID 获取预约 |
|
| 预订预约 |
|
| 取消预约 |
|
| 完成预约 |
项目结构
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脚本
命令 | 描述 |
| 启动带有热重载的 Hono REST API |
| 以 stdio 模式启动 MCP 服务器 |
| 将 TypeScript 编译到 |
| 进行类型检查而不生成文件 |
领域模型
实体 | 描述 |
Specialty | 医疗专业(心脏病学、皮肤病学等) |
Doctor | 拥有专业、可用日期、工作时间和时间段时长 |
Patient | 姓名、电子邮件、电话、出生日期 |
Appointment | 将患者与医生在特定日期/时间关联,并带有原因和状态 |
TimeSlot | 医生在特定日期的空闲或已预订时间窗口 |
配置
REST API 默认监听 3000 端口。MCP 服务器通过 http://localhost:3000 与 API 通信,并通过 stdio 连接到 VS Code。
种子数据(专业、医生、患者)在启动时从 data/ 目录加载。编辑这些 JSON 文件以自定义演示数据集。
贡献
欢迎贡献。Fork 仓库,创建功能分支,并提交 Pull Request。
许可证
MIT
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/bicatu/mcp-skills-demo'
If you have feedback or need assistance with the MCP directory API, please join our Discord server