MCP协议SDK

TinyMCP是一个轻量级的C++ SDK,用于实现MCP服务器,支持多种系统平台,并提供标准化的AI模型连接方式。

  • by JoshuaNocturne
  • C++
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 JoshuaNocturne/TinyMCP

使用说明

# TinyMCP

备注:此存储库是从 https://github.com/Qihoo360/TinyMCP

TinyMCP是什么?

TinyMCP是一个轻量级的C++SDK,用于实现MCP服务器。

什么是MCP?

MCP是一个开放协议,它规范了应用程序如何向LLM提供上下文。将MCP想象成AI应用程序的USB-C端口。正如USB-C提供了一种将设备连接到各种外围设备和配件的标准化方式一样,MCP提供了一个将AI模型连接到不同数据源和工具的标准化方法。

详情参考

TinyMCP支持的系统平台

  • 视窗
  • Linux
  • MacOS
  • 安卓
  • 其他支持标准c++的平台。..

如何构建

TinyMCP是用CMake构建的。您可以使用以下命令构建它:

git clone --recurse-submodules https://github.com/JoshuaNocturne/TinyMCP.git
cd TinyMCP && mkdir build && cd build
cmake ..
make

使用指南

请检查 维基 了解更多信息。

依赖项

jsoncpp httplib spdlog

MCP协议版本

MCP规范2024-11-05

代码结构简述

目录 简介
Public SDK公共目录,用于存储全局类型定义、全局常量资源、辅助类等。
消息 MCP协议基本数据结构的定义和实现,主要包括遵循JSON-RPC 2.0协议的标准请求、响应和通知等协议数据的实现。
会话 MCP协议交互会话的定义和实现,主要包括基于C/S架构的有状态会话的实现和完整MCP会话生命周期(初始化阶段、运行阶段和关闭阶段)的维护。
传输 基于C/S架构的各种端点之间的数据传输通道的定义,其中还包括默认stdio传输通道的实现。
任务 各种MCP任务的定义和实现,例如初始化阶段的三次握手和能力协商任务,以及Prompts(尚未实现)、Resources(尚未实现的)、Tools(已经实现的)等主要请求的处理任务。耗时的任务是异步执行的,而普通任务是同步执行的。
Entity MCP各种协议实体类的定义,主要包括遵循Singleton模式的服务器基类。

功能支持简介

虽然并非所有MCP功能都已实现,但对于工具类型的MCP服务器来说,这已经足够了。

功能 备注 是否支持
基础协议 核心JSON-RPC消息类型 是
生命周期管理 连接初始化、能力协商和会话控制 是
交通 stdio 是
取消 通过通知消息取消正在进行的请求。 是
进度 通过通知消息跟踪长时间运行的操作的进度。 是
工具 工具使模型能够与外部系统交互,例如查询数据库、调用API或执行计算。 是
分页 分页允许服务器以较小的块生成结果,而不是一次生成所有结果。 是
传输 HTTP与服务器发送事件(SSE) 是
Ping Ping机制,允许任何一方验证其对方是否仍在响应,以及连接是否处于活动状态。 是
资源 资源允许服务器共享为语言模型提供上下文的数据,如文件、数据库模式或特定于应用程序的信息。 还没有
提示 提示允许服务器提供结构化消息和指令,以便与语言模型进行交互。 还没有
完成 服务器为提示和资源URI提供参数自动完成建议的标准化方法。 尚未
日志记录 服务器向客户端发送结构化日志消息的标准化方法。 还没有

许可证

TinyMCP根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。