clangd-mcp
Bridges AI assistants to clangd for C/C++ code intelligence, providing tools for symbol search, definitions, references, type info, and more.
README
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) ─→ clangd
server.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 |
|---|---|---|
find_symbol |
workspace/symbol |
Search symbols by name (fuzzy) |
get_definition |
workspace/symbol → textDocument/definition |
Show the definition site with source |
find_references |
workspace/symbol → textDocument/references |
List every usage, grouped by file |
get_type_info |
workspace/symbol → textDocument/hover |
Show type signature and doc comment |
find_implementations |
workspace/symbol → textDocument/implementation |
Find concrete implementations of a virtual method or interface |
get_callers |
workspace/symbol → prepareCallHierarchy → incomingCalls |
Find every call site that calls a function |
get_callees |
workspace/symbol → prepareCallHierarchy → outgoingCalls |
Find every function called by a function |
list_file_symbols |
textDocument/documentSymbol |
List all symbols defined in a file |
get_type_hierarchy |
workspace/symbol → prepareTypeHierarchy → supertypes + subtypes |
Show base classes and derived classes |
Requirements
- Python ≥ 3.12
- uv
- 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.git
This installs a clangd-mcp command into an isolated environment and puts a
shim on your $PATH. Upgrade later with:
uv tool upgrade clangd-mcp
Gemini CLI
curl -fsSL https://raw.githubusercontent.com/schuay/clangd-mcp/main/install-gemini.sh | bash
This 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 |
|---|---|---|
--clangd |
clangd |
Path to the clangd binary |
--compile-commands-dir |
(none) | Directory containing compile_commands.json |
--workspace-dir |
current directory | Root of the C/C++ project |
--seed-file |
(none) | Source file to open at startup to trigger background indexing |
--log-level |
WARNING |
DEBUG / INFO / WARNING / ERROR (to stderr) |
Tests
uv run python tests.py
# or with pytest for coloured output:
uv run pytest tests.py -v
The 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)
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.