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) | python -m venv .venv && source .venv/bin/activate && pip install -e . | python -m src.main |
Docker | docker build -t greptile-mcp . | docker run --rm --env-file .env -p 8050:8050 greptile-mcp |
Schmiedekunst | npm install -g smithery | smithery deploy (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 vollständige Dokumentation finden Sie in docs/README.md
und Agentendetails in AGENT_USAGE.md .
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öchten - Docker (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:
- Erstellen Sie eine virtuelle Umgebung (empfohlen):
- Installieren Sie Abhängigkeiten:
- Erstellen Sie eine
.env
Datei basierend auf.env.example
: - Konfigurieren Sie Ihre Umgebungsvariablen in der
.env
Datei:
Verwenden von Docker (für die Bereitstellung empfohlen)
- Klonen Sie das Repository:
- Erstellen Sie eine
.env
Datei basierend auf.env.example
und konfigurieren Sie Ihre Umgebungsvariablen. - Erstellen Sie das Docker-Image:
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 ist - Abfragen 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: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 hat - Testen 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 |
---|---|---|
TRANSPORT | Transportmethode ( sse oder stdio ) | sse |
HOST | Host, an den für den SSE-Transport gebunden werden soll | 0.0.0.0 |
PORT | Hafen für SSE-Transport | 8050 |
GREPTILE_API_KEY | Ihr Greptile-API-Schlüssel | (erforderlich) |
GITHUB_TOKEN | Persönlicher GitHub/GitLab-Zugriffstoken | (erforderlich) |
GREPTILE_BASE_URL | Basis-URL der Greptile-API | https://api.greptile.com/v2 |
DEBUG | Debug-Modus aktivieren | false |
LOG_LEVEL | Protokollierungsebene | info |
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:
- Timeout-Einstellungen : Passen Sie Timeouts für große Repositories an:
- Speicheroptimierung : Berücksichtigen Sie bei großen Bereitstellungen die Ressourcenbeschränkungen des Containers:
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 )
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Greptile-MCP
Related MCP Servers
- TypeScriptApache 2.0
- PythonApache 2.0
- Python
- TypeScriptMIT License