👯

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サーバーを作りました。

https://github.com/hiragram/github-as-app

このツールで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