Integrations
Provides enhanced query and search capabilities for code repositories when the 'genius' parameter is enabled, offering improved contextual understanding
Allows accessing and indexing GitHub repositories for code search and querying, supporting both public and private repositories with appropriate authentication
Enables indexing and searching GitLab repositories, providing code search capabilities and repository information retrieval with proper authentication
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:Copy
- Erstellen Sie eine virtuelle Umgebung (empfohlen):Copy
- Installieren Sie Abhängigkeiten:Copy
- Erstellen Sie eine
.env
Datei basierend auf.env.example
:Copy - Konfigurieren Sie Ihre Umgebungsvariablen in der
.env
Datei:Copy
Verwenden von Docker (für die Bereitstellung empfohlen)
- Klonen Sie das Repository:Copy
- Erstellen Sie eine
.env
Datei basierend auf.env.example
und konfigurieren Sie Ihre Umgebungsvariablen. - Erstellen Sie das Docker-Image:Copy
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:Copysession_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:Copy
- Timeout-Einstellungen : Passen Sie Timeouts für große Repositories an:Copy
- Speicheroptimierung : Berücksichtigen Sie bei großen Bereitstellungen die Ressourcenbeschränkungen des Containers:Copy
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
- PythonMIT License
- GoMIT License
- TypeScriptApache 2.0
- TypeScriptMIT License