TinyMCP 是一个用于实现 MCP 服务器的轻量级 C++ SDK。
MCP 是一个开放协议,标准化了应用程序如何向大语言模型提供上下文。可以将 MCP 想象成 AI 应用程序的 USB-C 接口。就像 USB-C 提供了一种标准方式来连接设备到各种外设和配件一样,MCP 提供了一种标准方式来连接 AI 模型到不同的数据源和工具。
请参阅 wiki 获取更多信息。
| 目录 | 简介 |
|---|---|
| Public | SDK 公共目录,用于存储全局类型定义、全局常量资源、辅助类等。 |
| Message | 定义和实现 MCP 协议的基本数据结构,主要包括遵循 JSON-RPC 2.0 协议的标准请求、响应和通知等协议数据的实现。 |
| Session | 定义和实现 MCP 协议交互会话,主要包括基于 C/S 架构的状态化会话实现以及完整的 MCP 会话生命周期管理(初始化阶段、运行阶段和关闭阶段)。 |
| Transport | 基于 C/S 架构的各种端点之间的数据传输通道定义,也包括默认 stdio 传输通道的实现。 |
| Task | 定义和实现各种 MCP 任务,例如初始化阶段的三次握手和能力协商任务,以及处理主要请求如 Prompts(尚未实现)、Resources(尚未实现)、Tools(已实现)等的任务。耗时任务异步执行,普通任务同步执行。 |
| Entity | 定义 MCP 各种协议实体类,主要包括遵循单例模式的 Server 基类。 |
尽管并非所有的 MCP 功能都已实现,但对于 Tools 类型的 MCP 服务器已经足够。
| 功能 | 备注 | 是否支持 |
|---|---|---|
| 基础协议 | 核心 JSON-RPC 消息类型 | 是 |
| 生命周期管理 | 连接初始化、能力协商和会话控制 | 是 |
| 传输 | stdio | 是 |
| 取消 | 通过通知消息取消正在进行中的请求。 | 是 |
| 进度 | 通过通知消息跟踪长时间运行操作的进度。 | 是 |
| 工具 | 工具使模型能够与外部系统进行交互,例如查询数据库、调用 API 或执行计算。 | 是 |
| 分页 | 分页允许服务器以较小的数据块提供结果,而不是一次性全部提供。 | 是 |
| 传输 | 带有服务端发送事件(SSE)的 HTTP | 尚未实现 |
| 心跳 | 允许任一方验证对方仍然响应且连接活跃的心跳机制。 | 尚未实现 |
| 资源 | 资源允许服务器共享为语言模型提供上下文的数据,例如文件、数据库模式或应用特定信息。 | 尚未实现 |
| 提示 | 提示允许服务器提供与语言模型交互的结构化消息和指令。 | 尚未实现 |
| 补全 | 一种标准化的方式,让服务器为提示和资源 URI 提供参数自动补全建议。 | 尚未实现 |
| 日志 | 一种标准化的方式,让服务器向客户端发送结构化的日志消息。 | 尚未实现 |
TinyMCP 在 MIT 许可证下发布 - 查看 LICENSE 文件获取详细信息。