Token导航 LogoToken导航

MCP Server · AI代理

MCP Cpp

一个现代C++20实现的模型上下文协议(MCP)开发工具包,提供规范的服务器/客户端实现,适用于编辑器、IDE、代理和高吞吐量服务器等场景。

未说明官方级别未说明来源级核验工具 0
C++协议实现ClaudeClaude DesktopCursor

快速开始

公开资料没有提供安装命令,按仓库或官方文档接入。
作者 / 组织
Neumann-Labs
提供方
Neumann-Labs

工具数量

0

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

57

仓库热度

收录来源

1 个

MCP World

选型结论

MCP Cpp 属于AI代理类 MCP Server,公开资料标注 0 个工具,通过传输方式未标注接入,适配 Claude Desktop、Claude、Cursor,没有现成的安装命令;接入前要先准备 OAuth 授权。

分类

AI代理

传输方式

未说明

认证方式

OAuth 授权

部署方式

公开资料未说明

安装与配置

公开目录没有给出安装命令,需要按仓库 README安装;下面按同类条目的通用流程说明。

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    先确认运行方式

    公开资料没有标注传输方式,先看仓库 README,确认是本地进程还是远程地址。

  2. 2

    获取服务

    公开目录没有给出安装命令,按仓库 README里的步骤安装或获取服务。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 0 个工具,随便调一个只读工具确认能返回结果。

接入前确认

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

公开资料仍需确认:安装命令

详细介绍

mcp-cpp

一个现代的C++20 SDK 模型上下文协议 (MCP),目标方案修订 2025-11-25.

状态: 贝塔。线格式锁定在官方MCP规范中;C++ API在1.0之前可能仍有改进。

为什么

LLM应用程序越来越需要一种统一的方式来与工具、资源和 及时的供应商。MCP就是那个协议;该SDK旨在成为一个干净、快速、, 符合规范的C++实现, 代理、本地应用程序和高吞吐量服务器。

设计目标:

  • 规格忠实。 字段名、方法名和行为与

官方TypeScript模式 逐字逐句。

  • C++20的习语。 RAII,价值语义, std::variant 对于总和类型,

异步结果的未来,没有继承层次结构,组合将 同上

  • 表面小,杠杆大。 有重点的公共API;大部分工作

发生在几个名字很好的类型后面。

  • 生产准备就绪。 消毒剂清洁,必须放在安全的地方,没有

热路径上的隐藏分配。

0.1中有什么

功能服务器客户端备注
初始化/能力协商✅✅规格2025-11-25
工具(列表、调用)✅✅文本/图像/音频内容块
资源(列表、阅读、模板、订阅/取消订阅)✅✅文本+base64 blob内容
提示(列表,获取)✅✅带有内容块的键入邮件
取样(sampling/createMessage)✅ 发起人✅ 响应者服务器发起LLM调用
根(roots/list)✅ 发起人✅ 响应者客户端文件系统作用域
竣工(completion/complete)✅✅自动补全建议
取消(notifications/cancelled)✅✅钢丝水平支撑
进展(notifications/progress)✅✅类型化令牌+处理程序
日志记录(notifications/message, logging/setLevel)✅✅RFC-5424级别
Ping(ping)✅✅双向活性
分页✅✅可配置页面大小
stdio 运输✅✅规范正确的框架
可流式HTTP传输✅✅POST+SSE GET流+会话ID
任务(tasks/get/result/list/cancel,状态通知)✅✅增强 tools/call 通过 task 场;规格2025-11-25
激励(elicitation/create,表单+url模式)✅ 发起人✅ 应答器规范2025-11-25
OAuth 2.1授权(HTTP)✅✅承载+RFC 9728受保护的资源元数据

快速启动

最小服务器

#include 

