这是一个具有可插拔模块架构的模型上下文协议服务器的C++实现。
| 服务器 | 资源 | 提示 | 工具 | 抽样 | 通知 | 根目录 | 引发 |
|---|---|---|---|---|---|---|---|
| MCP-SERVER | ✅* | ✅ | ✅ | ❌ | ✅** | ❌ | ❌ |
* 尚不支持资源模板
** 部分支持
| 传输方式 | 支持 | 授权 |
|---|---|---|
| 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服务器旨在实现一个模型上下文协议,支持模块化和可扩展的架构。以下是项目架构概述:
服务器核心:
处理服务器初始化和管理所有主要功能的核心组件,包括与客户端通信、日志记录和插件管理。
命令行界面:
提供用于配置的命令行参数:
-n:指定要暴露给客户端的服务器名称。(可选)-p:设置插件目录的路径,在该目录中搜索插件(也搜索子目录)。-l:设置日志目录的路径。插件系统:
服务器设计为从指定目录(-p 参数)动态加载插件。每个插件扩展服务器的功能,允许未来扩展而不修改核心代码库。
日志模块:
日志是集中化的,存储在由 -l 参数指定的目录中。这增强了调试和监控服务器活动的能力。
初始化:
插件加载:
处理客户端请求:
错误处理:
MCP服务器的扩展性由其插件系统驱动,使开发者能够在不修改核心逻辑的情况下扩展服务器的功能。插件是动态加载的库,可以根据操作系统以多种方式实现:
.dll文件。.so或.dylib(共享对象)文件。天气插件:
天气插件允许服务器提供与天气相关的功能。此插件可以处理与天气数据相关的请求,如当前温度、预报和其他气象信息。插件从第三方API获取数据,以确保信息是最新的和准确的。它展示了如何扩展MCP服务器以提供需要外部数据集成的服务。
睡眠插件:
睡眠插件在服务器处理管道中引入延迟或“睡眠”功能。这对于模拟响应延迟或管理协议中的定时操作非常有用。开发者可以利用此插件构建和测试与基于时间的操作相关的功能,而无需更改核心服务器行为。它突显了自定义插件如何针对特定的利基用例。
代码审查插件:
代码审查插件旨在帮助开发者执行自动代码审查。此插件分析提交到服务器的代码,并提供有用的反馈,例如识别潜在的bug、代码异味和优化机会。它遵循标准编码实践,并可以配置为强制执行特定的风格指南(例如Google C++风格指南)。此外,它支持多语言检查,确保与各种编程语言的兼容性。插件可以与版本控制系统集成,直接检索代码更改进行评估,使其成为协作开发工作流中的宝贵工具。
{
"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”块中,您可以传递参数给您的插件