MCPServer.cpp
A high-performance C++ implementation of the Model Communication Protocol server
  
语言版本
目录
引言
MCPServer.cpp是用现代C++编写的模型通信协议(MCP)的高性能、跨平台服务器实现。它实现了AI模型和外部工具之间的无缝通信,为扩展模型功能提供了标准化的接口。
服务器通过HTTP传输实现JSON-RPC 2.0协议,并支持常规请求响应和服务器发送事件(SSE)流,以进行实时通信。
特性
MCP图元支持矩阵
| 原始 | 状态 | 注释 |
|---|---|---|
| 工具 | ✅ 完全支持 | 在隔离插件环境中执行工具 |
| 提示 | ✅ 基本支持 | 提示模板和管理 |
| 资源 | ✅ 基本支持 | 向LLM公开数据和内容 |
| 采样 | 🚧 计划 | 基于LLM的采样操作 |
| 根 | 🚧 计划 | 文件系统访问控制 |
核心功能
- 全面实施模型通信协议(MCP)
- 基于HTTP/HTTPS传输的JSON-RPC 2.0
- 用于扩展功能的插件系统
- 内置工具(echo、文件操作、HTTP请求、系统命令)
- 带有服务器发送事件(SSE)的流式响应
- 全面的日志记录和错误处理
- 🚀 高性能:使用C++20构建,并使用mimalloc进行优化,以获得卓越的性能
- 🔌 插件系统:具有动态插件加载的可扩展架构
- 🌐 HTTP传输:完全支持HTTP/1.1,具有SSE流媒体功能
- 📦 JSON-RPC 2.0:完全实现JSON-RPC 2.0规范
- 🛠️ 内置工具:包括文件操作、HTTP请求和系统命令
- 🧠 AI模型就绪:专为AI模型集成而设计
- 🔄 异步I/O:由ASIO提供支持,实现高效并发处理
- 📊 日志记录:使用spdlog进行全面日志记录
- 📈 可扩展的:用于处理并发请求的多线程架构
- 🌍 跨平台:适用于Windows、Linux和macOS
- 📁 资源管理:通过资源原语向LLM公开数据和内容
建筑
MCPServer.cpp使用模块化架构,组件之间有明确的界限:
┌─────────────────────────────────────────────────────────────┐
│ MCPServer.cpp │
├─────────────────────────────────────────────────────────────┤
│ Transport Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ HTTP Server │ │ Stdio I/O │ │ Other Protocols │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Protocol Layer │
│ ┌──────────────────────┐ │
│ │ JSON-RPC 2.0 │ │
│ └──────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Business Logic Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Tool Reg. │ │ Plugins │ │ Request Processing │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Core Services │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Logger │ │ Resources │ │ Configuration │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘核心组件
- 传输层:处理各种协议(HTTP、stdio等)上的通信
- 协议层:实现JSON-RPC 2.0消息解析和格式化
- 业务逻辑层:管理工具、插件和请求处理
- 核心服务:提供日志记录等基本服务
入门指南
先决条件
- C++20兼容编译器(MSVC、GCC 10+、Clang 12+)
- CMake 3.23或更高版本
- Git
快速开始
- 克隆存储库:
git clone https://github.com/caomengxuan666/MCPServer.cpp.git
cd MCPServer.cpp- 构建项目:
mkdir build
cd build
cmake ..
cmake --build .- 运行服务器:
./bin/mcp-server++服务器将在默认端口上启动并加载内置插件。
从源头构建
视窗
mkdir build
cd build
cmake ..
cmake --build . --config ReleaseLinux/macOS
mkdir build
cd build
cmake ..
make -j$(nproc)编译选项
| 选项 | 描述 | 默认值 |
|---|---|---|
BUILD_TESTS | 构建单元测试 | ON |
CMAKE_BUILD_TYPE | 构建类型(调试、发布等) | 发布 |
配置
看 配置 有关如何配置服务器的详细信息,请参阅第节。
认证
MCPServer++支持身份验证机制,以保护您的服务器免受未经授权的访问。看 作者.md 有关如何配置和使用身份验证的详细信息。
HTTPS和证书生成
MCPServer++支持通过HTTPS进行安全通信。 默认情况下,出于安全原因,HTTPS被禁用,必须在配置文件中手动启用。
要启用HTTPS,请执行以下操作:
- 集
enable_https=1在你的config.ini中 - 确保您有有效的SSL证书文件
- 配置所需的SSL文件路径
有两种方法可以生成用于开发和测试的SSL/TLS证书:
- 使用内置的\[generate_cert\](file:///D:/codespace/MCPServer%2B%2B/tools/generate_cert.cpp#L265-L411)工具(推荐)
- 使用OpenSSL命令行工具
有关这两种方法的详细说明,请参阅 HTTPS和证书生成 文档。
插件
MCPServer.cpp支持一个强大的插件系统,允许在不修改核心服务器的情况下扩展功能。插件是实现MCP插件接口的动态库。
官方插件
file_plugin:文件系统操作http_plugin:HTTP客户端功能safe_system_plugin:安全执行系统命令example_stream_plugin:流数据示例
Python插件
MCPServer++现在通过新的Python SDK支持Python插件,使插件开发更加直观。Python插件被编译为动态库(DLL/SO),使用pybind11封装Python代码。
创建Python插件
要创建新的Python插件,请使用 plugin_ctl 工具:
./plugin_ctl create -p my_python_plugin这将生成一个Python插件模板,该模板使用带有装饰器和辅助函数的新Python SDK。
Python插件功能
- 基于装饰器的工具定义
@tool - 自动JSON处理
- 流媒体工具支持
- 参数验证助手
- 易于与MCP协议集成
有关Python插件开发的详细信息,请参阅 Python插件文档.
插件开发
看 插件/README.md 有关开发自定义插件的详细信息。
api参考
服务器通过HTTP实现JSON-RPC 2.0协议。所有请求应发送至 /mcp 终点。
资源管理
MCPServer++为MCP资源原语提供基本支持,允许向LLM公开数据和内容。可以通过以下JSON-RPC方法访问资源:
resources/list:列出可用资源resources/read:阅读特定资源的内容resources/write:将内容写入特定资源(如果允许)
资源请求示例
{
"jsonrpc": "2.0",
"id": 2,
"method": "resources/read",
"params": {
"name": "example.txt"
}
}资源响应示例
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": "This is the content of the example resource.",
"contentType": "text/plain",
"lastModified": "2025-05-13T10:00:00Z"
}
}示例工具请求(现有)
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools",
"params": {}
}示例工具响应(现有)
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"name": "read_file",
"description": "Read a file",
"inputSchema": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Path to the file to read"
}
},
"required": ["path"]
}
}
]
}Docker部署
构建并运行
- 多阶段构建 (图像大小优化为10-15MB)
docker build -t mcp-server .
docker run -p 6666:6666 -v $(pwd)/plugins:/plugins -v $(pwd)/certs:/certs mcp-server- HTTPS配置 (需要安装证书目录)
# Enable HTTPS by setting enable_https=1 in config.ini
# Certificate files must be placed in /certs directory inside container
docker run -p 6667:6667 -v $(pwd)/certs:/certs mcp-server插件系统
- 插件路径映射:容器插件目录为
/plugins,建议通过卷映射本地目录 - 插件加载:支持运行时热加载(确保正确的文件权限)
图像优化
- 基于最小
gcr.io/distroless/cc-debian12基本图像 - 静态链接+调试信息剥离(LTO优化)
- 国内用户可以配置镜像加速器(见配置示例)
Docker Hub
Docker Hub上提供了预构建的Docker镜像:
您可以直接拉取并运行最新图像:
docker pull mgzy/mcp-server
docker run -p 6666:6666 -v $(pwd)/plugins:/plugins -v $(pwd)/certs:/certs mgzy/mcp-serverCI/CD管道
我们的项目使用GitHub Actions进行持续集成和部署。管道会自动在多个平台上构建和测试服务器:
支持的平台
- Ubuntu 22.04 (GitHub Actions最新LTS)
- Ubuntu 24.04 (GitHub Actions最新Ubuntu版本)
- Windows服务器2022 (GitHub操作最新Windows)
构建变种版本
我们提供两种构建变体以满足不同的需求:
- 完整构建:包括所有库和开发标头
- 最小构建:仅包含可执行文件和基本文件(没有开发头文件或库)
包装格式
CI/CD管道生成多种格式的包:
- 视窗:ZIP,NSIS安装程序(EXE)
- Linux:DEB、RPM、焦油。GZ,ZIP
贡献
我们欢迎社区的贡献!请看 贡献.md 了解如何为这个项目做出贡献的指导方针。
开发设置
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
______________________________________________________________________
Built with ❤️ for the AI community
GitHub | Issues