int main() {
    mcp::Server server{
        mcp::Implementation{.name = "calc", .version = "1.0.0"},
    };

    server.tool("add",
        nlohmann::json{
            {"type", "object"},
            {"properties", {
                {"a", {{"type", "number"}}},
                {"b", {{"type", "number"}}},
            }},
            {"required", nlohmann::json::array({"a", "b"})},
        },
         -> mcp::CallToolResult {
            const double a = args.at("a").get();
            const double b = args.at("b").get();
            return {
                .content = { mcp::TextContent{.text = std::to_string(a + b)} },
            };
        });

    server.run(std::make_unique());
}

从支持MCP服务器的主机上运行(Claude Desktop、Cursor、官方 通过指向得到的二进制文件。Stderr是你的 诊断;stdout是为JSON-RPC流保留的。

最小客户

#include 

int main() {
    auto pair = /* spawn the server, wire its stdio to a transport */;

    mcp::Client client{
        mcp::Implementation{.name = "my-app", .version = "0.1.0"},
    };
    client.connect(std::move(pair.transport));

    auto info = client.initialize().get();
    std::cout (&out.content[0])) {
        std::cout text (topts));
auto info = client.initialize().get();
auto out  = client.call_tool("add", {{"a", 1}, {"b", 2}}).get();

两者 examples/http_calculator_server (绑定127.0.0.1:8080通过 默认值)和stdio examples/calculator_server 船与 建造。

一个不平凡的演示:助手的持久笔记

examples/mcp_notes_server 是一个SQLite+FTS5草稿行,它提供 Claude(或任何MCP客户端)持久、全文可搜索内存 跨届会议。将其插入克劳德桌面/Claude Code并询问 “将我的Postgres-prod连接字符串保存在db.prod下”--它是 下次你打开聊天时。搜索“postgres”,你会得到一个 BM25排名片段命中率。Glob删除通过规范 启发式原语,因此人类之前会得到一个是/否提示 任何东西都被抹去了。

建造它(libsqlite3-dev 在Linux上,随macOS附带):

cmake -S . -B build -DMCP_BUILD_EXAMPLES=ON
cmake --build build --target mcp_notes_server

看 examples/mcp_notes_server/README.md 为了电线。

服务器发起的LLM调用(采样)

一种常见的代理模式是让工具要求宿主应用程序进行 代表其发出法学硕士电话。

server.tool("ask", schema,
    [&server](const nlohmann::json& args) -> mcp::CallToolResult {
        auto resp = server.sample(mcp::CreateMessageRequestParams{
            .messages = {
                mcp::SamplingMessage{
                    .role    = mcp::Role::user,
                    .content = mcp::TextContent{.text = args["q"]},
                },
            },
            .max_tokens = 512,
        }).get();
        return {
            .content = { mcp::TextContent{
                .text = std::get(resp.content).text,
            }},
        };
    });

客户端插入一个执行实际LLM调用的采样处理程序:

client.set_sampling_handler(
     -> mcp::CreateMessageResult {
        // ...invoke your LLM provider with `req.messages` etc...
        return {
            .role    = mcp::Role::assistant,
            .content = mcp::TextContent{.text = "..."},
            .model   = "claude-3-5-sonnet-20241022",
        };
    });

Session在工作线程上分派入站请求,因此调用 server.sample(...).get() 从工具处理程序内部来看是安全的——它不是 僵局。

建筑

cmake -B build -G Ninja
cmake --build build
ctest --test-dir build --output-on-failure

构建选项

选项默认值效果
MCP_BUILD_TESTSON构建GTest测试套件。
MCP_BUILD_EXAMPLESON构建示例服务器/客户端。
MCP_WARNINGS_AS_ERRORSON\*将警告升级为错误(仅限顶级)。
MCP_USE_SYSTEM_DEPS关闭find_package 而不是 FetchContent.
MCP_ENABLE_HTTPON构建可流式HTTP传输(cpp-httplib)。
MCP_ENABLE_ASAN关闭-fsanitize=address,undefined.
MCP_ENABLE_TSAN关闭-fsanitize=thread.
MCP_ENABLE_COVERAGE关闭--coverage 对于gcov/llvm-cov。

\*当这是顶级项目时,默认为ON;通过以下方式消费时关闭 add_subdirectory.

消耗图书馆

CMake find_package

之后 cmake --install build,下游项目可以做到:

find_package(mcp REQUIRED)
target_link_libraries(my_app PRIVATE mcp::mcp)

add_subdirectory /获取内容

include(FetchContent)
FetchContent_Declare(mcp
    GIT_REPOSITORY https://github.com/Neumann-Labs/mcp-cpp.git
    GIT_TAG        main)
FetchContent_MakeAvailable(mcp)

target_link_libraries(my_app PRIVATE mcp::mcp)

60秒内完成架构

                  +-----------------+
   application -> | Server / Client | <- public façade
                  +-----------------+
                          |
                  +-----------------+
                  |     Session     | <- JSON-RPC dispatch +
                  +-----------------+    request/response correlation
                          |
                  +-----------------+
                  |   Transport     | <- byte shovel (StdioTransport,
                  +-----------------+    Streamable HTTP, in-memory pair)
                          |
                          v
                       wire
  • 运输 是一个小型抽象界面:它铲出框架;会议

解析它们。

  • 会话 拥有请求id生成器、待定请求映射、

请求/通知调度表和超时扫描。都一样 线路两侧的类——服务器和客户端只是注册不同 处理程序和调用不同的便利方法。

  • 服务器/客户端 是薄立面:它们将键入的C++值转换为

JSON-RPC框架和背面,暴露 tool() / resource() / prompt() / sample() / list_tools() /并且各自拥有一个会话。

线程

  • 传输在自己的线程上读取并调用会话的

在消息回调时。

  • 入站 *请求:* 被分派到一个分离的工作线程,因此用户

处理程序本身可以在同一会话上发出进一步的请求 (例如。 server.sample(...).get() 从工具处理器内部)。 Session::close() 等那些工人做完再撕 成员下降。

  • 入站 *通知* 和 *回应* 直接在read线程上运行。
  • send_request / send_notification 从任何线程调用都是安全的。

许可证

Apache 2.0——请参阅 许可证.

工具与能力

工具数量

0

资源数量

0

提示词数量

0

能力标签

C++本地部署C++开发工具包协议实现LLM集成多线程安全HTTP/Stdio传输

支持客户端

Claude DesktopClaudeCursor

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

多步任务编排

把拆解、检索、执行串成一条链,模型按步骤调用工具。

长期上下文

把会话、笔记和知识放到外部存储,换个会话还能接着做。

接自有流程

把内部系统和模型连起来,让助手调用已有的工作流。

选择建议

值得选的地方

  • 只提供 0 个工具,职责集中,接入后不容易误操作。
  • 已经适配 Claude Desktop、Claude、Cursor,换客户端不用重新研究配置。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • 公开资料没有可直接复制的安装命令,第一次接入要自己找入口。
  • 需要自备OAuth 授权,没有凭据没法直接试。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在AI代理场景里让模型直接调用外部能力的人。
  • 已经在用 Claude Desktop 的用户,接入路径最短。
  • 愿意照着官方文档一步步配环境的人。

不太适合

  • 暂时拿不到OAuth 授权的人。
  • 希望一条命令就装好、不想看文档的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
MCP Cpp

MCP World · 本页

0未说明未标注1 个2026-05-17
Everything Claude Code

MCP World

0stdio有1 个2026-05-17
Filesystem 560c4363

MCP World

13未说明未标注2 个2026-05-17
Time 7365cb6d

MCP.so

2SSE有2 个2026-05-17
Server Everything (everything)

MCP World

11stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

MCP Cpp 怎么安装?

公开目录没有给出可以直接复制的安装命令,需要按仓库 README里的步骤安装;装好后写进客户端的 MCP 配置再重启。

MCP Cpp 怎么在 Claude Desktop、Cursor 里配置?

它是传输方式未标注,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

MCP Cpp 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

MCP Cpp 需要 API Key 吗?

公开资料标注的认证方式是OAuth 授权,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

MCP Cpp 支持哪些客户端?

公开资料标注支持 Claude Desktop、Claude、Cursor;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP