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.

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

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.

Лицензия

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

-
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