关于 CPP MCP-SERVER
CPP MCP-SERVER 是一个用 C++ 实现的 MCP 服务,采用可插拔的模块架构,通过动态加载插件扩展功能。它适合需要在 C++ 环境中构建或扩展 MCP 服务的开发者。
主要功能
- 01从目录动态加载插件
- 02支持 Stdio、SSE 和 HttpStream 传输
- 03支持 Prompts 与 Tools 能力
- 04命令行配置服务名、插件与日志目录
适用场景
- 01在 C++ 项目中提供 MCP 服务
- 02通过插件扩展自定义工具
- 03在 Claude Code 或 Claude Desktop 中接入本地服务
MCP 相关
该服务作为 MCP 服务端,通过 Resources、Prompts 和 Tools 等能力向 MCP 客户端提供功能,部分资源模板尚不支持。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
CPP MCP-SERVER
采用可插拔模块架构的 Model Context Protocol 服务 C++ 实现。
| 服务 | 资源 | 提示词 | 工具 | 采样 | 通知 | 根目录 | 征询 |
|---|---|---|---|---|---|---|---|
| MCP-SERVER | ✅* | ✅ | ✅ | ❌ | ✅** | ❌ | ❌ |
* 暂不支持资源模板
** 部分支持
Claude Code 配置
claude mcp add --transport http cpp_mcp_server http://localhost:8080/mcp
日志目录设置
默认情况下,MCP 服务会将日志写入 ./logs 目录(必须已存在)
你可以使用 -l 命令行选项将日志重定向到首选目录。
支持的传输方式
| 传输方式 | 支持 | 授权 |
|---|---|---|
| Stdio | ✅ | ❌ |
| SSE | ✅ | ❌ |
| HttpStream | ✅ | ❌ |
支持的平台
| 平台 | 支持 | 编译器 |
|---|---|---|
| Windows | ✅ | MINGW64 |
| Ubuntu Linux | ✅ | GCC |
| Mac OS | ✅ | GCC |
如何编译
在本地计算机上克隆仓库
git clone https://github.com/peppemas/mcp_server.git
编译
cd mcp_server
mkdir build
cd build
cmake ..
make
MCP 服务架构
MCP 服务旨在实现 Model Context Protocol,提供模块化且可扩展的架构。以下是项目架构概览:
核心组件
-
服务核心:
服务的核心组件,负责初始化和管理所有主要功能,包括与客户端通信、日志记录和插件管理。 -
命令行界面:
提供用于配置的命令行参数:-n:指定要向客户端公开的服务名称。(可选)-p:设置插件目录的路径,以便搜索插件(也会搜索子目录)。-l:设置日志目录的路径。
-
插件系统:
服务旨在从指定目录(-p参数)动态加载插件。每个插件都会扩展服务的功能,无需修改核心代码库即可支持未来的扩展。 -
日志模块:
日志由集中管理,并存储在-l参数指定的目录中。这有助于调试和监控服务活动。
执行流程
-
初始化:
- 服务启动时会解析命令行参数,以配置服务名称、插件目录和日志目录。
- 初始化日志,并准备插件系统。
-
加载插件:
- 识别指定目录中的插件并动态加载。
- 初始化每个插件,并将其注册到服务。
-
处理客户端请求:
- 服务监听传入的客户端连接。
- 服务根据已实现的 Model Context Protocol 处理请求,并依赖已注册的插件扩展功能。
-
错误处理:
- 启动或运行期间发生的错误会记录在日志目录中,确保服务运行尽可能不受影响。
插件扩展性
MCP 服务通过插件系统实现扩展,开发者无需修改核心逻辑即可扩展服务功能。插件是动态加载的库,可根据操作系统以不同方式实现:
- 在 Windows 上:插件编译为
.dll文件。 - 在 Linux/MacOS 上:插件编译为
.so或.dylib(共享对象)文件。
示例插件
-
Weather Plugin:
Weather 插件允许服务端提供与天气相关的功能。该插件可以处理与天气数据相关的请求,例如当前气温、天气预报和其他气象信息。插件从第三方 API 获取数据,以确保信息准确且及时。它展示了如何扩展 MCP 服务,以提供需要集成外部数据的服务。 -
Sleep Plugin:
Sleep 插件在服务端的处理流水线中加入延迟或“休眠”功能。这有助于模拟响应延迟,或管理协议中的定时操作。开发者可以利用此插件构建和测试与基于时间的操作相关的功能,而无需更改服务端的核心行为。它展现了自定义插件如何满足特定的小众用例。 -
Code Review Plugin:
Code Review 插件旨在协助开发者进行自动化代码审查。该插件会分析提交到服务端的代码,并提供有用的反馈,例如识别潜在错误、代码异味和优化机会。它遵循标准编码实践,并可配置为执行特定的风格指南(例如 Google C++ Style Guide)。此外,它支持多语言检查,确保兼容各种编程语言。该插件可以与版本控制系统集成,直接获取代码变更以供评估,因此是协作开发工作流中的实用工具。
Claude Desktop 配置
{
"mcpServers": {
"mcp-server": {
"command": "C:\\mcp-server\\mcp_server.exe",
"args": [
"-n","developer-server",
"-l","C:\\mcp-server\\logs",
"-p","C:\\mcp-server\\plugins"
],
"env": {
"CUSTOM_API_KEY_1": "your-api-key-here",
"CUSTOM_API_KEY_2": "your-api-key-here",
"SAVE_DIR": "/path/to/save/directory"
}
}
}
}
注意:在 "env" 块中,你可以向插件传递参数 e
待办事项
- 检查日志级别实现
- 添加 json schema validator(https://github.com/pboettch/json-schema-validator)
- 在不同的 mcp-client 上测试(目前只在 Claude Desktop 上测试过)
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。