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