mcpcpp-C++模型上下文协议库
  
现代C++实现 模型上下文协议(MCP) 用于构建具有外部工具集成的AI驱动应用程序。
🚀 特性
- ✅ 完全支持MCP协议 -基于JSON-RPC 2.0的协议(v2024-11-05)
- ✅ 双重运输 -STDIO和SSE/HTTP模式
- ✅ 工具 -将C++函数注册为AI可调用工具
- ✅ 资源 -提供数据、配置和文件
- ✅ 提示 -提供可重用的提示模板
- ✅ 客户端库 -从C连接到MCP服务器++
- ✅ 动态配置 -从JSON配置文件加载工具
- ✅ 仅标题选项 -易于集成
- ✅ 现代C++17 -类型安全高效
📦 快速开始
安装
git clone https://github.com/nlpresearchai/mcpcpp.git
cd mcpcpp
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .
sudo cmake --install .基本用法
#include
int main() {
// Create server
mcp::MCPServer server("my-server", "1.0.0");
// Add a tool
server.add_tool(
"add",
"Add two numbers",
{
{"type", "object"},
{"properties", {
{"a", {{"type", "number"}}},
{"b", {{"type", "number"}}}
}},
{"required", {"a", "b"}}
},
[](const json& args) -> json {
return {{"result", args["a"].get() + args["b"].get()}};
}
);
// Run server (STDIO mode)
server.run_stdio();
return 0;
}在您的项目中使用
CMakeLists.txt:
find_package(cppmcp REQUIRED)
add_executable(my_server main.cpp)
target_link_libraries(my_server PRIVATE cppmcp::cppmcp)📚 文档
核心组件
1. MCP 服务器 (mcp_server.hpp)
创建向AI应用程序公开工具、资源和提示的服务器。
mcp::MCPServer server("server-name", "1.0.0");
// Add tool
server.add_tool("tool_name", "description", input_schema,
[](const json& args) { return result; });
// Add resource
server.add_resource("uri://resource", "name", "description", "mime-type",
[]() { return "data"; });
// Add prompt
server.add_prompt("prompt_name", "description", arguments,
[](const json& args) { return prompt; });
// Run
server.run_stdio(); // or server.run_sse(port);2. MCP客户端 (mcp_client.hpp)
连接到MCP服务器并调用工具。
mcp::MCPClient client("client-name", "1.0.0");
// Connect
client.connect_sse("http://localhost:8080");
client.initialize();
// List and call tools
auto tools = client.list_tools();
auto result = client.call_tool("add", {{"a", 5}, {"b", 3}});
// Read resources
auto resources = client.list_resources();
auto data = client.read_resource("config://app");3. 动态服务器 (dynamic_mcp_server.hpp)
从JSON文件加载服务器配置。
#include
dynamic_mcp::ConfigLoader loader("tasks_config.json");
loader.load();
// Server is automatically configured from JSON📖 例子
请参阅 examples/ 目录:
simple_server.cpp-最小MCP服务器server_with_tools.cpp-具有多种工具、资源和提示的服务器dynamic_server.cpp-配置驱动服务器client_example.cpp-MCP客户端使用情况
建筑示例
cd build
cmake .. -DCPPMCP_BUILD_EXAMPLES=ON
cmake --build .
./examples/simple_server stdio
./examples/server_with_tools sse 8080🏗️ 项目结构
mcpcpp/
├── include/cppmcp/ # Public headers
│ ├── mcp_server.hpp # Server API
│ ├── mcp_client.hpp # Client API
│ └── dynamic_mcp_server.hpp # Dynamic configuration
├── src/ # Implementation
│ ├── mcp_server.cpp
│ ├── mcp_sse.cpp
│ ├── mcp_client.cpp
│ └── dynamic_mcp_server.cpp
├── examples/ # Usage examples
├── tests/ # Unit tests
├── docs/ # Documentation
└── CMakeLists.txt # Build configuration🛠️ 建筑
需求
- C++17 编译器(GCC 7+、Clang 5+、MSVC 2017+)
- CMake 3.14+
- libcurl (用于HTTP/SSE支持)
依赖关系(由CMake自动获取):
- nlohmann/json -JSON解析
- cpp httplib -HTTP服务器
CMake选项
-DCPPMCP_BUILD_EXAMPLES=ON # Build examples (default: ON)
-DCPPMCP_BUILD_TESTS=ON # Build tests (default: ON)
-DCPPMCP_BUILD_SHARED=ON # Build shared library (default: ON)
-DCPPMCP_BUILD_STATIC=ON # Build static library (default: ON)Ubuntu/Debian
sudo apt-get install build-essential cmake libcurl4-openssl-devmacOS
brew install cmake curl🧪 测试
cd build
cmake .. -DCPPMCP_BUILD_TESTS=ON
cmake --build .
ctest🔌 与AI客户端集成
克劳德桌面
添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"cppmcp-example": {
"command": "/path/to/build/examples/simple_server",
"args": ["stdio"]
}
}
}自定义Python客户端
import httpx
import json
# Connect to SSE server
response = httpx.post(
"http://localhost:8080/message",
json={
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {"name": "python-client", "version": "1.0"}
}
}
)
print(response.json())📊 演出
- 低延迟 -直接C++执行,无Python开销
- 高吞吐量 -每秒处理数千个请求
- 内存效率高 -最小的分配,优化的数据结构
- 异步就绪 -非阻塞SSE连接
🤝 贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
🔗 相关项目
- 模型上下文协议 -MCP官方规范
- mcp Python SDK -官方Python实现
- mcp TypeScript SDK -TypeScript官方实现
📬 联系
- 问题:
- 讨论:
⭐ 明星历史
如果你觉得这个项目有帮助,请考虑给它一颗星!
______________________________________________________________________
建于❤️ 面向AI和C++社区
