返回市场
C++_MCP

C++_MCP

作者:kandrwmrtn15 星标更新:2025-09-18

项目介绍

C++ MCP 服务器

这是一个使用 libclang 分析 C++ 代码库的 MCP(模型上下文协议)服务器。

为什么使用这个?

与其让 Claude 在你的 C++ 代码库中使用 grep 来理解结构,这个服务器提供了对代码的语义理解。Claude 可以立即找到类、函数及其关系,而不会迷失在数千个文件中。它理解 C++ 语法、继承层次结构和调用图——使 Claude 能够像集成开发环境一样导航你的代码库。

功能

上下文高效的 C++ 代码分析:

  • search_classes - 按名称模式查找类
  • search_functions - 按名称模式查找函数
  • get_class_info - 获取详细的类信息(方法、成员、继承)
  • get_function_signature - 获取函数签名和参数
  • find_in_file - 在特定文件中搜索符号
  • get_class_hierarchy - 获取类的完整继承层次结构
  • get_derived_classes - 查找从基类继承的所有类
  • find_callers - 查找调用特定函数的所有函数
  • find_callees - 查找被特定函数调用的所有函数
  • get_call_path - 查找从一个函数到另一个函数的调用路径

先决条件

  • Python 3.9 或更高版本
  • pip(Python 包管理器)
  • Git(用于克隆仓库)
  • LLVM 的 libclang(设置脚本会尝试下载可移植构建)

设置

  1. 克隆仓库:
git clone <repository-url>
cd CPlusPlus-MCP-Server
  1. 运行适用于您平台的设置脚本(这会创建虚拟环境,安装依赖项,并尽可能获取 libclang):

    • Windows
      server_setup.bat
      
    • Linux/macOS
      ./server_setup.sh
      
  2. 测试安装(推荐):

# 首先激活虚拟环境
mcp_env\Scripts\activate

# 运行安装测试
python scripts\test_installation.py

这将验证所有组件是否正确安装并运行正常。测试脚本位于 scripts/test_installation.py

配置 Claude Code

要将此 MCP 服务器与 Claude Code 结合使用,需要将其添加到您的 Claude 配置文件中。

  1. 找到并打开您的 Claude 配置文件。常见位置包括:

    C:\Users\<YourUsername>\.claude.json
    C:\Users\<YourUsername>\AppData\Roaming\Claude\.claude.json
    %APPDATA%\Claude\.claude.json
    

    具体位置可能因您的 Claude 安装而异。

  2. 将 C++ MCP 服务器添加到 mcpServers 部分:

    {
      "mcpServers": {
        "cpp-analyzer": {
          "command": "python",
          "args": [
            "-m",
            "mcp_server.cpp_m_服务器"
          ],
          "cwd": "YOUR_INSTALLATION_PATH_HERE",
          "env": {
            "PYTHONPATH": "YOUR_INSTALLATION_PATH_HERE"
          }
        }
      }
    }
    

    重要:YOUR_INSTALLATION_PATH_HERE 替换为您克隆此仓库的实际路径。

  3. 重启 Claude Desktop 以使更改生效。

配置 Codex CLI

要在 OpenAI Codex CLI 中使用此 MCP 服务器:

  1. 确保已创建虚拟环境(参见上述设置)。

  2. 在使用 Codex 打开的项目中创建一个 .mcp.json 文件。CLI 读取此文件以发现 MCP 服务器。

  3. 添加一个指向虚拟环境中 Python 模块的条目。将 YOUR_REPO_PATH 替换为此仓库的绝对路径。

    {
      "mcpServers": {
        "cpp-analyzer": {
          "type": "stdio",
          "command": "YOUR_REPO_PATH/mcp_env/bin/python",
          "args": [
            "-m",
            "mcp_server.cpp_mcp_server"
          ],
          "env": {
            "PYTHONPATH": "YOUR_REPO_PATH"
          }
        }
      }
    }
    

    在 Windows 上将 command 更改为 YOUR_REPO_PATH\\mcp_env\\Scripts\\python.exe

  4. 重新启动 Codex CLI(或运行 codex reload),以便它识别新的服务器定义。

  5. 在 Codex 内部,使用 MCP 调色板或提示指令(例如,“使用 cpp-analyzer 工具将项目目录设置为...”)来开始索引您的 C++ 项目。

