使用说明
C++MCP服务器
用于使用libclang分析C++代码库的MCP(模型上下文协议)服务器。
为什么使用这个?
这个服务器提供了对代码的语义理解,而不是让Claude grep通过你的C++代码库来理解结构。Claude可以立即找到类、函数及其关系,而不会迷失在数千个文件中。它理解C++语法、继承层次结构和调用图,使Claude能够像IDE一样浏览你的代码库。
特性
上下文高效的C++代码分析:
- 搜索类 -按名称模式查找类
- 搜索功能 -按名称模式查找函数
- 获取密码信息 -获取详细的类信息(方法、成员、继承)
- get_function_签名 -获取函数签名和参数
- find_in_file -在特定文件中搜索符号
- get_class_hierchy -获取类的完整继承层次结构
- get_drived_classes -查找从基类继承的所有类
- find_callers -查找调用特定函数的所有函数
- find_calles -查找特定函数调用的所有函数
- get_call_path -查找从一个函数到另一个函数的调用路径
先决条件
- Python 3.9或更高版本
- pip(Python包管理器)
- Git(用于克隆存储库)
- LLVM的libclang(安装脚本将尝试下载可移植的构建)
设置
- 克隆存储库:
git clone <repository-url>
cd CPlusPlus-MCP-Server
-
为您的平台运行安装脚本(这将创建一个虚拟环境,安装依赖项,并在可能的情况下获取libclang):
- 视窗
server_setup.bat - Linux/macOS
./server_setup.sh
- 视窗
-
测试安装(推荐):
# Activate the virtual environment first
mcp_env\Scripts\activate
# Run the installation test
python scripts\test_installation.py
这将验证所有组件是否正确安装和工作。测试脚本位于 scripts/test_installation.py.
配置Claude代码
要将此MCP服务器与Claude代码一起使用,您需要将其添加到Claude配置文件中。
-
查找并打开您的Claude配置文件。常见位置包括:
C:\Users\<YourUsername>\.claude.json C:\Users\<YourUsername>\AppData\Roaming\Claude\.claude.json %APPDATA%\Claude\.claude.json确切位置可能因您的Claude安装而异。
-
将C++MCP服务器添加到
mcpServers章节:{ "mcpServers": { "cpp-analyzer": { "command": "python", "args": [ "-m", "mcp_server.cpp_mcp_server" ], "cwd": "YOUR_INSTALLATION_PATH_HERE", "env": { "PYTHONPATH": "YOUR_INSTALLATION_PATH_HERE" } } } }重要: 替换
YOUR_INSTALLATION_PATH_HERE使用克隆此存储库的实际路径。 -
重新启动Claude Desktop以使更改生效。
配置Codex CLI
要在OpenAI Codex CLI中使用此MCP服务器:
-
确保已创建虚拟环境(请参阅上面的设置)。
-
创建一个
.mcp.json使用Codex打开的项目中的文件。CLI读取此文件以发现MCP服务器。 -
在虚拟环境中添加一个指向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. -
重新启动Codex CLI(或运行
codex reload)因此,它采用了新的服务器定义。 -
在Codex中,使用MCP调色板或提示指令(例如,“使用cpp分析器工具将项目目录设置为…”)开始为C++项目建立索引。
如果你保持 .mcp.json 您还可以在此存储库中添加一个文件 "cwd": "YOUR_REPO_PATH" 这样Codex就可以从正确的目录启动服务器。
与Claude一起使用
配置后,您可以在与Claude的对话中使用C++分析器:
-
首先,让Claude使用MCP工具设置您的项目目录:
"Use the cpp-analyzer tool to set the project directory to C:\path\to\your\cpp\project"注: 对于非常大的项目,初始索引可能需要很长时间(对于包含数千个文件的代码库,需要几分钟)。服务器将缓存结果,以便更快地进行后续查询。
-
然后你可以问这样的问题:
- “查找所有包含‘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_patters:要从分析中排除的文件模式
- 依赖目录:包含第三方依赖关系的目录
- include_依赖关系:是否分析依赖目录中的文件
- max_file_size_mb:要分析的最大文件大小(跳过较大的文件)
故障排除
常见问题
-
“未找到libclang”错误
- 跑
server_setup.bat(Windows)或./server_setup.sh(Linux/macOS)让项目自动下载libclang - 如果自动下载失败,请手动下载libclang:
- 首选https://github.com/llvm/llvm-project/releases
- 下载适合您系统的文件:
- 视窗:
clang+llvm-*-x86_64-pc-windows-msvc.tar.xz - macOS:
clang+llvm-*-x86_64-apple-darwin.tar.xz - Linux:
clang+llvm-*-x86_64-linux-gnu-ubuntu-*.tar.xz
- 视窗:
- 提取libclang库并将其复制到适当的位置:
- 视窗:复制
bin\libclang.dll向lib\windows\libclang.dll - macOS:复制
lib\libclang.dylib向lib\macos\libclang.dylib - Linux:复制
lib\libclang.so.*向lib\linux\libclang.so
- 视窗:复制
- 跑
-
服务器无法启动
- 检查是否安装了Python 3.9+:
python --version - 验证是否安装了所有依赖项:
pip install -r requirements.txt - 运行安装测试以识别问题:
mcp_env\Scripts\activate python -m mcp_server.test_installation
- 检查是否安装了Python 3.9+:
-
克劳德无法识别服务器
- 确保路径
.claude.json是绝对路径 - 修改配置后重新启动Claude Desktop
- 确保路径
-
Claude使用grep/glob而不是C++分析器
- 在提示中明确:询问C++代码时,说“使用cpp分析器…”
- 为您的项目添加说明
CLAUDE.md告诉Claude在C++符号搜索中更喜欢cpp分析器的文件 - cpp分析器在查找类、函数和理解代码结构方面比grep快得多
