C++与AI助手桥接工具

该项目展示如何通过Python MCP服务器在C++应用程序和AI助手之间建立桥接,支持Socket和gRPC两种通信协议。

  • by BingHanLin
  • C++
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 binghanlin/cpp_mcp-bridge-demo

使用说明

C++MCP桥演示

该项目演示了如何使用支持Socket和gRPC通信的Python MCP服务器在C++应用程序和AI助手之间创建桥梁。

项目结构

  • cpp_app/:具有业务逻辑的核心C++应用程序
  • mcp_server/:Python MCP服务器实现
  • proto/:gRPC的协议缓冲区定义

特性

  • Python MCP服务器:实现AI辅助集成的模型上下文协议
  • C++应用程序:具有命令处理功能的核心业务逻辑
  • 双重通信:支持Socket和gRPC协议

快速开始

先决条件

  • C++编译器:Visual Studio 2019+(在Windows上测试)
  • CMake:3.10或更高
  • python:使用UV包管理器时为3.10或更高

构建和设置

# 1. Clone and navigate to the project
git clone <repository-url>
cd cpp-mcp-bridge-demo

# 2. Build C++ application
cmake --preset MSVC_x64-debug
cmake --build --preset MSVC_x64-debug

# 3. Install Python dependencies
uv venv
uv pip install -r requirements.txt


# 4. Generate Python protobuf files for gRPC support
uv run python -m grpc_tools.protoc --python_out=./mcp_server --grpc_python_out=./mcp_server --proto_path=./proto ./proto/mcp_service.proto

⚠️ 注: 重新生成后,您必须手动检查并更新顶部的导入样式 mcp_server/mcp_service_pb2_grpc.py 致:

from . import mcp_service_pb2 as mcp__service__pb2

运行服务器

套接字模式(默认)

# Start C++ backend (socket server, default port 9876)
.\bin\cpp_app.exe socket 9876

# Start MCP server (in another terminal)
uv run mcp-server-demo --mode socket --socket-host localhost --socket-port 9876

gRPC模式

# Start C++ backend (gRPC server, default 0.0.0.0:50051)
.\bin\cpp_app.exe grpc localhost:50051

# Start MCP server (in another terminal)
uv run mcp-server-demo --mode grpc --grpc-address localhost:50051

📋 可用命令

对象管理

  • create_object(name, type, properties):创建对象(立方体、球体、摄影机)
  • delete_object(object_id):按ID删除对象
  • list_objects():列出场景中的所有对象
  • get_object_info(object_id):获取详细的对象信息

软件操作

  • get_software_info():获取软件信息和版本
  • get_software_status():获取当前软件状态
  • execute_software_command(command, params):执行命令(渲染、clear_scene、reset_camera)

项目管理

  • save_project(filename):将当前项目保存到文件
  • load_project(filename):从文件加载项目

🏗️ 建筑

通信流

AI Assistant ←→ Python MCP Server ←→(Socket or gRPC)←→ C++ Application

命令格式

请求:

{
    "type": "command_name",
    "params": {
        "param1": "value1",
        "param2": "value2"
    }
}

响应:

{
  "status": "success|error",
  "result": {...},
  "message": "error message if applicable"
}

🔧 发展

添加新命令

  1. C++端:将方法添加到 commandHandler 类
  2. Python端:在中添加相应的MCP工具功能 server.py

📄 许可证

MIT许可证-您可以根据自己的项目自由使用和修改。

🔗 参考文献