Local LSP / MCP / Plugin Strategy¶
This page covers local editor and helper-tool defaults only. AI workflow and branch rules still live in AGENTS.md and .github/copilot-instructions.md.
Default stack¶
- Primary LSP: use
clangdfirst; do not stack a second C++ language engine for routine work. - Compilation database: standardize on
build/clang-debug/compile_commands.jsonfrom theclang-debugpreset. - VS Code defaults: the repo already pins
clang-debugas the configure/build/test preset and copiescompile_commands.jsonto the workspace root soclangd, Neovim, Cursor, and Windsurf can reuse it. - Recommended extensions stay minimal:
vscode-clangdandCMake Tools. The VS Code workspace disables thecpptoolsIntelliSense engine so it does not fightclangd.
Quick start¶
# Generate the compilation database
./scripts/core/build --preset clang-debug
# or configure only
cmake --preset clang-debug
After that, the editor should read either:
build/clang-debug/compile_commands.json(.clangdfallback path)- or workspace-root
compile_commands.json(copied there by VS Code CMake Tools)
MCP boundary¶
- Do not add a repo-specific MCP server by default. This is a near-finished local C++/CMake/Conan repo, and
clangd + compile_commands + scripts/core/*already covers most navigation, diagnostics, and patching work. - Use MCP only when you need off-repo state, such as GitHub PRs/issues/Actions, external docs, or web search.
- MCP does not replace the local toolchain: header jumps, references, completion, and diagnostics should come from
clangd, not from an extra search-oriented MCP layer.
Integrations we are intentionally not adopting¶
- No local code-search or filesystem MCP: the repo already has
clangd,rg,git, andgh; another MCP index adds duplicate context with little value. - No parallel C++ LSPs: avoid
clangd + cpptools IntelliSense,clangd + ccls, etc. They create duplicate diagnostics, conflicting flags, and noisy completions; the VS Code workspace already disables thecpptoolsIntelliSense engine. - No dedicated MCP for CMake or Conan: presets,
scripts/core/build, andcompile_commands.jsonare already the authoritative path. - No editor-specific plugin matrix: Cursor, Windsurf, VS Code, and Neovim only need to consume the same compilation database; the repo will not maintain a separate plugin recipe for each editor.
Trade-offs¶
- The upside is a smaller setup, cleaner context, and behavior closer to CI.
- The trade-off is that remote platform data (PR status, Actions logs, web docs) still stays opt-in through
gh, a browser, or MCP instead of being forced into one plugin layer.