codecanvas-mcp
CodeCanvas MCP
Verstehe ein unbekanntes Python-System, bevor du Tausende Tokens damit verbringst, es Datei für Datei zu lesen.
CodeCanvas ist ein lokaler Server für das Model Context Protocol, der statische Analyse für Python durchführt. Er macht projektweite Aufrufpfade und Kontrollfluss zu kompakten, vibeziationsfähigen Antworten über Verzweigungen, Aufrufer, Aufgerufene, Seiteneffekte und Auswirkungen von Änderungen.
Der Benchmark umfasst jetzt bereits festgelegte Stand der Google ADK, LangGraph und FastAPI. Auf einem Apple M4 Pro dauerte die gemessene Cold-Analyse zwischen 4,38s und 61,62s, und die mittlere Warm-find_symbols-Latenz lag zwischen 48,264ms und 293,778ms über diese Repositoryen hinweg. In einer kontrollierten 54-Sitzungen-Agentssuite behielten beide Bedingungen die gleichen eingebauten Codesuchwerkzeuge; die Intervention fügte nur logic_flow hinzu. Genau diese eine Ergänzung nutzte über drei paarweise Wiederholungen median 22,95 % weniger Gesamttokens und zeigte damit einen spürbaren Mehrwert auf der Basis normaler Code-Exploration. Die nicht zwischengespeicherten Tokens stiegen um 0,78 %, und die Antworten sind noch nicht blind ausgewertet. Siehe Methodik, vollständige Tabellen und Einschränkungen.
Damit kannst du Fragen beantworten wie:
Wer ruft diese Funktion auf, direkt oder transitiv?
Was kann diese Funktion erreichen, und wo treten Seiteneffekte auf?
Unter welchen Bedingungen kann diese Rückgabe oder Ausnahme auftreten?
Erreicht diese Quelle das Ziel wirklich in der gewünschten Form?
Welche API-Routen, Skripte oder veröffentlichten Exports werden von einem Diff betroffen?
CodeCanvas ist auf Python beschränkt und setzt Python 3.10 oder neuer voraus.
Sieh dir den Unterschied an
Stelle eine Frage:
Use logic_flow on UserService.update_user. Show its branches, outcomes,
downstream effects, and evidence quality.Ausschnitt aus der tatsächlichen Antwort auf der mitgelieferten FastAPI-Beispielanwendung:
{
"function": "app.services.user_service.UserService.update_user",
"source": "app/services/user_service.py:13",
"flow": [
"15 user = await self.user_repo.find_by_id(...)",
"16 if user is None:",
"17 → return None",
"18 → return await self.user_repo.update(user_id, user)"
],
"outcomes": [
{"at": 17, "detail": "None", "guards": ["user is None"]},
{"at": 18, "detail": "await self.user_repo.update(user_id, user)", "guards": []}
],
"downstream": [
{
"function": "app.repositories.user_repo.UserRepository.find_by_id",
"location": "app/repositories/user_repo.py:13",
"effects": ["db"]
},
{
"function": "app.repositories.user_repo.UserRepository.update",
"location": "app/repositories/user_repo.py:18",
"effects": ["db"]
}
],
"evidence_grade": "inferred",
"safe_to_summarize": false,
"response_guidance": "Do not turn inferred call edges into unconditional claims."
}Diese eine Antwort macht den vorzeitigen rückgabeweg, den Erfolgspfad, die nachgeschaltete Datenbankarbeit, die exakten Quellpositionen und deutlich, wie vorsichtig der Agent das Ergebnis derzeit zusammenfassen darf.
Related MCP server: python-mcp-server
Kurzstart
Installiere uv, falls uvx noch nicht zur Verfügung steht. Das Repository enthält ein gemeinsames Plugin-Paket mit nativen Manifesten für Claude Code und Codex. Installiere es aus dem CodeCanvas-Marktplatz:
# Claude Code
claude plugin marketplace add donggyun112/codecanvas
claude plugin install codecanvas@codecanvas
# Codex
codex plugin marketplace add donggyun112/codecanvas
codex plugin add codecanvas@codecanvasBeide Plugins verwenden uvx codecanvas-mcp und setzen den vollständigen Werkzeugsatz für Ihre MCP-Aktion frei. Siehe das Plugin-Paket für Tests im lokalen Checkout und Validierungsbefehle.
Wenn dein Client keine Plugins unterstützt, registriere den Server direkt. Für Claude Code:
claude mcp add codecanvas -- uvx codecanvas-mcpDamit wird der komplette Werkzeugkatalog bereitgestellt. Aktiviere den vollständigen Katalog so lange der MCP-Client On-Demand-Tool-Discovernachfrage oder eine Tool-Suche unterstützt: Das Client-System kann dann die relevanten Schemata nur laden, wenn sie gebraucht werden, sodass die übrigen CodeCanvas-Werkzeuge verfügbar bleiben, ohne bei jeder Modell-Anfrage die Schema-Kosten zu zahlen.
[mcp_servers.codecanvas]
command = "uvx"
args = ["codecanvas-mcp"]Falls dein Client dagegen jedes aktivierte Werkzeug-Schema in jede Modell-Anfrage einbindet, verwende stattdessen dieses Kompatibilitätsprofil:
[mcp_servers.codecanvas]
command = "uvx"
args = ["codecanvas-mcp"]
enabled_tools = ["logic_flow", "who_calls", "call_tree"]Diese Drei-Tool-Allowlist ist ein Fallback für Anglient-Clients mit Eager-Schema, keine Empfehlung, den Rest von CodeCanvas zu verwerfen. Für einen anderen MCP-Client verwende die entsprechende stdio-Konfiguration:
{
"mcpServers": {
"codecanvas": {
"command": "uvx",
"args": ["codecanvas-mcp"]
}
}
}Übergib beim ersten Werkzeugaufruf einen absoluten project_path. CodeCanvas merkt sich das zuletzt explizit gewählte Projekt für den Rest der Server-Sitzung.
Bei aktiviertem vollständigem Katalog meldet project_status Kandidaten-Analysewurzeln für verschachtelte Python-Projekte. Nutzer eines Kompaktprofils sollten die beabsichtigte verschachtelte Root explizit übergeben.
Bringen deinem Agenten bei, wann du ihn verwenden solltest
Werkzeuge hinzuzufügen garantiert nicht, dass ein Agent sie zum richtigen Zeitpunkt auswählt. Lege eine kurze Anweisung wie diese in AGENTS.md, CLAUDE.md oder die entsprechende Datei, die dein Coding-Agent nutzt:
## Code analysis
Use CodeCanvas before text search when you need to know:
- how a Python function branches, returns, and produces side effects;
- who calls it directly or transitively;
- what it reaches downstream through project-internal calls.
Pass `project_path` once, then reuse the active project. Treat
`safe_to_summarize: false`, inferred edges, ambiguity, and truncation as
qualifications rather than unconditional facts.
Start with `logic_flow`. Use `who_calls` for upstream impact and `call_tree`
for a deeper downstream trace.Frag deinen Agenten anschließend natürlich:
Use logic_flow first to understand checkout without repeated source searches.
What calls UserService.update_user, up to three hops?
What does checkout reach downstream, including HTTP or database effects?Bei aktiviertem vollständigem Katalog kann CodeCanvas auch folgende Fragen beantworten:
List the entrypoints in this project.
Under exactly what conditions can authenticate raise?
Verify that dry-run publish reaches _call_api.
Analyze the impact of the current diff.Warum nicht einfach grep oder ein LSP?
CodeCanvas ergänzt beides. Es ist für verhaltensbezogene Fragen gedacht, die sonst wiederholte Suchvorgänge und manuelle Rekonstruktion erfordern.
Anforderung | grep | LSP | CodeCanvas |
Exakter Text | Am besten geeignet | Nicht Aufgabe | weiterhin grep verwenden |
Definitionen und direkte Referenzen | Manuell | Nicht seine Aufgabe | Löst Symbole innerhalb strukturierter Ergebnisse |
Transitive Aufrufer und Aufgerufe | Wiederholte manuelle Sprünge | Referenzen sind kein Anrufpfad | Begrenzte Aufwärts- und Abwärtsgraphen |
Verzweigungsbedingungen und Ergebnisse | Quelle lesen und rekonstruieren | Meistens nicht modelliert | Strukturierter Fluss und geschützte Rückgaben/Aufrufe |
Seiteneffekte und Änderungsauswirkung | Manuell schlussfolgern | Meistens nicht modelliert | Nach Aufrufpfaden und Einstiegspunkten zugeordnete Effekte |
Unsicherheit | Keine Konfidenzmodell | Abhängig von der Auflösung | Evidenzgrad, Mehrdeutigkeit, Kürzung und Orientierung |
Was macht die Antworten vertrauenswürdig
Statische Analyse ist keine Laufzeitwahrheit, deshalb macht CodeCanvas Unsicherheit sichtbar, statt sie zu verstecken.
Jede erfolgreiche MCP-Antwort identifiziert die gewählte analysis_root und enthält Metadaten, die einem Agenten helfen zu entscheiden, wie stark das Ergebnis formulierbar ist:
evidence_gradebeschreibt die Stärke der aufgelösten Nachweise.inferred_edge_countundambiguous_callsdecken Annahmen und unsichere Aufrufkanten auf.truncatedzeigt, ob das begrenzte Antwortpaket Ergebnisse ausließ.safe_to_summarizezeigt, ob das Ergebnis eine unbedingte Behauptung unterstützt.response_guidanceerläutert, wie ein Ergebnis abzusichern, sonst will man es ausweisten.
verify_claim geht weiter und kombiniert Kandidatenpfade mit Verzweigungen und Return/Achse-Bedingungen. Es liefert true, false oder uncertain; nicht gestützte Qualifier und nur geschlossene Pfade können nie stillschweigend zu einem festen true werden.
Werkzeuge
Entdecken und verstehen
Werkzeug | Verwendungszweck |
| Aktives Stammstgrad, sowie Anzahl Python-Dateien, Cache, Worker-Interpreter, und Kandidaten für verschachtelte Projekte prüfen |
| FastAPI-Routen, Skripte, Funktions-Einträge und direction gepackte Bibliotheks-Exporte finden |
| Funktionen, Methoden und -Klassen mit exakten Treffer zuerst, sowie semantischer/abstruktur Basis finden |
| Kompakter, zitatbfähiger Blick auf Verzweigungen, Auflösungen, nachgeschaltete Aufrufe und Effekte |
| Triage einer Funktion anhand von Signatur, Docstring, Aufrufen, Seiteneffekten, Ausnahmen und sichtbarem Risiko |
| Treppenstruktur mit Subjekt, Bedingungen, Geertungen und Verzweigungstiefe |
| Frühzeit: Guards für jede Rückgabe oder Aufzug, sowie Komplexität und unerreichbaren Code anzeigen |
Verhalten verfolgen und Veränderung bewerten
Werkzeug | Verwendungszweck |
| Direkte oder transitive Caller stromaufwärts verfolgen |
| Projektinterne Caller stromabwärts verfolgen, Effekte direkt und transitiv zuordnen |
| Behauptung |
| Inline-Diff oder Git-Referenz auf geänderte Funktionen und betroffene Einstiegspunkte/Öffentliche Flächen abbilden |
Zustandsbezogene Fehler reproduzieren
Werkzeug | Verwendungszweck |
| Zustandsanhänge mit aufrufschema vergleuchen: Liest, Schreibt State, Reise ergebniswerte |
| Fokussierte simulierte oder explizite Einheiten ausführen mit In-Procedure und Abhängigkeits-Override |
Große Ergebnismengen werden beim Benchmark gekappt. Nutzefilter, kind, path, depth oder Pagination-Argumenten des jeweiligen Werkzeug verwendet, um die Antwort einzugrenzen, bevor er als vollständig gilt.
So funktioniert es
Projekt wählen. CodeCanvas erreicht die explizite Python-Projekt-Wurzel und merkt sie. Mehrdeutige verschachtelte Websurfer: Sie müssen auswählen statt raten.
StrukturAnalysen bauen. Python-AST-Analyse erstellt einen Call-Graphen des Projekts und kontrollflussdaten pro Funktion. Extraktoren ergänzen FastAPI-Routen und
Depends()-Chains, Skripten, generische Funktions-Entrypoints und Paket-Exports.Kompatible Analyse wiederverwenden. Aufrufgraph und Ents einCache im
<project>/.codecanvas/; während einer MCP-Session kann ein bereits vorhandener Builder wiederverwendet werden wird.Projekt Ergebnisse kompakt verfügbar machen. Jedes MCP-Werkzeug greift auf die gemeinsamen Analysen zu und liefert begrenzte Werte mit Ursprung, Evidenz, Mehrdeutigkeit und Truncation-Metadaten.
Die standardmäßige Analyselimit sind 5.000 Python-Dummies. Verhalten für große Projekte regelbar:
Variable | Default | Beschreibung |
|
| Maximale Anzahl zu analysierende Python-Dateien |
|
| Dateien werden in Schritten vor der Freigabe |
|
| Pause zwischen Batches in Millisekunden |
Sicherheit und Grenzen
CodeCanvas analysiert Python-Quellcode; es modelliert nicht jeden möglichen dynamischen Import, Monkey-Patch, Reflex oder Laufzeitwert.
Abgeleitete und mehrdeutige Kanten werden als Qualifikationen gemeldet, nicht als sichere Beweise befördert.
Statische Analyse-Werkzeuge lesen Dateien und schreiben den lokalen
.codecanvas/`-Cache. Kein online- Server ist nötig.simulate_state_transitionist komplexer: es importiert und führt vertrauensvollen Projektcode in einem separaten Prozess aus. Es dient zur fokussierten Reproduktion, nicht als Sicherheit-Sandbox. Projektcode kann weiterhin fs-, Netzwek- und Subprozeszugriffe sowie Import-Seiteneffekte ausführen.Der Simulator bevorzugt
<project>/.venvodervenv, danach die gleichen Verzeichnisse im übergeordneten Projekt. Dann gibt man mitpython_executableexplizit an und prüft die Rückmeldungworker, falls Imports fehlschlagen.
Messungen
Der latente Mixedness-Benchmark umfasst drei festgeschriebene Projekte mit 148–1.650 Python-Dateien und 4.468–16.960 indizierten Funktionen. Die Suite misst die kalte Analyse, sowie die erste und warme Suchlatenz und den Durchsatz mit acht Workern; der rohe Ergebnisse gehen als Benchmark-Artifacts in das Repo ein.
Die modellgestützte Evaluierung umfasst eingefrorene Aufgaben und versteckte Bewertungsraster für Google ADK, LangGraph und FastAPI. Sie vergleicht die integrierte Code‑Erkundung plus logic_flow mit derselben integrierten Code‑Erkundung allein. In 54 isolierten Sitzungen ergaben drei gepaarte Wiederholungen einen suite‑weiten Median von 22,95 % weniger vom Server gemeldeten Gesamt‑Tokens. Alle 27 Behandlungssitzungen schlossen den erforderlichen Tool‑Aufruf ab – ein direkter Beleg dafür, dass ein einziges CodeCanvas‑Tool einen echten Mehrwert bietet, ohne die vorhandenen Such‑Tools des Agenten zu ersetzen. Nicht gecachter Input plus Output stieg im Median um 0,78 %, und die Antworten sind noch nicht blind bewertet; es handelt sich also noch nicht um eine Aussage über Effizienz bei gleicher Qualität oder über Abrechnungskosten.
Siehe die vollständige Methodik, Ergebnistabellen, Reproduktionsbefehle und Audit-Artefakte.
Entwicklung
git clone https://github.com/donggyun112/codecanvas.git
cd codecanvas/core
uv sync --extra dev
cd ..
core/.venv/bin/python -m pytestDer Quellcode des Pakets liegt unter core/. Die Root-Testkonfiguration führt sowohl die Produkttests in tests/ als auch die Tests auf Paketebene in core/tests/ aus.
Issues und gezielte Reproduktionsfälle sind willkommen: https://github.com/donggyun112/codecanvas/issues.
Lizenz
CodeCanvas MCP ist eine Open-Source-Software, die unter der MIT License lizenziert ist.
This server cannot be installed
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 gradedqualityFmaintenanceEnables AI coding agents to efficiently navigate and understand large codebases by providing tools for entry point location, call chain analysis, and impact assessment, reducing context consumption and model costs.3GPL 3.0
- AlicenseNot gradedqualityCmaintenanceEnables deterministic static analysis of Python code, providing tools to inspect classes, functions, imports, dependencies, and more, without executing the code.1MIT
- AlicenseNot gradedqualityBmaintenanceExposes codebase memory as native tools for AI agents, enabling queries, feature tracing, impact analysis, and alignment verification.3AGPL 3.0
- AlicenseNot gradedqualityAmaintenanceProvides a dependency graph of any local repository with tools for change impact, transitive dependents, health audits, and more, enabling AI coding agents to see structure and refactor safely.4,9124MIT
Related MCP Connectors
Deterministic context layer for your codebase: change impact, blast radius, answers with receipts.
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
AI Agent with Architectural Memory. Impact analysis (free), tests and code from the graph (pro).
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/donggyun112/codecanvas'
If you have feedback or need assistance with the MCP directory API, please join our Discord server