Greptile MCP-Server [ABGESCHLOSSEN]
Spickzettel für Quick Run-Befehle
✅ PROJEKTSTATUS: ALLE AUFGABEN ABGESCHLOSSEN (11.11.)
Eine Zusammenfassung der abgeschlossenen Arbeiten finden Sie in PROJECT_COMPLETION.md und Gebrauchsanweisungen in USER_GUIDE.md .
Umfeld | Einrichten und Installieren | Befehl ausführen |
Lokal (Python) |
|
|
Docker |
|
|
Schmiedekunst |
|
(siehe smithery.yaml) |
Füllen Sie
.env
mit.env.example
aus und legen Sie vor dem Ausführen IhrenGREPTILE_API_KEY
undGITHUB_TOKEN
fest.
Vollständige Informationen zu den Voraussetzungen, zur erweiterten Agentennutzung, zur Integration und zur Fehlerbehebung: Die
Eine MCP-Serverimplementierung (Model Context Protocol), die in die Greptile-API integriert ist, um KI-Agenten Codesuch- und Abfragefunktionen bereitzustellen.
Merkmale
Der Server bietet vier wichtige Greptile-Tools, die es KI-Agenten ermöglichen, mit Codebasen zu interagieren:
index_repository
: Indizieren Sie ein Repository für die Codesuche und -abfrage.Verarbeiten Sie ein Repository, um es durchsuchbar zu machen
Aktualisieren Sie vorhandene Indizes, wenn sich die Repositorys ändern
Konfigurieren der Benachrichtigungseinstellungen
query_repository
: Abfrage von Repositories, um Antworten mit Codereferenzen zu erhalten.Stellen Sie Fragen zur Codebasis in natürlicher Sprache
Erhalten Sie detaillierte Antworten, die auf bestimmte Codepositionen verweisen
Unterstützung für den Gesprächsverlauf mit Sitzungs-IDs
search_repository
: Durchsucht Repositories nach relevanten Dateien, ohne eine vollständige Antwort zu generieren.Suchen Sie nach Dateien, die sich auf bestimmte Konzepte oder Funktionen beziehen
Erhalten Sie kontextbezogene Übereinstimmungen nach Relevanz sortiert
Schneller als vollständige Abfragen, wenn nur Dateispeicherorte benötigt werden
get_repository_info
: Informationen zu einem indizierten Repository abrufen.Überprüfen Sie den Indexierungsstatus und -fortschritt
Überprüfen, welche Repositories für Abfragen verfügbar sind
Metadaten zu indizierten Repositories abrufen
Smithery-Bereitstellung
Der Greptile MCP-Server unterstützt die Bereitstellung über Smithery. Eine Konfigurationsdatei smithery.yaml
ist im Projektstamm enthalten.
Schmiedekonfiguration
Die Smithery-Konfiguration ist in smithery.yaml
definiert und unterstützt die folgenden Optionen:
Verwendung mit Schmiedearbeiten
So stellen Sie die Bereitstellung mit Smithery bereit:
Installieren Sie Smithery:
npm install -g smithery
Stellen Sie den Server bereit:
smithery deploy
Konfigurieren Sie Ihren Smithery-Client mit den erforderlichen API-Schlüsseln
Zusätzliche Dokumentation
Ausführliche Anweisungen zur Verwendung von KI-Agenten finden Sie im Agent Usage Guide .
Voraussetzungen
Python 3.12+
Greptile API-Schlüssel (von https://app.greptile.com/settings/api )
GitHub oder GitLab Personal Access Token (PAT) mit
repo
Berechtigungen (oder gleichwertigen Leseberechtigungen) für die Repositories, die Sie indizieren möchtenDocker (für die Bereitstellung empfohlen)
Erforderliche Python-Pakete
fastmcp
- MCP-Serverimplementierunghttpx
– Asynchroner HTTP-Clientpython-dotenv
- Verwaltung von Umgebungsvariablenuvicorn
– ASGI-Server für SSE-Transport
Installation
Verwenden von pip (für Entwicklung oder lokale Tests)
Klonen Sie dieses Repository:
git clone https://github.com/sosacrazy126/greptile-mcp.git cd greptile-mcpErstellen Sie eine virtuelle Umgebung (empfohlen):
python -m venv .venv source .venv/bin/activate # On Windows use `.venv\Scripts\activate`Installieren Sie Abhängigkeiten:
pip install -e .Erstellen Sie eine
.env
Datei basierend auf.env.example
:cp .env.example .envKonfigurieren Sie Ihre Umgebungsvariablen in der
.env
Datei:GREPTILE_API_KEY=your_api_key_here GITHUB_TOKEN=your_github_token_here
Verwenden von Docker (für die Bereitstellung empfohlen)
Klonen Sie das Repository:
git clone https://github.com/sosacrazy126/greptile-mcp.git cd greptile-mcpErstellen Sie eine
.env
Datei basierend auf.env.example
und konfigurieren Sie Ihre Umgebungsvariablen.Erstellen Sie das Docker-Image:
docker build -t greptile-mcp .
Ausführen des Servers
Verwenden von pip
SSE-Transport (Standard)
Stellen Sie sicher, dass in Ihrer .env
Datei TRANSPORT=sse
und PORT=8050
(oder Ihr gewählter Port) festgelegt sind.
Der Server lauscht auf http://<HOST>:<PORT>/sse
.
Stdio Transport
Setzen Sie TRANSPORT=stdio
in Ihrer .env
Datei. Mit stdio startet der MCP-Client normalerweise den MCP-Serverprozess.
Verwenden von Docker
SSE-Transport (Standard)
Der Server lauscht auf http://localhost:8050/sse
(oder der Host-IP, wenn es sich nicht um localhost handelt).
Stdio Transport
Konfigurieren Sie Ihren MCP-Client so, dass der Docker-Container mit TRANSPORT=stdio
ausgeführt wird.
Integration mit MCP-Clients
SSE-Konfigurationsbeispiel
Fügen Sie dies zur Konfiguration Ihres MCP-Clients hinzu (z. B. mcp_config.json
):
Python mit Stdio-Konfigurationsbeispiel
Stellen Sie sicher, dass TRANSPORT=stdio
in der Umgebung festgelegt ist, in der der Befehl ausgeführt wird:
Docker mit Stdio-Konfigurationsbeispiel
Detaillierte Gebrauchsanleitung
Workflow für die Codebasisanalyse
Index-Repositorys, die Sie mit
index_repository
analysieren möchtenÜberprüfen Sie den Indexierungsstatus mit
get_repository_info
, um sicherzustellen, dass die Verarbeitung abgeschlossen istAbfragen der Repositories in natürlicher Sprache mit
query_repository
Suchen Sie mithilfe von
search_repository
nach bestimmten Dateien, die sich auf Funktionen oder Konzepte beziehen
Sitzungsverwaltung für Konversationskontext
Bei der Interaktion mit dem Greptile MCP-Server über einen beliebigen Client (einschließlich Smithery) ist eine ordnungsgemäße Sitzungsverwaltung für die Aufrechterhaltung des Konversationskontexts von entscheidender Bedeutung:
Generieren Sie zu Beginn einer Konversation eine eindeutige Sitzungs-ID
Verwenden Sie dieselbe Sitzungs-ID für alle zugehörigen Folgeanfragen erneut.
Erstellen Sie eine neue Sitzungs-ID, wenn Sie eine neue Konversation starten
Beispiel für die Sitzungs-ID-Verwaltung:
Wichtig für die Smithery-Integration : Agenten, die sich über Smithery verbinden, müssen ihre eigenen Sitzungs-IDs generieren und verwalten. Der Greptile MCP-Server generiert keine Sitzungs-IDs automatisch. Die Sitzungs-ID sollte Teil des Konversationsstatus des Agenten sein.
Bewährte Methoden
Indizierungsleistung : Kleinere Repositories indizieren schneller. Bei großen Monorepositorys empfiehlt sich die Indizierung bestimmter Branches oder Tags.
Abfrageoptimierung : Seien Sie in Ihren Abfragen spezifisch. Fügen Sie relevante Fachbegriffe ein, um bessere Ergebnisse zu erzielen.
Repository-Auswahl : Wenn Sie mehrere Repositories abfragen, listen Sie sie in der Reihenfolge ihrer Relevanz auf, um die besten Ergebnisse zu erzielen.
Sitzungsverwaltung : Verwenden Sie Sitzungs-IDs für Folgefragen, um den Kontext über Abfragen hinweg beizubehalten.
API-Referenz
1. Index-Repository
Indiziert ein Repository, um es bei zukünftigen Abfragen durchsuchbar zu machen.
Parameter:
remote
(Zeichenfolge): Der Repository-Host, entweder „github“ oder „gitlab“repository
(Zeichenfolge): Das Repository im Besitzer-/Repo-Format (z. B. „greptileai/greptile“)branch
(Zeichenfolge): Der zu indizierende Zweig (z. B. „main“)reload
(boolesch, optional): Ob die erneute Verarbeitung eines zuvor indizierten Repositorys erzwungen werden sollnotify
(Boolesch, optional): Ob eine E-Mail-Benachrichtigung gesendet werden soll, wenn die Indizierung abgeschlossen ist
Beispiel:
Antwort:
2. Abfrage-Repository
Fragt Repositories in natürlicher Sprache ab, um Antworten mit Codereferenzen zu erhalten.
Parameter:
query
(Zeichenfolge): Die Abfrage in natürlicher Sprache zur Codebasisrepositories
(Array): Liste der abzufragenden Repositories, jeweils im Format:{ "remote": "github", "repository": "owner/repo", "branch": "main" }session_id
(Zeichenfolge, optional): Sitzungs-ID zum Fortsetzen einer Konversationstream
(Boolesch, optional): Ob die Antwort gestreamt werden sollgenius
(Boolesch, optional): Ob erweiterte Abfragefunktionen verwendet werden sollen
Beispiel:
Antwort:
3. Repository durchsuchen
Durchsucht Repositories nach relevanten Dateien, ohne eine vollständige Antwort zu generieren.
Parameter:
query
(Zeichenfolge): Die Suchanfrage zur Codebasisrepositories
(Array): Liste der zu durchsuchenden Repositoriessession_id
(Zeichenfolge, optional): Sitzungs-ID zum Fortsetzen einer Konversationgenius
(Boolesch, optional): Ob erweiterte Suchfunktionen verwendet werden sollen
Beispiel:
Antwort:
4. Repository-Informationen abrufen
Ruft Informationen zu einem bestimmten Repository ab, das indiziert wurde.
Parameter:
remote
(Zeichenfolge): Der Repository-Host, entweder „github“ oder „gitlab“repository
(Zeichenfolge): Das Repository im Owner/Repo-Formatbranch
(Zeichenfolge): Der Zweig, der indiziert wurde
Beispiel:
Antwort:
Integrationsbeispiele
1. Integration mit Claude.ai über die Anthropic API
2. Integration mit einem LLM-basierten Chatbot
3. Tool zur Abfrage von Befehlszeilencode
Fehlerbehebung
Häufige Probleme
1. Authentifizierungsfehler
Symptom : Sie erhalten die Fehlermeldung 401 Unauthorized
oder Repository not found with configured credentials
.
Lösungen :
Überprüfen Sie, ob Ihr Greptile-API-Schlüssel gültig und in der
.env
Datei korrekt festgelegt ist.Überprüfen Sie, ob Ihr GitHub/GitLab-Token abgelaufen ist (normalerweise verfallen sie nach einer festgelegten Zeit).
Stellen Sie sicher, dass Ihr GitHub/GitLab-Token den
repo
Bereich für den Zugriff auf Repositories hatTesten Sie Ihr GitHub-Token direkt mit der GitHub-API, um sicherzustellen, dass es funktioniert
Testen des GitHub-Tokens :
2. Repository nicht gefunden
Symptom : Die API gibt einen 404-Fehler oder die Meldung „Repository nicht gefunden“ zurück.
Lösungen :
Überprüfen Sie, ob das Repository vorhanden ist und mit Ihrem GitHub/GitLab-Token darauf zugegriffen werden kann.
Überprüfen Sie das Repository-Format (es sollte
owner/repo
lauten).Stellen Sie bei privaten Repositories sicher, dass Ihr Token über die entsprechenden Zugriffsberechtigungen verfügt
Überprüfen Sie, ob der Zweigstellenname korrekt ist
3. Verbindungsprobleme
Symptom : Es kann keine Verbindung zum MCP-Server hergestellt werden.
Lösungen :
Überprüfen Sie, ob der Server läuft (
ps aux | grep src.main
)Stellen Sie sicher, dass der Port nicht von einer anderen Anwendung verwendet wird
Überprüfen Sie die Netzwerkeinstellungen und Firewall-Konfigurationen
Versuchen Sie einen anderen Port, indem Sie den
PORT
Wert in Ihrer.env
Datei ändern
4. Docker-Probleme
Symptom : Der Docker-Container kann nicht gestartet werden oder funktioniert nicht richtig.
Lösungen :
Überprüfen Sie die Docker-Protokolle:
docker logs <container_id>
Überprüfen Sie, ob die
.env
Datei korrekt gemountet ist.Stellen Sie sicher, dass die Portzuordnung in Ihrem
docker run
-Befehl korrekt ist.Überprüfen Sie, ob die Docker-Netzwerkkonfiguration die erforderlichen Verbindungen zulässt
Protokolle und Debugging
Um eine ausführlichere Protokollierung zu aktivieren, legen Sie die folgenden Umgebungsvariablen fest:
Um Probleme mit bestimmten MCP-Interaktionen zu beheben, untersuchen Sie die MCP-Serverprotokolle:
Erweiterte Konfiguration
Umgebungsvariablen
Variable | Beschreibung | Standard |
| Transportmethode (
oder
) |
|
| Host, an den für den SSE-Transport gebunden werden soll |
|
| Hafen für SSE-Transport |
|
| Ihr Greptile-API-Schlüssel | (erforderlich) |
| Persönlicher GitHub/GitLab-Zugriffstoken | (erforderlich) |
| Basis-URL der Greptile-API |
|
| Debug-Modus aktivieren |
|
| Protokollierungsebene |
|
Benutzerdefinierte API-Endpunkte
Wenn Sie einen benutzerdefinierten Greptile-API-Endpunkt verwenden müssen (z. B. für Unternehmensinstallationen), ändern Sie die Umgebungsvariable GREPTILE_BASE_URL
:
Leistungsoptimierung
Berücksichtigen Sie bei Produktionsbereitstellungen die folgenden Leistungsoptimierungen:
Worker-Konfiguration : Wenn Sie SSE-Transport mit Uvicorn verwenden, konfigurieren Sie die entsprechende Worker-Anzahl:
# For CPU-bound applications: workers = 1-2 × CPU cores uvicorn src.main:app --workers 4Timeout-Einstellungen : Passen Sie Timeouts für große Repositories an:
# Add to .env GREPTILE_TIMEOUT=120.0 # Default is 60.0 secondsSpeicheroptimierung : Berücksichtigen Sie bei großen Bereitstellungen die Ressourcenbeschränkungen des Containers:
docker run --rm --env-file .env -p 8050:8050 --memory="1g" --cpus="1.0" greptile-mcp
Beitragen
Beiträge sind willkommen! Senden Sie gerne einen Pull Request.
Forken Sie das Repository
Erstellen Sie Ihren Feature-Zweig (
git checkout -b feature/amazing-feature
)Übernehmen Sie Ihre Änderungen (
git commit -m 'Add some amazing feature'
)Pushen zum Zweig (
git push origin feature/amazing-feature
)Öffnen einer Pull-Anfrage
Entwicklungs-Setup
Installieren Sie für die Entwicklung zusätzliche Abhängigkeiten:
Führen Sie Tests durch:
Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert – Einzelheiten finden Sie in der Datei LICENSE.
Erstellt von ( https://github.com/sosacrazy126 )
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Greptile-MCP
Related MCP Servers
- Apache 2.0
- Apache 2.0
- MIT License