APPointme MCP 服务端实现
- 项目简介
- 该仓库在 mcp-server 目录下实现了一个 MCP 服务器端,使用 Model Context Protocol(MCP)SDK 提供资源管理、工具注册与执行、以及 Prompt 渲染等核心能力,供 LLM 客户端在对话中获取上下文并调用外部功能。
- 主要功能点
- MCP 服务器核心:通过 MCP SDK 启动服务器、注册工具并对外提供 JSON-RPC 风格的调用接口。
- 工具注册与执行:实现 list_event_types、get_free_slots、book_appointment、search_users 等工具,处理输入参数、调用外部后端 API,返回结构化文本内容或错误信息。
- 资源与数据访问:通过后端 API 与数据库交互获取事件、用户、日历等数据,为 LLM 提供数据上下文。
- Prompts/模板能力:服务器端具备渲染与提供提示/模板能力,便于 LLM 与后端进行协作。
- 多传输协议支持:可在 STDIO 模式下运行,也可通过 SSE/HTTP 传输实现网络化 MCP 通信。
- 会话与能力声明:实现服务器初始化、能力声明及会话管理,确保客户端在会话中获得一致的上下文服务能力。
- 安装与运行
- 依赖与构建:在 mcp-server 目录下,通过项目自带的构建配置安装依赖(如 vitest 配置用于测试,实际运行需构建输出)。
- 运行模式:
- STDIO 模式(默认):直接使用标准输入/输出进行 MCP 消息传输。
- HTTP/SSE 模式(推荐用于生产):设置 TRANSPORT 为 sse,启动一个 HTTP 服务,监听端口并在 /mcp 路径处理 MCP 请求。
- 启动示例(简述,不包含具体命令行参数细节,给出操作思路):
- 选择传输模式:若希望通过 HTTP/SSE 进行通信,配置并启动服务器监听端口;若仅在进程间通信,可使用 STDIO。
- 启动后,客户端可通过 MCP 标准的请求格式向服务器读取资源、调用工具、获取 prompts 等。
- 服务器配置与客户端配接
- MCP 客户端需要的配置(JSON,示意性说明,不提供具体代码): { "serverName": "appoint-me-mcp", "command": "node", "args": ["path/to/启动脚本/index.js", "--transport=sse", "--port=3000"] }
- 注释:该配置用于 MCP 客户端在启动阶段连接到 MCP 服务器的启动命令和参数,便于自动化部署和对接。
- 基本使用方法
- 连接:通过 JSON-RPC 规范向 MCP 服务器发送请求,包含读取资源、执行工具、获取 Prompts 等操作。
- 工具使用:LLM 通过 tool 调用机制执行 list_event_types、get_free_slots、book_appointment、search_users 等功能,获取结构化文本或错误信息。
- 安全与会话:服务器端负责会话管理与能力声明,确保多轮对话中的上下文隔离与权限控制。
- 部署与扩展:服务器具备可扩展性,便于新增资源类型、工具与 Prompt 模板,配合后端数据源完成更丰富的上下文服务。