ModAST-MCP
ModAST-MCP
Modulbewusster AST-MCP-Server für C++20/23-Projekte. Er verwendet einen persistenten clangd-Prozess für normale AST/LSP-Operationen und pflegt einen Modulindex auf Quellebene für Entitäten, die clangd 22 nicht als Symbole bereitstellt (module, export module und Importkanten).
Run
npm install
npm run build
node dist/index.jsDer Server verwendet MCP-stdio-Transport. In Codex/Claude Desktop zeigen Sie den Befehl auf node dist/index.js.
Related MCP server: clangd-mcp-server
Windows + Arch WSL
{
"mcpServers": {
"modast": {
"command": "node",
"args": ["D:/runtime/mcp/ModAST-MCP/dist/index.js"]
}
}
}Öffnen Sie zuerst einen Arbeitsbereich:
{
"root": "E:/github/cnetmod",
"buildDirectory": "E:/github/cnetmod/cmake-build-release-wsl",
"transport": "wsl",
"wslDistro": "Arch",
"experimentalModules": false
}mode akzeptiert auto, cpp oder modules und ist standardmäßig auf auto eingestellt. Der Auto-Modus prüft Modulerweiterungen und Compiler-Flags wie -x c++-module, -fmodule-output, /interface und /ifcOutput. Der reine cpp-Modus überspringt die PCM/modmap-Erkennung und aktiviert niemals die experimentelle Modulunterstützung von clangd.
workspace_open erstellt eine erweiterte Compilation Database im temporären Verzeichnis des Betriebssystems, isoliert durch einen Hash der Arbeitsbereichs- und Build-Pfade. Es verwendet alle .modmap-Dateien wieder, die CMake/Ninja generiert haben. Für Consumer-Übersetzungseinheiten ohne generierte Zuordnung löst es Importe auf Quellebene gegen vorhandene PCM-Dateien auf und erstellt eine zwischengespeicherte Response-Datei mit allen bekannten transitiven PCM-Zuordnungen. Lassen Sie experimentalModules für diesen schnellen Pfad deaktiviert; aktivieren Sie es nur, wenn die erforderlichen PCM-Dateien nicht vorhanden sind.
workspace_warm ist nicht blockierend; rufen Sie workspace_status auf, während es den persistenten clangd-Hintergrundindex aufbaut. Abfragen werden nach dem Öffnen der Dateien aus derselben clangd-Sitzung bedient.
Entwicklungsaktualisierungen und Datenträgerschreibvorgänge
Der Arbeitsbereich überwacht nur Dateien, die in compile_commands.json vorhanden sind, sowie bekannte .pcm- und .modmap-Artefakte. Er überwacht oder scannt nicht rekursiv jede Datei im Repository.
Das Bearbeiten einer überwachten Quelle aktualisiert den Modulgraphen im Speicher. Geöffnete Dokumente werden über
textDocument/didChangean clangd gesendet; es wird keine ModAST-Cache-Datei geschrieben.Das Bearbeiten einer Modulschnittstelle markiert ihr Modul als veraltet. AST-, Definitions-, Referenz- und Diagnoseantworten enthalten eine Warnung, bis das entsprechende PCM neu erstellt wurde.
PCM-, modmap- und Compilation-Database-Änderungen werden zu einer Arbeitsbereichsaktualisierung entprellt. Dies behandelt die normale Schleife Bearbeiten -> Ninja/CMake-Build -> Abfrage.
Neue Übersetzungseinheiten werden von
workspace_refreshübernommen, nachdem das Build-Systemcompile_commands.jsonaktualisiert hat.Generierte Compilation Databases und Response-Dateien verwenden Inhaltsvergleich. Identischer Inhalt wird nie neu geschrieben.
workspace_status.compileDatabasemeldetdiskWritesundcacheFilesReusedfür die letzte Vorbereitung.Temporäre Arbeitsbereichs-Caches werden beim Öffnen bereinigt, mit einer TTL von 14 Tagen, einem Limit von 20 inaktiven Arbeitsbereichen und einem Limit von 512 MB für inaktive Caches. Der aktive Arbeitsbereich wird beibehalten und die Bereinigungsergebnisse werden als
workspace_status.cacheCleanupbereitgestellt.Semantische Abfragen warten auf eine laufende Aktualisierung, sodass sie gegen den Ersatz-clangd-Prozess statt gegen einen gestoppten Client ausgeführt werden.
workspace_status meldet außerdem sourceChanges, lastChangeAt, watchedFiles, staleModules und refreshes, damit ein Agent entscheiden kann, ob modulübergreifende Daten aktuell sind.
Sowohl langlaufende Tools als auch workspace_open senden MCP-notifications/progress, wenn der Client ein Fortschritts-Token sendet. Langsame clangd-Anfragen senden alle fünf Sekunden einen Heartbeat. workspace_status ist auch sicher abzufragen: Es enthält phase, progressCompleted, progressTotal, elapsedMs und die letzten 20 menschenlesbaren events.
Werkzeuge
workspace_open,workspace_status,workspace_refresh,workspace_warmmodule_search,module_graphmodule_quality,formatast,document_symbols,workspace_symbolsdefinition,references,diagnostics
Zeilen- und Zeichenargumente sind 1-basiert. Für die Agent-Nutzung akzeptieren definition und references eine needle plus ein occurrence, wodurch manuelle Positionsberechnungen vermieden werden.
format delegiert an clangd/clang-format und respektiert die .clang-format-Datei des Projekts. Es ist standardmäßig nur als Vorschau verfügbar und gibt den formatierten Text plus LSP-Bearbeitungen zurück. apply=true ist erforderlich, um die Quelle zu schreiben. Vor dem Anwenden prüft der Server, ob die Datei noch mit dem clangd-Snapshot übereinstimmt; gleichzeitige Editor-Änderungen verursachen einen Konfliktfehler, anstatt überschrieben zu werden. Erfolgreiche Schreibvorgänge verwenden eine temporäre Datei im selben Verzeichnis und atomares Umbenennen und synchronisieren dann das persistente clangd-Dokument.
module_quality verwendet clangd-AST-Knoten statt Quell-Regexen. Es meldet umfangreiche Funktionsrümpfe in Modulschnittstelleneinheiten, ignoriert Templates und constexpr/consteval-Definitionen und warnt, wenn ein benanntes Modul keine .cpp-, .cc- oder .cxx-Implementierung oder Partitionsimplementierungseinheit hat. Eine zweite nicht exportierte .cppm-Datei erfüllt diese Architekturprüfung nicht. Schwellenwerte und Scan-Parallelität sind konfigurierbar.
Designhinweise
Das
textDocument/astvon clangd wird unverändert unterclangdAstzurückgegeben.Ein synthetischer
moduleContextfügt Moduleinheiten und Importe hinzu, da clangd 22 keinen AST-Knoten fürexport module ...zurückgibt und Modulnamen nicht als Arbeitsbereichssymbole indiziert.Die Modulanalyse ist bewusst quellenbasiert und unabhängig vom Compiler-Hersteller. Der clangd-Prozess bleibt die semantische Autorität für C++-Deklarationen.
Wenn
transportwslist, werden Windows-Arbeitsbereichspfade nur an der Prozessgrenze in/mnt/<drive>/...umgewandelt; MCP-Antworten werden zurück auf Windows-Pfade abgebildet.Das Schließen von MCP-stdio, das Beenden von stdin oder das Senden von SIGINT/SIGTERM schließt Dateiüberwacher und fährt clangd ordnungsgemäß herunter.
Verifizierung
npm test führt Unit- und Lebenszyklustests aus. Setzen Sie MODAST_INTEGRATION=1, um einen Live-clangd-Test hinzuzufügen; er verwendet Arch WSL unter Windows und natives clangd unter Linux. GitHub Actions testet Node.js 20 und 24 unter Windows und Linux, führt den Live-Linux-clangd-Test aus und lehnt Sicherheitshinweise mit hoher Schwere für Produktionsabhängigkeiten ab.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI clients to perform local code search, indexing, and analysis across Java, JavaScript/TypeScript, .NET/C#, and Python projects through the MCP protocol.2Apache 2.0
- AlicenseAqualityFmaintenanceProvides C++ code intelligence tools for AI agents via the Model Context Protocol, enabling symbol navigation, type information, and diagnostics.943Mozilla Public 2.0
- FlicenseNot gradedqualityBmaintenanceWorkspace-aware MCP server that provides AI clients with structural code understanding via AST parsing, hybrid retrieval, and git history, enabling accurate code search, definition lookup, and blame analysis.
- AlicenseAqualityDmaintenanceMCP server for C/C++ code analysis using clangd and clang tools, providing diagnostics, symbol search, include analysis, function listing, and code formatting.5MIT
Related MCP Connectors
Hosted MCP memory: save sessions/decisions once, search from Claude, Cursor, ChatGPT. EU-hosted FTS.
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/banderzhm/ModAST-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server