Token导航 LogoToken导航TokenDH.com
cpp MCP logo
开发工具未说明官方级别未说明来源级核验

cpp MCP

MCP Server

一个实现Model Context Protocol(MCP)的C++ SDK,支持stdio传输和进程生成,适用于需要交互式用户输入请求的开发场景。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
C++开发工具命令行工具

安装说明

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

作者 / 组织

MKAbdElrahman

提供方

MKAbdElrahman

最后核验

2026/5/17 20:22

快速接入

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

详细介绍

MCP C++ SDK(MCP C++软件开发工具包)

C++语言的实现 模型上下文协议 (MCP) 支持完整的标准I/O传输,包括进程创建。

安装

使用 CMake 的 FetchContent 功能

将MCP SDK添加到您的CMake项目中:

include(FetchContent)

FetchContent_Declare(
    mcp-sdk
    GIT_REPOSITORY https://github.com/MKAbdElrahman/cpp-mcp-sdk.git
    GIT_TAG main
)

FetchContent_MakeAvailable(mcp-sdk)

# Link to your target
target_link_libraries(your_target PRIVATE mcp)

# Include headers
target_include_directories(your_target PRIVATE ${mcp-sdk_SOURCE_DIR}/include)

手动构建和安装

git clone https://github.com/MKAbdElrahman/cpp-mcp-sdk.git
cd cpp-mcp-sdk
mkdir build && cd build
cmake ..
make
sudo make install  # Optional: install system-wide

然后在你的 CMakeLists.txt 文件中:

# If installed system-wide
find_package(mcp REQUIRED)
target_link_libraries(your_target PRIVATE mcp)

# Or use local build
target_include_directories(your_target PRIVATE /path/to/cpp-mcp-sdk/include)
target_link_libraries(your_target PRIVATE /path/to/cpp-mcp-sdk/build/libmcp.a pthread)

使用方法

客户端 - 启动MCP服务器

#include 

using namespace mcp;

// Configure server to spawn
StdioServerParameters params("python");
params.with_args({"my_mcp_server.py"})
      .with_env({{"API_KEY", "secret"}})
      .with_cwd("/path/to/server");

// Create and connect
auto transport = create_stdio_client_transport(params);

// Communicate
json request = {{"jsonrpc", "2.0"}, {"method", "tools/list"}, {"id", 1}};
transport->write(request);
json response = transport->read();

// Clean shutdown (automatic in destructor)
transport->close();

服务器 - 处理标准I/O传输

#include 

using namespace mcp;

// Use stdin/stdout
StdioConnection conn(std::cin, std::cout);

// Read requests
json request = conn.read();

// Send responses
json response = {{"jsonrpc", "2.0"}, {"id", request["id"]}, {"result", {}}};
conn.write(response);

测试

重要总是从……开始构建 build/ 目录,用于保持源代码树的整洁。

建议:从构建目录进行构建

mkdir -p build && cd build
cmake ..
make
ctest --output-on-failure

# For verbose output
ctest --output-on-failure --verbose

替代方案:使用Makefile封装器

# From project root (uses build/ directory)
make clean  # Clean build
make        # Build all
make test   # Run tests

不要跑 cmake 或者 make 从项目根目录 - 这将把构建产物污染到源代码树中。

特点

  • 完全支持MCP协议(协议版本2025-06-18)
  • 带有进程生成的stdio传输
  • 客户端和服务器端实现
  • 工具、资源和提示支持
  • 引出支持(或:启发式支持,根据上下文可能有所不同) - 交互式用户输入请求(新增!)
  • 线程安全设计
  • 全面的测试套件

引出支持(或:引诱支持,但根据上下文,“引出”可能更贴切,因为“elicitation”通常指引出或诱发某种反应或信息)

在工具执行或其他操作过程中,提示功能允许服务器与用户进行交互式请求,以获取结构化信息。

服务器使用情况

#include 
#include 

// In a tool handler with access to ServerSession*
json schema = {
    {"type", "object"},
    {"properties", {
        {"apiKey", {{"type", "string"}}},
        {"timeout", {{"type", "number"}, {"minimum", 1}}},
        {"debug", {{"type", "boolean"}}}
    }},
    {"required", json({"apiKey"})}
};

ElicitRequestParams params;
params.message = "Please provide your API configuration";
params.requestedSchema = schema;

ElicitResult result = session->send_elicit_request(params);

if (result.action == ElicitAction::Accept) {
    auto api_key = (*result.content)["apiKey"].get();
    // Use configuration...
}

客户使用情况

#include 

// Define elicitation handler
ClientOptions options;
options.elicitation_handler = [](const ElicitRequestParams& params) {
    std::cout << "Server asks: " << params.message << std::endl;

    // Collect user input (show UI, prompt, etc.)
    ElicitResult result;
    result.action = ElicitAction::Accept;
    result.content = {
        {"apiKey", "sk-test-12345"},
        {"timeout", 30},
        {"debug", true}
    };
    return result;
};

// Client automatically advertises elicitation capability
Client client("my-client", "1.0.0", options);

docs/ELICITATION.md(文件名,可翻译为“文档/引出需求.md”或根据具体语境简化为“需求引出说明.md”等) 以获取详细文档和 示例/引出示例.cpp 以完整示例说明。

文档

目录标签

目录标签

C++开发工具命令行工具本地部署C++SDKMCP协议进程通信交互式输入

接入字段

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

未说明

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

session

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明session部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP