MCP Tree-sitter Server
Ein Model Context Protocol (MCP) Server, der Code-Analyse-Funktionen mittels tree-sitter bereitstellt und entwickelt wurde, um KI-Assistenten intelligenten Zugriff auf Codebasen mit angemessenem Kontextmanagement zu ermöglichen. Claude Desktop ist das Ziel für die Referenzimplementierung.
Funktionen
🔍 Flexible Erkundung: Untersuchen Sie Code auf verschiedenen Granularitätsebenen
🧠 Kontextmanagement: Bietet genau die richtige Menge an Informationen, ohne das Kontextfenster zu überlasten
🌐 Sprachunabhängig: Unterstützt viele Programmiersprachen, darunter Python, JavaScript, TypeScript, Go, Rust, C, C++, C#, Swift, Java, Kotlin, Dart, Julia und APL via tree-sitter-language-pack
🌳 Strukturbewusst: Nutzt AST-basiertes Verständnis mit effizienter cursor-basierter Navigation
🔎 Durchsuchbar: Finden Sie spezifische Muster mittels Textsuche und tree-sitter-Abfragen
🔄 Caching: Optimierte Leistung durch Caching von Syntaxbäumen
🔑 Symbol-Extraktion: Extrahieren und analysieren Sie Funktionen, Klassen und andere Code-Symbole
📊 Abhängigkeitsanalyse: Identifizieren und analysieren Sie Code-Abhängigkeiten und Beziehungen
🧩 Zustandspersistenz: Behält Projektregistrierungen und zwischengespeicherte Daten zwischen Aufrufen bei
🔒 Sicher: Integrierte Sicherheitsgrenzen und Eingabevalidierung
Eine umfassende Liste aller verfügbaren Befehle, deren aktueller Implementierungsstatus und eine detaillierte Funktionsmatrix finden Sie im Dokument FEATURES.md.
Related MCP server: code-index-mcp
Installation
Voraussetzungen
Python 3.10+
Tree-sitter Sprach-Parser für Ihre bevorzugten Sprachen
Grundlegende Installation
pip install mcp-server-tree-sitterEntwicklungsinstallation
git clone https://github.com/wrale/mcp-server-tree-sitter.git
cd mcp-server-tree-sitter
pip install -e ".[dev]"Schnellstart
Ausführung mit Claude Desktop
Sie können den Server in Claude Desktop entweder über das MCP CLI oder durch manuelle Konfiguration von Claude Desktop verfügbar machen.
Verwendung des MCP CLI
Registrieren Sie den Server bei Claude Desktop:
mcp install mcp_server_tree_sitter.server:mcp --name "tree_sitter"Manuelle Konfiguration
Alternativ können Sie Claude Desktop manuell konfigurieren:
Öffnen Sie Ihre Claude Desktop-Konfigurationsdatei:
macOS/Linux:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Erstellen Sie die Datei, falls sie nicht existiert.
Fügen Sie den Server zum Abschnitt
mcpServershinzu:{ "mcpServers": { "tree_sitter": { "command": "python", "args": [ "-m", "mcp_server_tree_sitter.server" ] } } }Alternativ, wenn Sie uv oder einen anderen Paketmanager verwenden:
{ "mcpServers": { "tree_sitter": { "command": "uv", "args": [ "--directory", "/ABSOLUTE/PATH/TO/YOUR/PROJECT", "run", "-m", "mcp_server_tree_sitter.server" ] } } }Hinweis: Stellen Sie sicher, dass Sie
/ABSOLUTE/PATH/TO/YOUR/PROJECTdurch den tatsächlichen absoluten Pfad zu Ihrem Projektverzeichnis ersetzen.Speichern Sie die Datei und starten Sie Claude Desktop neu.
Das MCP-Tool-Symbol (Hammer) erscheint in der Benutzeroberfläche von Claude Desktop, sobald Sie mindestens einen MCP-Server ordnungsgemäß konfiguriert haben. Sie können dann auf die Funktionalität des tree_sitter-Servers zugreifen, indem Sie auf dieses Symbol klicken.
Konfiguration mit der veröffentlichten Version
Wenn Sie das Paket nicht manuell von PyPI installieren (veröffentlichte Version) oder das Repository klonen möchten, verwenden Sie einfach die folgende Konfiguration für Claude Desktop:
Öffnen Sie Ihre Claude Desktop-Konfigurationsdatei (gleicher Speicherort wie oben).
Fügen Sie den tree-sitter-Server zum Abschnitt
mcpServershinzu:{ "mcpServers": { "tree_sitter": { "command": "uvx", "args": [ "--directory", "/ABSOLUTE/PATH/TO/YOUR/PROJECT", "mcp-server-tree-sitter" ] } } }Speichern Sie die Datei und starten Sie Claude Desktop neu.
Diese Methode verwendet uvx, um das installierte PyPI-Paket direkt auszuführen, was der empfohlene Ansatz für die veröffentlichte Version ist. Der Server benötigt keine zusätzlichen Parameter, um in seiner grundlegenden Konfiguration zu laufen.
Zustandspersistenz
Der MCP Tree-sitter Server behält den Zustand zwischen Aufrufen bei. Das bedeutet:
Projekte bleiben registriert, bis sie explizit entfernt oder der Server neu gestartet wird
Syntaxbäume werden gemäß den Konfigurationseinstellungen zwischengespeichert
Sprachinformationen bleiben während der gesamten Lebensdauer des Servers erhalten
Diese Persistenz wird während der Lebensdauer des Servers mithilfe von Singleton-Mustern für Schlüsselkomponenten im Arbeitsspeicher aufrechterhalten.
Ausführung als eigenständiger Server
Es gibt verschiedene Möglichkeiten, den Server auszuführen:
Verwendung des MCP CLI direkt:
python -m mcp run mcp_server_tree_sitter.serverVerwendung von Makefile-Zielen:
# Show available targets
make
# Run the server with default settings
make mcp-run
# Show help information
make mcp-run ARGS="--help"
# Show version information
make mcp-run ARGS="--version"
# Run with custom configuration file
make mcp-run ARGS="--config /path/to/config.yaml"
# Enable debug logging
make mcp-run ARGS="--debug"
# Disable parse tree caching
make mcp-run ARGS="--disable-cache"Verwendung des installierten Skripts:
# Run the server with default settings
mcp-server-tree-sitter
# Show help information
mcp-server-tree-sitter --help
# Show version information
mcp-server-tree-sitter --version
# Run with custom configuration file
mcp-server-tree-sitter --config /path/to/config.yaml
# Enable debug logging
mcp-server-tree-sitter --debug
# Disable parse tree caching
mcp-server-tree-sitter --disable-cacheVerwendung mit dem MCP Inspector
Verwendung des MCP CLI direkt:
python -m mcp dev mcp_server_tree_sitter.serverOder Verwendung des Makefile-Ziels:
make mcp-devSie können auch Argumente übergeben:
make mcp-dev ARGS="--debug"Verwendung
Ein Projekt registrieren
Registrieren Sie zuerst ein Projekt zur Analyse:
register_project_tool(path="/path/to/your/project", name="my-project")Dateien erkunden
Listen Sie Dateien im Projekt auf:
list_files(project="my-project", pattern="**/*.py")Dateiinhalte anzeigen:
get_file(project="my-project", path="src/main.py")Codestruktur analysieren
Syntaxbaum abrufen:
get_ast(project="my-project", path="src/main.py", max_depth=3)Symbole extrahieren:
get_symbols(project="my-project", path="src/main.py")Code durchsuchen
Nach Text suchen:
find_text(project="my-project", pattern="function", file_pattern="**/*.py")Tree-sitter-Abfragen ausführen:
run_query(
project="my-project",
query='(function_definition name: (identifier) @function.name)',
language="python"
)Komplexität analysieren
analyze_complexity(project="my-project", path="src/main.py")Direkte Python-Verwendung
Obwohl die primäre beabsichtigte Verwendung über den MCP-Server erfolgt, können Sie die Bibliothek auch direkt im Python-Code verwenden:
# Import from the API module
from mcp_server_tree_sitter.api import (
register_project, list_projects, get_config, get_language_registry
)
# Register a project
project_info = register_project(
path="/path/to/project",
name="my-project",
description="Description"
)
# List projects
projects = list_projects()
# Get configuration
config = get_config()
# Access components through dependency injection
from mcp_server_tree_sitter.di import get_container
container = get_container()
project_registry = container.project_registry
language_registry = container.language_registryKonfiguration
Erstellen Sie eine YAML-Konfigurationsdatei:
cache:
enabled: true # Enable/disable caching (default: true)
max_size_mb: 100 # Maximum cache size in MB (default: 100)
ttl_seconds: 300 # Cache entry time-to-live in seconds (default: 300)
security:
max_file_size_mb: 5 # Maximum file size to process in MB (default: 5)
excluded_dirs: # Directories to exclude from processing
- .git
- node_modules
- __pycache__
allowed_extensions: # Optional list of allowed file extensions
# - py
# - js
# Leave empty or omit for all extensions
language:
default_max_depth: 5 # Default max depth for AST traversal (default: 5)
preferred_languages: # List of languages to pre-load at startup for faster performance
- python # Pre-loading reduces latency for first operations
- javascript
log_level: INFO # Logging level (DEBUG, INFO, WARNING, ERROR)
max_results_default: 100 # Default maximum results for search operationsLaden Sie sie mit:
configure(config_path="/path/to/config.yaml")Protokollierungskonfiguration
Die Ausführlichkeit der Protokollierung des Servers kann über Umgebungsvariablen gesteuert werden:
# Enable detailed debug logging
export MCP_TS_LOG_LEVEL=DEBUG
# Use normal informational logging (default)
export MCP_TS_LOG_LEVEL=INFO
# Only show warning and error messages
export MCP_TS_LOG_LEVEL=WARNINGUmfassende Informationen zur Protokollierungskonfiguration finden Sie in der Protokollierungsdokumentation. Details zur Befehlszeilenschnittstelle finden Sie in der CLI-Dokumentation.
Über preferred_languages
Die Einstellung preferred_languages steuert, welche Sprach-Parser beim Serverstart vorab geladen werden, anstatt bei Bedarf. Dies bietet mehrere Vorteile:
Schnellere Erst-Analyse: Keine Verzögerung bei der ersten Analyse einer Datei einer vorab geladenen Sprache
Frühe Fehlererkennung: Probleme mit Parsern werden beim Start entdeckt, nicht während der Verwendung
Vorhersehbare Speicherzuweisung: Speicher für häufig verwendete Parser wird im Voraus zugewiesen
Standardmäßig werden alle Parser bei Bedarf geladen, wenn sie zum ersten Mal benötigt werden. Für eine optimale Leistung geben Sie die Sprachen an, die Sie in Ihren Projekten am häufigsten verwenden.
Sie können auch spezifische Einstellungen konfigurieren:
configure(cache_enabled=True, max_file_size_mb=10, log_level="DEBUG")Oder verwenden Sie Umgebungsvariablen:
export MCP_TS_CACHE_MAX_SIZE_MB=256
export MCP_TS_LOG_LEVEL=DEBUG
export MCP_TS_CONFIG_PATH=/path/to/config.yamlUmgebungsvariablen verwenden das Format MCP_TS_SECTION_SETTING (z. B. MCP_TS_CACHE_MAX_SIZE_MB) für Abschnittseinstellungen oder MCP_TS_SETTING (z. B. MCP_TS_LOG_LEVEL) für Einstellungen auf oberster Ebene.
Konfigurationswerte werden in dieser Rangfolge angewendet:
Umgebungsvariablen (höchste)
Werte, die über
configure()-Aufrufe gesetzt wurdenYAML-Konfigurationsdatei
Standardwerte (niedrigste)
Der Server sucht nach der Konfiguration in:
Pfad, der im
configure()-Aufruf angegeben istPfad, der durch die Umgebungsvariable
MCP_TS_CONFIG_PATHangegeben istStandardspeicherort:
~/.config/tree-sitter/config.yaml
Für Entwickler
Diagnosefunktionen
Der MCP Tree-sitter Server enthält ein Diagnose-Framework, das bei der Identifizierung und Behebung von Problemen hilft:
# Run diagnostic tests
make test-diagnostics
# CI-friendly version (won't fail the build on diagnostic issues)
make test-diagnostics-ciDiagnosetests liefern detaillierte Informationen über das Verhalten des Servers und können helfen, spezifische Probleme zu isolieren. Weitere Informationen zum Diagnose-Framework finden Sie in der Diagnosedokumentation.
Überlegungen zur Typsicherheit
Der MCP Tree-sitter Server wahrt die Typsicherheit bei der Schnittstelle zu tree-sitter-Bibliotheken durch sorgfältige Designmuster und Protokolle. Wenn Sie die Codebasis erweitern, lesen Sie bitte den Leitfaden zur Typsicherheit für wichtige Informationen zum Umgang mit Variationen der tree-sitter-API.
Verfügbare Ressourcen
Der Server stellt die folgenden MCP-Ressourcen bereit:
project://{project}/files- Alle Dateien in einem Projekt auflistenproject://{project}/files/{pattern}- Dateien auflisten, die einem Muster entsprechenproject://{project}/file/{path}- Dateiinhalte abrufenproject://{project}/file/{path}/lines/{start}-{end}- Bestimmte Zeilen aus einer Datei abrufenproject://{project}/ast/{path}- Den AST für eine Datei abrufenproject://{project}/ast/{path}/depth/{depth}- Den AST mit benutzerdefinierter Tiefe abrufen
Verfügbare Tools
Der Server stellt Tools bereit für:
Projektmanagement:
register_project_tool,list_projects_tool,remove_project_toolSprachmanagement:
list_languages,check_language_availableDateivorgänge:
list_files,get_file,get_file_metadataAST-Analyse:
get_ast,get_node_at_positionCodesuche:
find_text,run_querySymbol-Extraktion:
get_symbols,find_usageProjektanalyse:
analyze_project,get_dependencies,analyze_complexityAbfrageerstellung:
get_query_template_tool,list_query_templates_tool,build_query,adapt_query,get_node_typesErkennung ähnlichen Codes:
find_similar_codeCache-Management:
clear_cacheKonfigurationsdiagnose:
diagnose_config
Siehe FEATURES.md für detaillierte Informationen zum Implementierungsstatus, zu Abhängigkeiten und Anwendungsbeispielen jedes Tools.
Verfügbare Prompts
Der Server stellt die folgenden MCP-Prompts bereit:
code_review- Einen Prompt für die Code-Überprüfung erstellenexplain_code- Einen Prompt für die Code-Erklärung erstellenexplain_tree_sitter_query- Die Syntax von tree-sitter-Abfragen erklärensuggest_improvements- Einen Prompt für Verbesserungsvorschläge für Code erstellenproject_overview- Einen Prompt für eine Projektübersichtsanalyse erstellen
Feedback & Community
Wir würden gerne erfahren, wie Sie mcp-server-tree-sitter verwenden und was es für Ihren Arbeitsablauf nützlicher machen würde.
Fragen & Funktionsanfragen: GitHub Discussions
Fehlerberichte: GitHub Issues
Lizenz
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/wrale/mcp-server-tree-sitter'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
