Skip to main content
Glama

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.toml und 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
└── .gitignore

Voraussetzungen

  • Docker mit Docker Compose (empfohlen) oder Python 3.11+ (verwendet tomllib)

  • Gitea-Instanz (für Webhook-Integration, optional)

  • ~/.secrets.toml mit 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 --build

Dies wird:

  1. Das Image bauen (mehrstufig: installiert pr-agent- und mcp-Abhängigkeiten in eine venv, installiert git zur Laufzeit).

  2. Ihr Home-Verzeichnis schreibgeschützt in den Container unter /host-home einbinden, damit es ~/.secrets.toml lesen kann.

  3. Host-Port 9000 auf Container-Port 9000 mappen.

  4. 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 einen IsADirectoryError verursacht – 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" -NoBuild

3. 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 -d

Oder 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:latest

Container verwalten

# View logs
docker compose logs -f

# Stop & remove
docker compose down

# Restart
docker compose restart

Lokale Ausführung (ohne Docker)

1. Abhängigkeiten installieren

python -m venv mcp_env
mcp_env\Scripts\activate
pip install -r requirements.txt

requirements.txt enthält nur mcp (das MCP-Framework). pr-agent ist KEINE Python-Abhängigkeit dieses Servers – es wird als Subprozess über den in server.py konfigurierten Pfad (oder die Umgebungsvariable PR_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.ps1

Oder direkt:

python server.py
python server.py --transport sse        # SSE only
python server.py --transport streamable-http  # StreamableHTTP only

Endpunkte

Endpunkt

Methode

Beschreibung

/sse

GET

MCP-SSE-Verbindungsendpunkt für KI-Clients

/mcp

POST

MCP-StreamableHTTP-Endpunkt

/messages/

POST

MCP-Nachrichtentransport (SSE-Modus)

/webhook

POST

Gitea-Webhook-Empfänger für automatische PR-Überprüfung

MCP-Werkzeuge

Werkzeug

Beschreibung

review_pr

PR überprüfen: Zusammenfassung und spezifische Vorschläge

describe_pr

PR-Titel und -Beschreibung generieren oder aktualisieren

improve_code

Code-Verbesserungen als PR-Kommentare vorschlagen

ask_question

Eine Frage zum PR stellen

reflect

Dem PR-Autor Fragen zum PR stellen

update_changelog

Changelog basierend auf PR-Inhalten aktualisieren

generate_labels

Labels für den PR generieren

Gitea-Webhook-Einrichtung

  1. Gehen Sie in Ihrem Gitea-Repository zu Einstellungen → Webhooks → Webhook hinzufügen.

  2. Setzen Sie die Ziel-URL auf http://<your-server>:9000/webhook.

  3. Setzen Sie die HTTP-Methode auf POST und den Inhaltstyp auf application/json.

  4. Legen Sie optional ein Geheimnis fest (muss mit WEBHOOK_SECRET in server.py übereinstimmen).

  5. 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.

-
license - not tested
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all MCP Connectors

Latest Blog Posts

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