pr-agent-mcp
English | 中文
PR-Agent MCP サーバー
pr-agent CLI コマンドを MCP ツールとして公開する MCP (Model Context Protocol) サーバーです。オプションで Gitea の Webhook 統合による自動 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 Webhook: Gitea で新しい PR が開かれたときに、review、describe、improve アクションを自動的にトリガーします。
HMAC 署名検証: セキュリティのためのオプションの Webhook 署名検証。
設定の注入:
~/.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 インスタンス (Webhook 統合用、オプション)
プロバイダーの認証情報を含む
~/.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これにより:
イメージがビルドされます (マルチステージ:
pr-agentとmcpの依存関係を venv にインストールし、ランタイムにgitをインストール)。ホームディレクトリが読み取り専用でコンテナ内の
/host-homeにマウントされ、~/.secrets.tomlを読み取れるようにします。ホストのポート
9000をコンテナのポート9000にマッピングします。SSE と StreamableHTTP の両方のトランスポートでサーバーを起動します。
コンテナは単一の
.secrets.tomlファイルではなく、${USERPROFILE}(ホームディレクトリ全体) をマウントします。存在しないホストファイルをマウントすると、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" -NoBuild3. 別のマシン (例: テストサーバー) で実行
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 シークレットの設定
server.py の WEBHOOK_SECRET を、Gitea Webhook 設定で構成したものと同じシークレットに設定します。空のままにすると署名検証が無効になります (本番環境では推奨しません)。
3. サーバーの起動
.\run.ps1または直接:
python server.py
python server.py --transport sse # SSE only
python server.py --transport streamable-http # StreamableHTTP onlyエンドポイント
エンドポイント | メソッド | 説明 |
| GET | AI クライアント用 MCP SSE 接続エンドポイント |
| POST | MCP StreamableHTTP エンドポイント |
| POST | MCP メッセージトランスポート (SSE モード) |
| POST | 自動 PR レビュー用 Gitea Webhook レシーバー |
MCP ツール
ツール | 説明 |
| PR をレビュー: 概要と具体的な提案 |
| PR のタイトルと説明を生成または更新 |
| PR コメントとしてコード改善を提案 |
| PR について質問する |
| PR 作成者に PR に関する質問をする |
| PR の内容に基づいて変更履歴を更新 |
| PR のラベルを生成する |
Gitea Webhook のセットアップ
Gitea リポジトリで、設定 → Webhook → Webhook を追加 に移動します。
ターゲット URL を
http://<your-server>:9000/webhookに設定します。HTTP メソッドを
POST、コンテンツタイプをapplication/jsonに設定します。必要に応じてシークレットを設定します (
server.pyのWEBHOOK_SECRETと一致させる必要があります)。プルリクエスト イベントで、アクション Opened を選択します。
PR が開かれると、サーバーは自動的に review、describe、improve アクションを実行し、結果を PR コメントとして投稿します。
テスト
同梱の test.http ファイルを VS Code REST Client または同様の HTTP クライアントで使用して、Webhook エンドポイントを手動でテストできます。
buggy_samples.py には、pr-agent のコードレビュー検出機能をテストするための、複数のカテゴリ (セキュリティ、ロジック、並行性、エラーハンドリング) にわたる意図的なバグが含まれています。
ライセンス
プライベート — 内部使用のみ。
This server cannot be deployed
Maintenance
Related MCP Connectors
GitHub Copilot MCP: code, repo, PR, workflow tools for AI assistants.
1AI-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.…
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.1233 PyPIMIT
- AlicenseAqualityCmaintenanceProvides GitHub PR review capabilities to LLMs, enabling automated PR analysis, review submission, and inline commenting via MCP.145 npm1MIT