返回市场
麦普服务器_cpp

麦普服务器_cpp

作者:caomengxuan6662 星标更新:2025-08-26

项目介绍

# 技术文档摘要

<div align="center">
  <img src="docs/logo.png" alt="MCPServer.cpp Logo" width="200"/>
  <h1>MCPServer.cpp</h1>
  <p>高性能的C++实现的模型通信协议服务器</p>

[![C++20](https://img.shields.io/badge/C++-20-blue.svg)](https://en.cppreference.com/w/cpp/20)
[![License](https://img.shields.io/github/license/caomengxuan666/MCPServer.cpp)](LICENSE)
[![Build Status](https://img.shields.io/github/actions/workflow/status/caomengxuan666/MCPServer.cpp/build.yml)](https://github.com/caomengxuan666/MCPServer.cpp/actions)
</div>

## 语言版本

- [英文(默认)](README.md)
- [中文版](README_zh.md)

## 目录

- [简介](#简介)
- [特性](#特性)
- [架构](#架构)
- [快速开始](#快速开始)
- [从源代码构建](#从源代码构建)
- [配置](#配置)
- [认证](#认证)
- [HTTPS和证书生成](#https和证书生成)
- [插件](#插件)
- [API参考](#api参考)
- [Docker部署](#docker部署)
- [CI/CD流水线](#cicd流水线)
- [贡献](#贡献)
- [许可证](#许可证)

## 简介

MCPServer.cpp 是一个高性能、跨平台的服务器实现,使用现代C++编写,实现了模型通信协议(MCP)。它使人工智能模型与外部工具之间的通信无缝化,并提供了一个标准化接口来扩展模型的功能。

该服务器在HTTP传输上实现了JSON-RPC 2.0协议,并支持常规请求响应和服务器发送事件(SSE)流式传输以实现实时通信。

## 特性

### MCP原语支持矩阵

| 原语 | 状态 | 备注 |
|------|------|------|
| 工具 | ✅ 完整支持 | 在隔离的插件环境中执行工具 |
| 提示 | ✅ 基本支持 | 提示模板和管理 |
| 资源 | ✅ 基本支持 | 向LLMs暴露数据和内容 |
| 抽样 | 🚧 计划中 | 基于LLM的抽样操作 |
| 根目录 | 🚧 计划中 | 文件系统访问控制 |

### 核心特性

- 完整实现模型通信协议(MCP)
- 使用HTTP/HTTPS传输的JSON-RPC 2.0
- 扩展功能的插件系统
- 内置工具(回显、文件操作、HTTP请求、系统命令)
- 使用服务器发送事件(SSE)进行流式响应
- 全面的日志记录和错误处理
- 🚀 **高性能**:使用C++20编写并优化了mimalloc以获得更好的性能
- 🔌 **插件系统**:具有动态插件加载能力的可扩展架构
- 🌐 **HTTP传输**:全面支持HTTP/1.1,包括SSE流式传输能力
- 📦 **JSON-RPC 2.0**:完全实现JSON-RPC 2.0规范
- 🛠️ **内置工具**:包括文件操作、HTTP请求和系统命令
- 🧠 **AI模型就绪**:专门设计用于AI模型集成
- 🔄 **异步I/O**:由ASIO驱动,高效并发处理
- 📊 **日志记录**:使用spdlog进行全面日志记录
- 📈 **可扩展性**:多线程架构,处理并发请求
- 🌍 **跨平台**:适用于Windows、Linux和macOS
- 📁 **资源管理**:通过资源原语向LLMs暴露数据和内容

## 架构

MCPServer.cpp 使用模块化架构,组件之间有明确的界限:

┌─────────────────────────────────────────────────────────────┐ │ MCPServer.cpp │ ├─────────────────────────────────────────────────────────────┤ │ 传输层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ HTTP 服务器 │ │ 标准I/O │ │ 其他协议 │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ 协议层 │ │ ┌──────────────────────┐ │ │ │ JSON-RPC 2.0 │ │ │ └──────────────────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ 业务逻辑层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ 工具注册 │ │ 插件 │ │ 请求处理 │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ 核心服务 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ 日志器 │ │ 资源 │ │ 配置 │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ └─────────────────────────────────────────────────────────────┘


### 核心组件

1. **传输层**:处理各种协议(HTTP、标准I/O等)的通信
2. **协议层**:实现JSON-RPC 2.0消息解析和格式化
3. **业务逻辑层**:管理工具、插件和请求处理
4. **核心服务**:提供日志记录等基本服务

## 快速开始

### 预备条件

- 兼容C++20的编译器(MSVC、GCC 10+、Clang 12+)
- CMake 3.23或更高版本
- Git

### 快速入门

1. 克隆仓库:
   ```bash
   git clone https://github.com/caomengxuan666/MCPServer.cpp.git
   cd MCPServer.cpp
  1. 构建项目:

    mkdir build
    cd build
    cmake ..
    cmake --build .
    
  2. 运行服务器:

    ./bin/mcp-server++
    

服务器将在默认端口启动并加载内置插件。

从源代码构建

Windows

mkdir build
cd build
cmake ..
cmake --build . --config Release

Linux/macOS

mkdir build
cd build
cmake ..
make -j$(nproc)

构建选项

选项描述默认值
BUILD_TESTS构建单元测试ON
CMAKE_BUILD_TYPE构建类型(Debug、Release等)Release

配置

详情请参阅配置部分。

认证

MCPServer++ 支持认证机制,以保护服务器免受未经授权的访问。详细信息请参阅AUTH.md

HTTPS和证书生成

MCPServer++ 支持通过HTTPS进行安全通信。出于安全考虑,默认情况下禁用HTTPS,必须手动在配置文件中启用。

要启用HTTPS:

  1. 在您的config.ini中设置enable_https=1
  2. 确保您拥有有效的SSL证书文件
  3. 配置所需的SSL文件路径

有两种方法可以为开发和测试生成SSL/TLS证书:

  1. 使用内置的generate_cert工具(推荐)
  2. 使用OpenSSL命令行工具

有关这两种方法的详细说明,请参阅HTTPS和证书生成文档。

插件

MCPServer.cpp 支持强大的插件系统,允许在不修改核心服务器的情况下扩展功能。插件是实现MCP插件接口的动态库。

官方插件

  • file_plugin:文件系统操作
  • http_plugin:HTTP客户端功能
  • safe_system_plugin:安全系统命令执行
  • example_stream_plugin:流式数据示例

Python插件

MCPServer++ 现在通过新的Python SDK支持Python插件,使得插件开发更加直观。Python插件被编译成动态库(DLL/SO),使用pybind11包装Python代码。

创建Python插件

要创建一个新的Python插件,使用plugin_ctl工具:

./plugin_ctl create -p my_python_plugin

这将生成一个使用新Python SDK的Python插件模板,其中包括装饰器和辅助函数。

Python插件特性

  • 使用@tool装饰器定义工具
  • 自动处理JSON
  • 流式工具支持
  • 参数验证助手
  • 与MCP协议轻松集成

有关Python插件开发的详细信息,请参阅Python插件文档

插件开发

详细信息请参阅plugins/README.md

API参考

服务器在HTTP上实现了JSON-RPC 2.0协议。所有请求应发送到/mcp端点。

资源管理

MCPServer++ 提供了对MCP资源原语的基本支持,允许向LLMs暴露数据和内容。资源可以通过以下JSON-RPC方法访问:

  • resources/list:列出可用资源
  • resources/read:读取特定资源的内容
  • resources/write:写入特定资源的内容(如果允许)

示例资源请求

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "resources/read",
  "params": {
    "name": "example.txt"
  }
}

示例资源响应

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": "这是示例资源的内容。",
    "contentType": "text/plain",
    "lastModified": "2025-05-13T10:00:00Z"
  }
}

示例工具请求(现有)

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools",
  "params": {}
}

示例工具响应(现有)

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": [
    {
      "name": "read_file",
      "description": "读取文件",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "要读取的文件路径"
          }
        },
        "required": ["path"]
      }
    }
  ]
}

Docker部署

构建和运行

  1. 多阶段构建(镜像大小优化至10-15MB)

    docker build -t mcp-server .
    docker run -p 6666:6666 -v $(pwd)/plugins:/plugins -v $(pwd)/certs:/certs mcp-server
    
  2. HTTPS配置(需要挂载证书目录)

    # 通过在config.ini中设置enable_https=1启用HTTPS
    # 将证书文件放置在容器内的/certs目录中
    docker run -p 6667:6667 -v $(pwd)/certs:/certs mcp-server
    

插件系统

  • 插件路径映射:容器插件目录为/plugins,建议通过卷映射本地目录
  • 插件加载:支持运行时热加载(确保正确的文件权限)

镜像优化

  • 基于最小的gcr.io/distroless/cc-debian12基础镜像
  • 静态链接+调试信息剥离(LTO优化)
  • 国内用户可以配置镜像加速器(见配置示例)

Docker Hub

预构建的Docker镜像可在Docker Hub上获取:https://hub.docker.com/r/mgzy/mcp-server

您可以直接拉取并运行最新镜像:

docker pull mgzy/mcp-server
docker run -p 6666:6666 -v $(pwd)/plugins:/plugins -v $(pwd)/certs:/certs mgzy/mcp-server

CI/CD流水线

我们的项目使用GitHub Actions进行持续集成和部署。流水线自动在多个平台上构建和测试服务器:

支持的平台

  • Ubuntu 22.04(GitHub Actions最新LTS)
  • Ubuntu 24.04(GitHub Actions最新Ubuntu发行版)
  • Windows Server 2022(GitHub Actions最新Windows)

构建变体

我们提供了两种构建变体以满足不同的需求:

  1. 完整构建:包含所有库和开发头文件
  2. 最小构建:仅包含可执行文件和必要文件(无开发头文件或库)

打包格式

CI/CD流水线生成多种格式的包:

  • Windows:ZIP,NSIS安装程序(EXE)
  • Linux:DEB,RPM,TAR.GZ,ZIP

贡献

我们欢迎社区的贡献!请参阅CONTRIBUTING.md了解如何为该项目做出贡献的指南。

开发环境设置

  1. 分叉仓库
  2. 创建功能分支
  3. 进行更改
  4. 如适用添加测试
  5. 提交拉取请求

许可证

本项目采用MIT许可证——详情请参阅LICENSE文件。


<div align="center"> <p>为AI社区打造,充满爱心</p> <p><a href="https://github.com/caomengxuan666/MCPServer.cpp">GitHub</a> | <a href=https://github.com/caomengxuan666/MCPServer.cpp/issues>问题反馈</a></p> </div> ```