C++ MCP服务器

一个高性能的MCP服务器,用于动态编译、运行、调试和分析C++代码,适用于竞争编程平台、AI驱动开发工具和教育平台。

  • by CassiopeiaCode
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 CassiopeiaCode/Polyglot-CPP

使用说明

Polyglot CPP:C++MCP服务器

英语 | 简体中文

一个功能强大、高性能的MCP(模型驱动的联合编程协议)服务器,旨在动态编译、运行、调试和分析C++代码。作为不断发展的MCP生态系统的重要组成部分,该工具非常适合竞争性编程平台、人工智能驱动的开发工具、教育平台和快速C++原型。

🌟 为什么是这个项目?

模型上下文协议(MCP)正在彻底改变人工智能模型与外部工具的交互方式。虽然生态系统正在迅速扩展,但存在一个关键的差距:一个用于C++语言的专用、功能齐全的MCP服务器,这是性能关键计算的基石之一。

polyglot-cpp 是为了填补这一空白而建造的。它不仅仅是另一个在线编译器;它是一个现成的、API驱动的桥,将C++的强大功能(包括调试和分析)连接到任何MCP-兼容的人工智能助手或工作流程。它的创建是因为GitHub上的公共MCP生态系统中缺少具有此特定功能集的工具。

✨ 主要特点

  • 🚀 在飞行编译:使用编译C++代码 clang++ 启用了基本标志。
  • 🏃‍♂️ 超时控制执行:以10秒的执行超时运行编译后的代码,以防止无限循环和进程失控。
  • 🐞 集成内存调试:自动启用AddressSanitizer(-fsanitize=address)捕获常见的内存错误,如分段错误和缓冲区溢出,并提供详细的报告。
  • ⏱️ 性能分析:使用生成简洁的绩效报告 gprof 以识别热点和函数调用时间。
  • 💾 持久性伪影:编译后的程序将存储24小时,允许在不重新编译的情况下重复执行。
  • 🔌 简单API:使用三个简单的工具,通过MCP协议展示一个干净直观的API。

🛠️ 先决条件

在开始之前,请确保您的系统上安装了以下内容:

  • Python 3.9+
  • clang++ 编译器
  • gprof (通常是binutils的一部分)

这些工具必须在您的系统中可用 PATH.

⚙️ 安装

  1. 克隆存储库:

    git clone https://github.com/CassiopeiaCode/Polyglot-CPP.git
    cd Polyglot-CPP
    
  2. 安装依赖项: 此项目使用 uv 用于包管理。

    pip install uv
    uv pip install -r requirements.txt 
    # If you don't have a requirements.txt, you can install from pyproject.toml
    # uv pip install .
    

    (注意:您可能需要创建一个 requirements.txt 从 pyproject.toml 或直接安装依赖项)。

🚀 运行服务器

要启动MCP服务器,请运行 main.py:

python main.py

服务器将在上启动并可访问 0.0.0.0:53482 使用SSE传输。

🌐 MCP生态系统

此服务器由以下组件构建 FastMCP,用于 模型上下文协议(MCP).MCP是一个开放标准,旨在成为“AI的USB-C端口”,允许语言模型与外部工具和数据源无缝连接。

通过符合MCP, polyglot-cpp 任何兼容MCP的客户端或AI助手都可以立即发现和使用它,使其成为这个不断发展的生态系统中有价值的即插即用的补充。

📚 API/工具

服务器通过MCP协议提供三个主要工具。

1. create_program

编译C++代码并返回 file_id 对于已编译的二进制文件。

  • 描述:接受C++代码作为字符串,使用分析和地址清理标志对其进行编译,并存储二进制文件。
  • 参数:
    • content (string,必填):要编译的C++源代码。
  • 退货:
    • success (布尔值): true 如果编译成功, false 否则。
    • file_id (string):编译程序的唯一ID。
    • error (字符串,可选):如果编译失败,则显示编译错误消息。

2. run_program

使用其 file_id.

  • 描述:运行已编译的程序。您可以为差异化提供标准输入和预期输出。
  • 参数:
    • file_id (string,必填):要运行的程序的ID。
    • custom_input (string,可选):传递给程序的标准输入。
    • expected_output (string,可选):要比较的预期标准输出。
  • 退货:
    • success (布尔值): true 如果执行成功。
    • stdout (string):程序的标准输出。
    • stderr (string):程序的标准错误。
    • diff (string,可选):实际输出和预期输出之间的统一差异。
    • run_time (float):执行时间(秒)。
    • profiling_report (string):一份简明的报告 gprof.

3. create_and_run_program

一个方便的工具,可以在一个步骤中编译和运行代码。

  • 描述联合 create_program 和 run_program.
  • 参数:与 create_program 和 run_program 结合。
  • 退货:一个包含创建和执行结果的组合JSON对象。

🤝 贡献

欢迎投稿!如果您对新功能、错误修复或改进有想法,请打开问题或提交拉取请求。

  1. 分叉项目
  2. 创建功能分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 推到分支机构(git push origin feature/AmazingFeature)
  5. 打开拉取请求

📄 许可证

该项目在MIT许可证下分发。看 LICENSE 文件以获取更多信息。