# 技术文档摘要
<div align="center">
<img src="docs/logo.png" alt="MCPServer.cpp Logo" width="200"/>
<h1>MCPServer.cpp</h1>
<p>高性能的C++实现的模型通信协议服务器</p>
[](https://en.cppreference.com/w/cpp/20)
[](LICENSE)
[](https://github.com/caomengxuan666/MCPServer.cpp/actions)
</div>
## 语言版本
- [英文(默认)](README.md)
- [中文版](README_zh.md)
## 目录
- [简介](#简介)
- [特性](#特性)
- [架构](#架构)
- [快速开始](#快速开始)
- [从源代码构建](#从源代码构建)
- [配置](#配置)
- [认证](#认证)
- [HTTPS和证书生成](#https和证书生成)
- [插件](#插件)
- [API参考](#api参考)
- [Docker部署](#docker部署)
- [CI/CD流水线](#cicd流水线)
- [贡献](#贡献)
- [许可证](#许可证)
## 简介
MCPServer.cpp 是一个高性能、跨平台的服务器实现,使用现代C++编写,实现了模型通信协议(MCP)。它使人工智能模型与外部工具之间的通信无缝化,并提供了一个标准化接口来扩展模型的功能。
该服务器在HTTP传输上实现了JSON-RPC 2.0协议,并支持常规请求响应和服务器发送事件(SSE)流式传输以实现实时通信。
## 特性
### MCP原语支持矩阵
| 原语 | 状态 | 备注 |
|------|------|------|
| 工具 | ✅ 完整支持 | 在隔离的插件环境中执行工具 |
| 提示 | ✅ 基本支持 | 提示模板和管理 |
| 资源 | ✅ 基本支持 | 向LLMs暴露数据和内容 |
| 抽样 | 🚧 计划中 | 基于LLM的抽样操作 |
| 根目录 | 🚧 计划中 | 文件系统访问控制 |
### 核心特性
- 完整实现模型通信协议(MCP)
- 使用HTTP/HTTPS传输的JSON-RPC 2.0
- 扩展功能的插件系统
- 内置工具(回显、文件操作、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
- 📁 **资源管理**:通过资源原语向LLMs暴露数据和内容
## 架构
MCPServer.cpp 使用模块化架构,组件之间有明确的界限:
┌─────────────────────────────────────────────────────────────┐ │ MCPServer.cpp │ ├─────────────────────────────────────────────────────────────┤ │ 传输层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ HTTP 服务器 │ │ 标准I/O │ │ 其他协议 │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ 协议层 │ │ ┌──────────────────────┐ │ │ │ JSON-RPC 2.0 │ │ │ └──────────────────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ 业务逻辑层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ 工具注册 │ │ 插件 │ │ 请求处理 │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ 核心服务 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ 日志器 │ │ 资源 │ │ 配置 │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ └─────────────────────────────────────────────────────────────┘
### 核心组件
1. **传输层**:处理各种协议(HTTP、标准I/O等)的通信
2. **协议层**:实现JSON-RPC 2.0消息解析和格式化
3. **业务逻辑层**:管理工具、插件和请求处理
4. **核心服务**:提供日志记录等基本服务
## 快速开始
### 预备条件
- 兼容C++20的编译器(MSVC、GCC 10+、Clang 12+)
- CMake 3.23或更高版本
- Git
### 快速入门
1. 克隆仓库:
```bash
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 Release
mkdir build
cd build
cmake ..
make -j$(nproc)
| 选项 | 描述 | 默认值 |
|---|---|---|
BUILD_TESTS | 构建单元测试 | ON |
CMAKE_BUILD_TYPE | 构建类型(Debug、Release等) | Release |
详情请参阅配置部分。
MCPServer++ 支持认证机制,以保护服务器免受未经授权的访问。详细信息请参阅AUTH.md。
MCPServer++ 支持通过HTTPS进行安全通信。出于安全考虑,默认情况下禁用HTTPS,必须手动在配置文件中启用。
要启用HTTPS:
enable_https=1有两种方法可以为开发和测试生成SSL/TLS证书:
有关这两种方法的详细说明,请参阅HTTPS和证书生成文档。
MCPServer.cpp 支持强大的插件系统,允许在不修改核心服务器的情况下扩展功能。插件是实现MCP插件接口的动态库。
file_plugin:文件系统操作http_plugin:HTTP客户端功能safe_system_plugin:安全系统命令执行example_stream_plugin:流式数据示例MCPServer++ 现在通过新的Python SDK支持Python插件,使得插件开发更加直观。Python插件被编译成动态库(DLL/SO),使用pybind11包装Python代码。
要创建一个新的Python插件,使用plugin_ctl工具:
./plugin_ctl create -p my_python_plugin
这将生成一个使用新Python SDK的Python插件模板,其中包括装饰器和辅助函数。
@tool装饰器定义工具有关Python插件开发的详细信息,请参阅Python插件文档。
详细信息请参阅plugins/README.md。
服务器在HTTP上实现了JSON-RPC 2.0协议。所有请求应发送到/mcp端点。
MCPServer++ 提供了对MCP资源原语的基本支持,允许向LLMs暴露数据和内容。资源可以通过以下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": "这是示例资源的内容。",
"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": "读取文件",
"inputSchema": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "要读取的文件路径"
}
},
"required": ["path"]
}
}
]
}
多阶段构建(镜像大小优化至10-15MB)
docker build -t mcp-server .
docker run -p 6666:6666 -v $(pwd)/plugins:/plugins -v $(pwd)/certs:/certs mcp-server
HTTPS配置(需要挂载证书目录)
# 通过在config.ini中设置enable_https=1启用HTTPS
# 将证书文件放置在容器内的/certs目录中
docker run -p 6667:6667 -v $(pwd)/certs:/certs mcp-server
/plugins,建议通过卷映射本地目录gcr.io/distroless/cc-debian12基础镜像预构建的Docker镜像可在Docker Hub上获取:https://hub.docker.com/r/mgzy/mcp-server
您可以直接拉取并运行最新镜像:
docker pull mgzy/mcp-server
docker run -p 6666:6666 -v $(pwd)/plugins:/plugins -v $(pwd)/certs:/certs mgzy/mcp-server
我们的项目使用GitHub Actions进行持续集成和部署。流水线自动在多个平台上构建和测试服务器:
我们提供了两种构建变体以满足不同的需求:
CI/CD流水线生成多种格式的包:
我们欢迎社区的贡献!请参阅CONTRIBUTING.md了解如何为该项目做出贡献的指南。
本项目采用MIT许可证——详情请参阅LICENSE文件。