pr-agent-mcp
English | 中文
PR-Agent MCP Server
A MCP (Model Context Protocol) server that exposes pr-agent CLI commands as MCP tools, with optional Gitea webhook integration for automatic PR review. Supports both SSE and StreamableHTTP transports, and can run locally or in Docker.
Características
Herramientas MCP: Exponer los comandos de pr-agent (
review,describe,improve,ask,reflect,update_changelog,generate_labels) como herramientas MCP.Transportes: SSE (
/sse) y StreamableHTTP (/mcp), seleccionables mediante--transport sse|streamable-http|both.Webhook de Gitea: Activar automáticamente las acciones de review, describe y improve cuando se abre un nuevo PR en Gitea.
Verificación de Firma HMAC: Validación opcional de la firma del webhook para seguridad.
Inyección de Configuración: Carga automáticamente las credenciales desde
~/.secrets.tomly las inyecta en el entorno del subproceso de pr-agent.
Related MCP server: gitea-mcp
Estructura del Proyecto
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
└── .gitignoreRequisitos Previos
Docker con Docker Compose (recomendado) o Python 3.11+ (usa
tomllib)Instancia de Gitea (para integración con webhook, opcional)
~/.secrets.tomlcon tus credenciales de proveedor (ver abajo)
Configurar credenciales
Crea ~/.secrets.toml en tu directorio de usuario con tus credenciales de proveedor y LLM:
[gitea]
url = "http://your-gitea-instance:3000"
token = "your-gitea-personal-access-token"
[openai]
key = "sk-your-openai-api-key"La variable de entorno
SECRETS_TOML_PATHanula la ubicación predeterminada (~/.secrets.toml). Esto es utilizado por la imagen Docker para localizar el archivo montado por bind.
Despliegue con Docker (recomendado)
1. Construir e iniciar localmente
docker compose up -d --buildEsto:
Construye la imagen (multi-etapa: instala las dependencias de
pr-agentymcpen un venv, instalagiten tiempo de ejecución).Monta tu directorio de usuario como solo lectura en el contenedor en
/host-homepara que pueda leer~/.secrets.toml.Mapea el puerto
9000del host al puerto9000del contenedor.Inicia el servidor con ambos transportes SSE y StreamableHTTP.
El contenedor monta
${USERPROFILE}(todo el directorio de usuario) en lugar del archivo único.secrets.toml. Montar un archivo del host que no existe hace que Docker cree un directorio en su lugar, causandoIsADirectoryError— montar el directorio padre evita este problema.
2. Subir la imagen a un registro privado
# 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. Ejecutar en otra máquina (por ejemplo, un servidor de pruebas)
Copia docker-compose.yml a la máquina de destino y cambia build: . por image: 10.10.11.194:1000/pr-agent-mcp:latest, luego:
docker pull 10.10.11.194:1000/pr-agent-mcp:latest
docker compose up -dO ejecuta directamente sin un archivo compose:
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:latestGestionar el contenedor
# View logs
docker compose logs -f
# Stop & remove
docker compose down
# Restart
docker compose restartEjecución Local (sin Docker)
1. Instalar dependencias
python -m venv mcp_env
mcp_env\Scripts\activate
pip install -r requirements.txt
requirements.txtsolo contienemcp(el framework MCP). pr-agent NO es una dependencia de Python de este servidor — se llama como un subproceso a través de la ruta configurada enserver.py(o la variable de entornoPR_AGENT_EXE). Asegúrate de que pr-agent ya esté instalado en algún lugar de la máquina.
2. (Opcional) Configurar secreto del webhook
Establece WEBHOOK_SECRET en server.py con el mismo secreto configurado en los ajustes del webhook de Gitea. Déjalo vacío para deshabilitar la verificación de firma (no recomendado para producción).
3. Iniciar el servidor
.\run.ps1O directamente:
python server.py
python server.py --transport sse # SSE only
python server.py --transport streamable-http # StreamableHTTP onlyEndpoints
Punto de conexión | Método | Descripción |
| GET | Punto de conexión SSE de MCP para clientes de IA |
| POST | Punto de conexión StreamableHTTP de MCP |
| POST | Transporte de mensajes MCP (modo SSE) |
| POST | Receptor de webhook de Gitea para revisión automática de PR |
Herramientas MCP
Herramienta | Descripción |
| Revisar un PR: resumen y sugerencias específicas |
| Generar o actualizar título y descripción del PR |
| Sugerir mejoras de código como comentarios en el PR |
| Hacer una pregunta sobre el PR |
| Preguntar al autor del PR sobre el PR |
| Actualizar el changelog según el contenido del PR |
| Generar etiquetas para el PR |
Configuración del Webhook de Gitea
En tu repositorio de Gitea, ve a Configuración → Webhooks → Añadir Webhook.
Establece la URL de destino en
http://<your-server>:9000/webhook.Establece el método HTTP en
POSTy el tipo de contenido enapplication/json.Opcionalmente, establece un secreto (debe coincidir con
WEBHOOK_SECRETenserver.py).Selecciona el evento Pull Request con la acción Opened.
Cuando se abre un PR, el servidor ejecutará automáticamente las acciones review, describe e improve y publicará los resultados como comentarios en el PR.
Pruebas
Usa el archivo test.http incluido con VS Code REST Client o un cliente HTTP similar para probar manualmente el endpoint del webhook.
buggy_samples.py contiene errores intencionales en múltiples categorías (seguridad, lógica, concurrencia, manejo de errores) para probar las capacidades de detección de revisión de código de pr-agent.
Licencia
Privado — solo uso interno.
This server cannot be deployed
Maintenance
Related MCP Connectors
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.…
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
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.1228 PyPIMIT
- AlicenseAqualityCmaintenanceProvides GitHub PR review capabilities to LLMs, enabling automated PR analysis, review submission, and inline commenting via MCP.145 npm1MIT