👯
LLMエージェントをもう少しちゃんと同僚にしてチーム感を演出する
(筆者は普段Claude Codeを使っているのでその前提で喋りますが、多分どのエージェントツールでも当てはまると思います)
LLMエージェントにPull Requestを作らせるとき、 gh pr create コマンドを使おうとしますよね。そうすると、 gh コマンドに設定済みの認証情報、つまりエージェントに指示を出している私のアカウントでPRが作られます。

PRを出した人が自分でApprove/Request changesを出すことはできません(コメントはできます)。

せっかくですから、「コードを書いた人がPRを出して、別の人がレビューをして、その結果をみて修正する」というループをちゃんと登場人物を分けてみようと思います。
github-as-app MCP
GitHub Appsとして認証し、そのbotとしてissueやPRを操作するMCPサーバーを作りました。
このツールでissueやPRを作ることで、自分のアカウントではなく、botアカウントによるものになります。

詳細
以下のツールが提供されています。
Issue操作
- list_issues - リポジトリ内のIssue一覧を取得
- get_issue - 特定のIssueの詳細情報を取得
- create_issue - 新しいIssueを作成
- update_issue - 既存のIssueを更新
- comment_issue - Issueにコメントを追加
- assign_issue - Issueにユーザーを割り当て
Pull Request操作
- list_prs - リポジトリ内のPull Request一覧を取得
- get_pr - 特定のPull Requestの詳細情報を取得
- create_pr - 新しいPull Requestを作成
- update_pr - 既存のPull Requestを更新
- comment_pr - Pull Requestにコメントを追加
- merge_pr - Pull Requestをマージ
- assign_pr - Pull Requestにユーザーを割り当て
- request_reviewers - Pull Requestにレビュアーをリクエスト
- create_review_comment - 特定の行にレビューコメントを作成
- submit_review - レビューを送信(承認/変更リクエスト/コメント)
- get_pr_checks - Pull RequestのCI/CDチェック実行状況を取得
- get_pr_status - Pull Requestの統合ステータスを取得
セットアップ
詳細はREADMEに全て書いてあります。
主な手順:
- GitHubの設定ページからGitHub Appを新規作成する。 → App IDとしてあとで使う
- 必要な権限をつける:
- Contents: Read and Write
- Issues: Read and Write
- Pull requests: Read and Write
- Checks: Read
- Commit statuses: Read
- botユーザー名とアイコンを設定する。
-
- 自分のGitHubアカウントにインストールする。 → Installation IDとして後で使う
- 秘密鍵を生成してダウンロード。Base64エンコードする。 → 後で使う
$ base64 -i path/to/your-app.private-key.pem | tr -d '\n'
LLMエージェントにMCPサーバーとして追加します。以下はClaude Codeの例です。
$ claude mcp add github-as-app npx github-as-app \
-e GITHUB_APP_ID=your-app-id \
-e GITHUB_APP_PRIVATE_KEY=your-base64-encoded-private-key \
-e GITHUB_APP_INSTALLATION_ID=your-installation-id
最後に、CLAUDE.mdを更新して、 gh コマンドの代わりに github-as-app ツールを使うようカスタムインストラクションに追記します。
# GitHub Operations
When github-as-app MCP is set up, use the github-as-app MCP tools instead of the gh command for GitHub operations.
Use the git_commit tool instead of git commit for making commits.
これで、すべて自分のアカウントで作られたPRに囲まれて孤独感に飲まれることなく、イマジナリー同僚と楽しく開発できるようになりました。
楽しんでください。
Discussion