模型上下文协议服务器

一个基于C++实现的模型上下文协议服务器,具有可插拔模块架构,支持多种传输协议和平台。

  • by peppemas
  • C++
  • 本地部署
  • 51 星标
  • 更新于
在 GitHub 查看 peppemas/mcp_server

使用说明

CPP-MCP-SERVER

具有可插拔模块架构的模型上下文协议服务器的C++实现。

服务器 资源 提示 工具 采样 通知 根 引用
MCP-SERVER ✅* ✅ ✅ ❌ ✅** ❌ ❌

*尚不支持资源模板

**部分支持

Claude代码配置

claude mcp add --transport http cpp_mcp_server http://localhost:8080/mcp

安装日志目录

默认情况下,mcp服务器登录到。/日志目录(必须存在) 您可以使用以下命令将日志重定向到首选目录 -l 命令行选项。

支持的交通工具

传输 支持 授权
停止 ✅ ❌
上海证券交易所✅ ❌
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服务器旨在实现模型上下文协议,实现模块化和可扩展的架构。在......下面 是项目架构的概述:

核心组件

  1. 服务器核心:
    服务器的中心组件,处理所有主要功能的初始化和管理, 包括与客户端的通信、日志记录和插件管理。

  2. 命令行界面:
    为配置提供命令行参数:

    • -n:指定要向客户端公开的服务器的名称。(可选)
    • -p:设置搜索插件的插件目录的路径(它也在子目录中搜索)。
    • -l:设置日志目录的路径。
  3. 插件系统:
    服务器被设计为从指定目录动态加载插件(-p 论点)。每个插件都扩展 服务器的功能,允许在不修改核心代码库的情况下进行未来的扩展。

  4. 日志模块:
    日志记录是集中的,日志存储在由 -l 参数。这增强了调试能力 以及监控服务器的活动。

执行流程

  1. 初始化:

    • 服务器首先解析命令行参数,以配置服务器名称、插件目录和日志 目录。
    • 日志已初始化,插件系统已准备就绪。
  2. 插件加载:

    • 指定目录中的插件会被动态识别和加载。
    • 每个插件都已初始化并在服务器上注册。
  3. 处理客户请求:

    • 服务器监听传入的客户端连接。
    • 它根据实现的模型上下文协议处理请求,该协议依赖于注册的插件 扩展能力。
  4. 错误处理:

    • 启动或运行时的错误记录在日志目录中,确保对服务器的干扰最小 操作。

插件可扩展性

MCP服务器的可扩展性由其插件系统提供支持,使开发人员能够扩展服务器的功能 而无需修改核心逻辑。插件是动态加载的库,可以以各种方式实现 取决于操作系统:

  • 在Windows上:插件编译为 .dll 文件夹。
  • Linux/MacOS操作系统:插件编译为 .so 或 .dylib (共享对象)文件。

示例插件

  1. 天气插件:
    天气插件允许服务器提供与天气相关的功能。此插件可以处理请求 与天气数据相关,如当前温度、预报和其他气象信息。插件 从第三方API获取数据,以确保信息的最新和准确。它演示了MCP服务器如何 可以扩展以提供需要外部数据集成的服务。

  2. 睡眠插件:
    Sleep插件在服务器的处理管道中引入了延迟或“睡眠”功能。这可能是 可用于模拟响应延迟或管理协议中的定时操作。开发人员可以利用此插件 在不改变核心服务器行为的情况下构建和测试与基于时间的操作相关的功能。它强调了如何 自定义插件可以针对特定的利基用例。

  3. 代码审查插件:
    Code Review插件旨在帮助开发人员执行自动代码审查。此插件分析 提交到服务器的代码并提供有用的反馈,例如识别潜在的错误、代码气味和 优化机会。它遵循标准编码实践,可以配置为强制执行特定风格 指南(例如谷歌C++风格指南)。此外,它支持多语言检查,确保兼容性 使用各种编程语言。该插件可以与版本控制系统集成,以检索代码更改 直接用于评估,使其成为协作开发工作流程的宝贵工具。

Claude桌面配置

{
  "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模式验证器(https://github.com/pboettch/json-schema-validator)
  • 在不同的mcp客户端上进行测试(实际上仅在Claude Desktop上进行了测试)