pr-agent-mcp
Englisch | 中文
PR-Agent MCP Server
Ein MCP (Model Context Protocol) Server, der pr-agent CLI-Befehle als MCP-Werkzeuge bereitstellt, mit optionaler Gitea-Webhook-Integration zur automatischen PR-Überprüfung. Unterstützt sowohl SSE- als auch StreamableHTTP-Transporte und kann lokal oder in Docker ausgeführt werden.
Funktionen
MCP-Werkzeuge: Stellt pr-agent-Befehle (
review,describe,improve,ask,reflect,update_changelog,generate_labels) als MCP-Werkzeuge bereit.Transporte: SSE (
/sse) und StreamableHTTP (/mcp), auswählbar über--transport sse|streamable-http|both.Gitea-Webhook: Automatisches Auslösen von Review-, Describe- und Improve-Aktionen, wenn ein neuer PR in Gitea geöffnet wird.
HMAC-Signaturprüfung: Optionale Webhook-Signaturvalidierung für Sicherheit.
Konfigurationsinjektion: Lädt automatisch Anmeldedaten aus
~/.secrets.tomlund injiziert sie in die Umgebung des pr-agent-Subprozesses.
Related MCP server: gitea-mcp
Projektstruktur
pr-agent-mcp/
├── server.py # Main MCP server and webhook handler
├── run.ps1 # PowerShell startup script (local run)
├── requirements.txt # Python dependencies
├── Dockerfile # Multi-stage Docker image definition
├── docker-compose.yml # Docker Compose service definition
├── push.ps1 # Build & push image to registry
├── .dockerignore # Exclude files from Docker build context
├── buggy_samples.py # Intentional bug samples for pr-agent testing
├── test.http # HTTP test requests (VS Code REST Client / similar)
├── README.md
├── README.zh-CN.md
└── .gitignoreVoraussetzungen
Docker mit Docker Compose (empfohlen) oder Python 3.11+ (verwendet
tomllib)Gitea-Instanz (für Webhook-Integration, optional)
~/.secrets.tomlmit Ihren Provider-Anmeldedaten (siehe unten)
Anmeldedaten konfigurieren
Erstellen Sie ~/.secrets.toml in Ihrem Benutzerverzeichnis mit Ihren Provider- und LLM-Anmeldedaten:
[gitea]
url = "http://your-gitea-instance:3000"
token = "your-gitea-personal-access-token"
[openai]
key = "sk-your-openai-api-key"Die Umgebungsvariable
SECRETS_TOML_PATHüberschreibt den Standardpfad (~/.secrets.toml). Dies wird vom Docker-Image verwendet, um die gebundene Datei zu lokalisieren.
Docker-Bereitstellung (empfohlen)
1. Lokal bauen und starten
docker compose up -d --buildDies wird:
Das Image bauen (mehrstufig: installiert
pr-agent- undmcp-Abhängigkeiten in eine venv, installiertgitzur Laufzeit).Ihr Home-Verzeichnis schreibgeschützt in den Container unter
/host-homeeinbinden, damit es~/.secrets.tomllesen kann.Host-Port
9000auf Container-Port9000mappen.Den Server mit sowohl SSE- als auch StreamableHTTP-Transporten starten.
Der Container bindet
${USERPROFILE}(das gesamte Home-Verzeichnis) anstelle der einzelnen.secrets.toml-Datei ein. Das Einbinden einer nicht vorhandenen Host-Datei führt dazu, dass Docker ein Verzeichnis erstellt, was einenIsADirectoryErrorverursacht – das Einbinden des übergeordneten Verzeichnisses vermeidet diese Falle.
2. Image in eine private Registry pushen
# Build + tag + push to the default registry (10.10.11.194:1000/pr-agent-mcp:latest)
.\push.ps1
# Push to another registry / with a version tag / skip rebuild
.\push.ps1 -Registry "192.168.1.100:5000" -Tag "v1.0.0" -NoBuild3. Auf einem anderen Rechner ausführen (z. B. einem Testserver)
Kopieren Sie docker-compose.yml auf den Zielrechner und ändern Sie build: . in image: 10.10.11.194:1000/pr-agent-mcp:latest, dann:
docker pull 10.10.11.194:1000/pr-agent-mcp:latest
docker compose up -dOder direkt ohne Compose-Datei ausführen:
docker run -d \
--name pr-agent-mcp \
-p 9000:9000 \
-v $env:USERPROFILE:/host-home:ro \
-e SECRETS_TOML_PATH=/host-home/.secrets.toml \
--restart unless-stopped \
10.10.11.194:1000/pr-agent-mcp:latestContainer verwalten
# View logs
docker compose logs -f
# Stop & remove
docker compose down
# Restart
docker compose restartLokale Ausführung (ohne Docker)
1. Abhängigkeiten installieren
python -m venv mcp_env
mcp_env\Scripts\activate
pip install -r requirements.txt
requirements.txtenthält nurmcp(das MCP-Framework). pr-agent ist KEINE Python-Abhängigkeit dieses Servers – es wird als Subprozess über den inserver.pykonfigurierten Pfad (oder die UmgebungsvariablePR_AGENT_EXE) aufgerufen. Stellen Sie sicher, dass pr-agent bereits auf dem Rechner installiert ist.
2. (Optional) Webhook-Geheimnis konfigurieren
Setzen Sie WEBHOOK_SECRET in server.py auf dasselbe Geheimnis, das in Ihren Gitea-Webhook-Einstellungen konfiguriert ist. Lassen Sie es leer, um die Signaturprüfung zu deaktivieren (nicht für die Produktion empfohlen).
3. Server starten
.\run.ps1Oder direkt:
python server.py
python server.py --transport sse # SSE only
python server.py --transport streamable-http # StreamableHTTP onlyEndpunkte
Endpunkt | Methode | Beschreibung |
| GET | MCP-SSE-Verbindungsendpunkt für KI-Clients |
| POST | MCP-StreamableHTTP-Endpunkt |
| POST | MCP-Nachrichtentransport (SSE-Modus) |
| POST | Gitea-Webhook-Empfänger für automatische PR-Überprüfung |
MCP-Werkzeuge
Werkzeug | Beschreibung |
| PR überprüfen: Zusammenfassung und spezifische Vorschläge |
| PR-Titel und -Beschreibung generieren oder aktualisieren |
| Code-Verbesserungen als PR-Kommentare vorschlagen |
| Eine Frage zum PR stellen |
| Dem PR-Autor Fragen zum PR stellen |
| Changelog basierend auf PR-Inhalten aktualisieren |
| Labels für den PR generieren |
Gitea-Webhook-Einrichtung
Gehen Sie in Ihrem Gitea-Repository zu Einstellungen → Webhooks → Webhook hinzufügen.
Setzen Sie die Ziel-URL auf
http://<your-server>:9000/webhook.Setzen Sie die HTTP-Methode auf
POSTund den Inhaltstyp aufapplication/json.Legen Sie optional ein Geheimnis fest (muss mit
WEBHOOK_SECRETinserver.pyübereinstimmen).Wählen Sie das Ereignis Pull Request mit der Aktion Geöffnet.
Wenn ein PR geöffnet wird, führt der Server automatisch die Aktionen review, describe und improve aus und veröffentlicht die Ergebnisse als PR-Kommentare.
Testen
Verwenden Sie die beiliegende Datei test.http mit dem VS Code REST Client oder einem ähnlichen HTTP-Client, um den Webhook-Endpunkt manuell zu testen.
buggy_samples.py enthält absichtliche Fehler in mehreren Kategorien (Sicherheit, Logik, Nebenläufigkeit, Fehlerbehandlung) zum Testen der Code-Review-Erkennungsfähigkeiten von pr-agent.
Lizenz
Privat – nur für den internen Gebrauch.
This server cannot be deployed
Maintenance
Related MCP Connectors
GitHub Copilot MCP: code, repo, PR, workflow tools for AI assistants.
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
A Model Context Protocol (MCP) application for automated GitHub PR analysis and issue management.…
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceA GitHub integration tool that enables MCP clients to manage pull requests through tools for creating, updating, and listing PRs with automated descriptions. It also includes a webhook server for real-time PR updates and a customizable CLI with distinct personality modes.-
- AlicenseAqualityAmaintenanceAn MCP server providing comprehensive Gitea API coverage with 186 tools for managing repositories, issues, pull requests, and CI/CD workflows. It enables autonomous AI agents to perform complex development and administrative tasks directly through a Gitea instance.7MIT
- AlicenseBqualityCmaintenanceMCP server that exposes GitHub operations as tools for AI agents, enabling code search, issue management, and PR review.1233 PyPIMIT
- AlicenseAqualityCmaintenanceProvides GitHub PR review capabilities to LLMs, enabling automated PR analysis, review submission, and inline commenting via MCP.1414 npm1MIT