如果将 .mcp.json 文件放在此仓库内,还可以添加一个 "cwd": "YOUR_REPO_PATH" 条目,以便 Codex 从正确的目录启动服务器。

使用 Claude

配置完成后,您可以在与 Claude 的对话中使用 C++ 分析器:

  1. 首先,请 Claude 使用 MCP 工具设置项目目录:

    "使用 cpp-analyzer 工具将项目目录设置为 C:\path\to\your\cpp\project"
    

    注意: 对于非常大的项目(数千个文件),初始索引可能需要很长时间(几分钟)。服务器会缓存结果以加快后续查询速度。

  2. 然后您可以提问:

    • “查找所有包含 'Actor' 的类”
    • “显示 Component 类的详细信息”
    • “BeginPlay 函数的签名是什么?”
    • “搜索与物理相关的函数”
    • “显示 GameObject 的继承层次结构”
    • “查找调用 Update() 的所有函数”
    • “Render() 调用了哪些函数?”

架构

  • 使用 libclang 进行准确的 C++ 解析
  • 缓存解析的 AST 以提高性能
  • 支持增量分析和项目范围搜索
  • 提供详细的符号信息,包括:
    • 带有参数类型和名称的函数签名
    • 类成员、方法和继承
    • 调用图分析以理解代码流
    • 文件位置以方便导航

配置选项

服务器行为可以通过 cpp-analyzer-config.json 进行配置:

{
  "exclude_directories": [".git", ".svn", "node_modules", "build", "Build"],
  "exclude_patterns": ["*.generated.h", "*.generated.cpp", "*_test.cpp"],
  "dependency_directories": ["vcpkg_installed", "third_party", "external"],
  "include_dependencies": true,
  "max_file_size_mb": 10
}
  • exclude_directories:项目扫描时跳过的目录
  • exclude_patterns:排除分析的文件模式
  • dependency_directories:包含第三方依赖的目录
  • include_dependencies:是否分析依赖目录中的文件
  • max_file_size_mb:分析的最大文件大小(更大的文件会被跳过)

故障排除

常见问题

  1. “未找到 libclang” 错误

    • 运行 server_setup.bat(Windows)或 ./server_setup.sh(Linux/macOS)以让项目自动下载 libclang
    • 如果自动下载失败,手动下载 libclang:
      1. 访问:https://github.com/llvm/llvm-project/releases
      2. 下载适合您系统的文件:
        • Windowsclang+llvm-*-x86_64-pc-windows-msvc.tar.xz
        • macOSclang+llvm-*-x86_64-apple-darwin.tar.xz
        • Linuxclang+llvm-*-x86_64-linux-gnu-ubuntu-*.tar.xz
      3. 解压并将 libclang 库复制到适当的位置:
        • Windows:将 bin\libclang.dll 复制到 lib\windows\libclang.dll
        • macOS:将 lib\libclang.dylib 复制到 lib\macos\libclang.dylib
        • Linux:将 lib\libclang.so.* 复制到 lib\linux\libclang.so
  2. 服务器无法启动

    • 检查 Python 3.9+ 是否已安装:python --version
    • 验证所有依赖项是否已安装:pip install -r requirements.txt
    • 运行安装测试以识别问题:
      mcp_env\Scripts\activate
      python -m mcp_server.test_installation
      
  3. Claude 无法识别服务器

    • 确保 .claude.json 中的路径是绝对路径
    • 修改配置后重启 Claude Desktop
  4. Claude 使用 grep/glob 而不是 C++ 分析器

    • 在提示中明确:当询问 C++ 代码时说“使用 cpp-analyzer...”
    • 在项目的 CLAUDE.md 文件中添加指示,告诉 Claude 在进行 C++ 符号搜索时优先使用 cpp-analyzer
    • cpp-analyzer 在查找类、函数和理解代码结构方面比 grep 快得多