Token导航 LogoToken导航TokenDH.com
tiny MCP logo
AI代理未说明官方级别未说明来源级核验

tiny MCP

MCP Server

一个用于构建MCP(模型上下文协议)工具服务器的轻量级C++框架,支持JSON-RPC 2.0协议、工具注册、模式生成和调度。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
C++类型安全ClaudeClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

jkerdels

提供方

jkerdels

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

微型mcp

用于构建的最小C++框架 主控程序 (模型上下文协议)工具服务器。它处理JSON-RPC 2.0协议、工具注册、模式生成和调度,因此您可以专注于编写工具。

特性

  • 类型安全工具登记 --将工具参数定义为 std::tupleToolParam<> 类型;输入模式在编译时自动生成。
  • JSON-RPC 2.0 --初始化握手, tools/list, tools/call,并内置了错误处理功能。
  • stdio传输 --从stdin读取JSON-RPC,将响应写入stdout。没有HTTP,没有套接字。
  • 单一依赖关系 --只需要 nlohmann/json,通过CMake自动获取。

快速开始

1.将微型mcp添加到您的项目中

在你的 CMakeLists.txt:

include(FetchContent)

FetchContent_Declare(
    tiny_mcp
    GIT_REPOSITORY https://github.com/jkerdels/tiny-mcp.git
    GIT_TAG        main
)
FetchContent_MakeAvailable(tiny_mcp)

target_link_libraries(your-server PRIVATE tiny-mcp::tiny-mcp)

2.编写服务器

#include 
#include 

int main() {
    McpToolServer server("my-server", "0.1.0");

    // Define a tool with typed parameters
    using GreetParams = std::tuple
    >;

    server.tools().register_tool(
        "greet",
        "Say hello to someone",
        [](GreetParams& p) -> std::expected {
            return "Hello, " + std::string(std::get(p)) + "!";
        }
    );

    // Main loop: read JSON-RPC from stdin, write responses to stdout
    json message;
    try {
        while (std::cin >> message) {
            auto response = server.handle_message(message);
            if (response) {
                std::cout ,
    ToolParam,
    ToolParam
>;

server.tools().register_tool
(
    "search",
    "Search for items",
    [](Params& p) -> std::expected {
        auto& query = std::get(p);  // std::string
        auto& limit = std::get(p);  // int
        auto& exact = std::get(p);  // bool
        // ... your logic here ...
        if (query.value.empty())
            return std::unexpected("query must not be empty");
        return "results";
    }
);

工具回调返回 std::expected.返回一个plain std::string 成功(隐含转换),或 std::unexpected("reason") 以向主叫代理发回工具错误信号。

支持的参数类型: std::string, int, bool, double.

输入模式(JSON模式)是从以下内容自动生成的 ToolParam 声明——不需要手动JSON。

反向通道通知

微型mcp支持 服务器发起的事件:服务器可以将消息推送到代理,而无需代理轮询。这是通过利用长轮询模式来实现的——后台子代理调用 backchannel_event 该工具会一直阻塞,直到服务器有东西要交付。

启用反向通道

// In your server setup, before entering the main loop:
server.enable_backchannel();          // unbounded queue, writes to stdout
// or
server.enable_backchannel(out, 64);  // ring-buffer of 64 events, custom ostream

这会自动注册两个工具:

  • backchannel_event --长民意调查工具。代理调用此命令并等待。
  • backchannel_usage --返回代理的使用说明。

从服务器发出事件

server.emit_backchannel_event("something happened");
  • 如果 backchannel_event 呼叫处于挂起状态,立即写入响应并清除挂起的呼叫。
  • 如果没有待处理的呼叫,则消息被排队。下一个 backchannel_event 打电话给 include_queued=true (默认)将清空队列并立即返回。

代理侧模式

代理应启动一个调用的后台子代理 backchannel_event 然后等待。当它返回时,前台代理处理事件并重新启动后台子代理。这 backchannel_usage 该工具详细描述了这种模式。

权限:Claude Code子代理不会自动继承MCP工具权限。如果没有明确的分配,背景子代理的 backchannel_event 呼叫将被拒绝。将工具(或服务器上所有工具的通配符)添加到项目的 .claude/settings.local.json: ``json { "permissions": { "allow": ["mcp__your-server-name__*"] } } ``

环形缓冲区语义

max_queue_size (默认值0=无界)为队列设置上限。当已满时,最旧的条目将被删除(最旧的删除策略)。

示例

examples/notes/ 一个完整的工作示例:一个简单的笔记存储服务器 add_note, get_note,以及 list_notes 工具。

cd examples/notes
mkdir build && cd build
cmake .. && cmake --build .

需求

  • C++23
  • CMake 3.14+

目录标签

目录标签

C++类型安全Claude本地部署C++框架JSON-RPC工具服务器MCP协议

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP