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.
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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A Model Context Protocol (MCP) application for automated GitHub PR analysis and issue management.…
Package intelligence MCP for AI agents — 22 tools, 19 ecosystems, AGPL SDK, free.
Repo intel for AI coding agents: overview, PRs, contributors, hot files, CI, deps. Remote MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/kkmeteor/pr-agent-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server