CPP MCP-SERVER

CPP MCP-SERVER

一个使用可插拔模块架构实现的 C++ 模型上下文协议服务器。 Or, a slightly more literal translation: 一个用 C++ 实现的,具有可插拔模块架构的模型上下文协议服务器。

peppemas

开发者工具
访问服务器

README

构建状态

CPP MCP-SERVER

一个 C++ 实现的 Model Context Protocol Server,具有可插拔的模块化架构。

服务器 资源 提示 工具 采样 通知 传输
MCP-SERVER ✅* stdio

* 资源模板尚未支持

MCP 服务器架构

MCP 服务器旨在实现 Model Context Protocol,从而实现模块化和可扩展的架构。 以下是项目架构的概述:

核心组件

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

  2. 命令行界面: 提供用于配置的命令行参数:

    • -n: 指定要向客户端公开的服务器名称。
    • -p: 设置插件目录的路径。
    • -l: 设置日志目录的路径。
  3. 插件系统: 服务器旨在从指定的目录(-p 参数)动态加载插件。 每个插件都扩展了服务器的功能,从而可以在不修改核心代码库的情况下进行未来的扩展。

  4. 日志模块: 日志记录是集中式的,日志存储在 -l 参数指定的目录中。 这增强了服务器活动的调试和监控。

执行流程

  1. 初始化:

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

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

    • 服务器侦听传入的客户端连接。
    • 它根据实现的 Model Context Protocol 处理请求,该协议依赖于注册的插件来实现扩展功能。
  4. 错误处理:

    • 启动或运行时发生的错误会记录在日志目录中,从而确保最大程度地减少对服务器运行的中断。

插件可扩展性

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

  • 在 Windows 上: 插件编译为 .dll 文件。
  • 在 Linux/MacOS 上: 插件编译为 .so(共享对象)文件。

示例插件

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

  2. 睡眠插件: 睡眠插件在服务器的处理管道中引入延迟或“睡眠”功能。 这对于模拟响应延迟或管理协议中的定时操作非常有用。 开发人员可以利用此插件来构建和测试与基于时间的操作相关的功能,而无需更改核心服务器行为。 它突出了自定义插件如何针对特定的、小众的用例。

  3. 代码审查插件: 代码审查插件旨在帮助开发人员执行自动代码审查。 此插件分析提交到服务器的代码,并提供有用的反馈,例如识别潜在的错误、代码异味和优化机会。 它遵循标准编码实践,并且可以配置为强制执行特定的样式指南(例如,Google 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"
       }      
    }
  }
}

TODO 列表

  • 通知 [进行中]
  • 采样 [进行中]
  • 创建一个支持类来构建通知和响应(文本、图像、音频、错误等)
  • 使用强大的序列化库进行服务器<->插件通信
  • 审查日志级别实现
  • 添加 json schema validator (https://github.com/pboettch/json-schema-validator)
  • 实现 SSE 传输
  • 在不同的 mcp-client 上测试(实际上仅在 Claude Desktop 上测试)

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript