基于 C++17 实现的 MCP(Model Context Protocol)服务器框架,用于连接 AI 大模型与外部工具、资源和提示词模板。项目实现了 JSON-RPC 2.0 协议栈、HTTP/stdio 双传输层,以及 Tools、Resources、Prompts 三类 MCP 核心能力。
- JSON-RPC 2.0:支持 Request、Response、Error、Notification 等基础协议模型。
- 双传输层:支持 stdio 和 HTTP 两种通信方式,适配本地进程通信和 Web 服务场景。
- MCP Server Core:封装 MCP 初始化、工具列表、资源访问、提示词管理等核心流程。
- Tools 工具系统:支持动态注册工具,内置 echo、calculate、get_time、get_weather、write_file 等示例工具。
- Resources 资源系统:支持资源注册、列表查询和内容读取。
- Prompts 提示词模板:支持参数化 Prompt 注册与消息生成。
- 日志与配置:基于 spdlog 实现日志输出,支持 JSON 配置文件和命令行参数。
- 工程化构建:使用 CMake + vcpkg 管理依赖。
- C++17
- JSON-RPC 2.0
- nlohmann-json
- spdlog
- cpp-httplib
- CMake
- vcpkg
include/
config/ 配置模块
json_rpc/ JSON-RPC 协议与传输层
logger/ 日志模块
mcp/ MCP 类型与服务器核心
src/
config/
json_rpc/
logger/
mcp/
main.cpp 统一服务入口
config/
config.json 默认配置示例
cmake -S . -B build
cmake --build buildHTTP 模式:
./build/mcp_server --mode http --host 0.0.0.0 --port 8080stdio 模式:
./build/mcp_server --mode stdio同时启用 HTTP 和 stdio:
./build/mcp_server --mode both使用配置文件:
./build/mcp_server --config config/config.json{
"server": {
"port": 8080
},
"log": {
"level": "debug",
"file": "logs/app.log"
}
}本项目主要用于学习和实践 MCP 协议服务端的工程化实现,重点关注:
- MCP 三大能力模块的抽象设计
- JSON-RPC 协议的请求分发与错误处理
- HTTP/stdio 双传输层的统一封装
- C++ 项目的模块划分、配置管理、日志记录和构建流程
仓库中不包含任何真实密钥或私有配置。运行时请根据本地环境调整 config/config.json。