clangd-mcp
Provides C/C++ code intelligence via clangd, including symbol search, definition lookup, reference finding, type information, call hierarchy, and type hierarchy analysis.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@clangd-mcpfind all references to the function 'run_checks'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
clangd-mcp
Experimental — expect rough edges and breaking changes.
A minimal Model Context Protocol server that bridges AI assistants to clangd for C/C++ code intelligence.
How it works
Claude / Gemini ←─ MCP (stdio) ─→ server.py ←─ LSP (stdio) ─→ clangdserver.py speaks MCP to the AI client and LSP (JSON-RPC 2.0 over stdin/stdout)
to clangd. The two protocols are bridged by nine tools:
Tool | LSP call(s) | Description |
|
| Search symbols by name (fuzzy) |
|
| Show the definition site with source |
|
| List every usage, grouped by file |
|
| Show type signature and doc comment |
|
| Find concrete implementations of a virtual method or interface |
|
| Find every call site that calls a function |
|
| Find every function called by a function |
|
| List all symbols defined in a file |
|
| Show base classes and derived classes |
Related MCP server: fw-context-mcp
Requirements
Python ≥ 3.12
clangd on
$PATH(or specify--clangd)A
compile_commands.jsonfor your project (CMake:cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON)
Installation
uv tool install git+https://github.com/schuay/clangd-mcp.gitThis installs a clangd-mcp command into an isolated environment and puts a
shim on your $PATH. Upgrade later with:
uv tool upgrade clangd-mcpGemini CLI
curl -fsSL https://raw.githubusercontent.com/schuay/clangd-mcp/main/install-gemini.sh | bashThis installs the tool, prompts for project paths, and adds the server to
~/.gemini/settings.json. Requires jq.
Or add manually to ~/.gemini/settings.json:
{
"mcpServers": {
"clangd": {
"command": "clangd-mcp",
"args": [
"--compile-commands-dir", "/path/to/your/build",
"--workspace-dir", "/path/to/your/project",
"--seed-file", "/path/to/your/project/src/main.cpp"
]
}
}
}Options
All flags are optional:
Flag | Default | Description |
|
| Path to the clangd binary |
| (none) | Directory containing |
| current directory | Root of the C/C++ project |
| (none) | Source file to open at startup to trigger background indexing |
|
|
|
Tests
uv run python tests.py
# or with pytest for coloured output:
uv run pytest tests.py -vThe test suite runs without a real clangd binary — it drives the LSP client
with canned in-process responses and patches the global lsp object when
testing the MCP tool handlers.
File structure
server.py MCP server: tools, arg parsing, clangd lifecycle
lsp_client.py LSP client: subprocess management, JSON-RPC framing, queries
tests.py Unit tests (no clangd required)
pyproject.toml Dependencies (mcp>=1.0)This server cannot be installed
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/schuay/clangd-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server