Skip to main content
Glama

English | 中文

PR-Agent MCP Server

Сервер MCP (Model Context Protocol), который предоставляет команды CLI pr-agent в качестве инструментов MCP, с дополнительной интеграцией вебхуков Gitea для автоматического ревью PR. Поддерживает транспорты SSE и StreamableHTTP, может работать локально или в Docker.

Возможности

  • Инструменты MCP: Предоставляет команды pr-agent (review, describe, improve, ask, reflect, update_changelog, generate_labels) как инструменты MCP.

  • Транспорты: SSE (/sse) и StreamableHTTP (/mcp), выбираемые через --transport sse|streamable-http|both.

  • Вебхук Gitea: Автоматический запуск действий review, describe и improve при открытии нового PR в Gitea.

  • Проверка подписи HMAC: Опциональная валидация подписи вебхука для безопасности.

  • Внедрение конфигурации: Автоматически загружает учетные данные из ~/.secrets.toml и внедряет их в окружение подпроцесса pr-agent.

Related MCP server: gitea-mcp

Структура проекта

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

Предварительные требования

  • Docker с Docker Compose (рекомендуется) или Python 3.11+ (использует tomllib)

  • Экземпляр Gitea (для интеграции вебхуков, необязательно)

  • ~/.secrets.toml с учетными данными провайдера (см. ниже)

Настройка учетных данных

Создайте ~/.secrets.toml в вашем домашнем каталоге пользователя с учетными данными провайдера и LLM:

[gitea]
url = "http://your-gitea-instance:3000"
token = "your-gitea-personal-access-token"

[openai]
key = "sk-your-openai-api-key"

Переменная окружения SECRETS_TOML_PATH переопределяет расположение по умолчанию (~/.secrets.toml). Это используется образом Docker для поиска смонтированного файла.


Развертывание в Docker (рекомендуется)

1. Сборка и локальный запуск

docker compose up -d --build

Это:

  1. Соберет образ (многоступенчатая сборка: установка зависимостей pr-agent и mcp в venv, установка git во время выполнения).

  2. Смонтирует ваш домашний каталог только для чтения в контейнер по пути /host-home, чтобы он мог прочитать ~/.secrets.toml.

  3. Сопоставит порт хоста 9000 с портом контейнера 9000.

  4. Запустит сервер с обоими транспортами SSE и StreamableHTTP.

Контейнер монтирует ${USERPROFILE} (весь домашний каталог), а не один файл .secrets.toml. Монтирование несуществующего файла хоста заставляет Docker создать каталог вместо этого, вызывая IsADirectoryError — монтирование родительского каталога позволяет избежать этой ловушки.

2. Отправка образа в частный реестр

# 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. Запуск на другой машине (например, тестовом сервере)

Скопируйте docker-compose.yml на целевую машину и измените build: . на image: 10.10.11.194:1000/pr-agent-mcp:latest, затем:

docker pull 10.10.11.194:1000/pr-agent-mcp:latest
docker compose up -d

Или запустите напрямую без файла 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:latest

Управление контейнером

# View logs
docker compose logs -f

# Stop & remove
docker compose down

# Restart
docker compose restart

Локальный запуск (без Docker)

1. Установка зависимостей

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

requirements.txt содержит только mcp (фреймворк MCP). pr-agent НЕ является зависимостью Python этого сервера — он вызывается как подпроцесс через путь, настроенный в server.py (или переменную окружения PR_AGENT_EXE). Убедитесь, что pr-agent уже установлен где-то на машине.

2. (Необязательно) Настройка секрета вебхука

Установите WEBHOOK_SECRET в server.py на тот же секрет, который настроен в параметрах вебхука вашего Gitea. Оставьте пустым для отключения проверки подписи (не рекомендуется для продакшена).

3. Запуск сервера

.\run.ps1

Или напрямую:

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

Конечные точки

Конечная точка

Метод

Описание

/sse

GET

Конечная точка SSE для подключения MCP клиентов ИИ

/mcp

POST

Конечная точка StreamableHTTP MCP

/messages/

POST

Транспорт сообщений MCP (режим SSE)

/webhook

POST

Приемник вебхука Gitea для авторевью PR

Инструменты MCP

Инструмент

Описание

review_pr

Ревью PR: сводка и конкретные предложения

describe_pr

Создание или обновление заголовка и описания PR

improve_code

Предложение улучшений кода в виде комментариев PR

ask_question

Задать вопрос о PR

reflect

Задать автору PR вопросы о PR

update_changelog

Обновление журнала изменений на основе содержимого PR

generate_labels

Генерация меток для PR

Настройка вебхука Gitea

  1. В вашем репозитории Gitea перейдите в Settings → Webhooks → Add Webhook.

  2. Установите целевой URL на http://<your-server>:9000/webhook.

  3. Установите HTTP-метод на POST и тип содержимого на application/json.

  4. При необходимости установите секрет (должен совпадать с WEBHOOK_SECRET в server.py).

  5. Выберите событие Pull Request с действием Opened.

Когда PR открыт, сервер автоматически запустит действия review, describe и improve и опубликует результаты в виде комментариев PR.

Тестирование

Используйте прилагаемый файл test.http с VS Code REST Client или аналогичным HTTP-клиентом для ручного тестирования конечной точки вебхука.

buggy_samples.py содержит преднамеренные ошибки в нескольких категориях (безопасность, логика, параллелизм, обработка ошибок) для тестирования возможностей обнаружения ошибок pr-agent.

Лицензия

Частная — только для внутреннего использования.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    A 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.
    -
  • A
    license
    A
    quality
    A
    maintenance
    An 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.
    7
    MIT