CursorにGitHubのMCPを追加して、Pull Requestの作成までやらせてみた
AIエディターCursorを利用してGitHubへのPull Request作成を自動化する方法が紹介されています。GitHubのAPIを利用し、MCPを使って個人用アクセストークンを取得して設定することで、指示したタスクをエージェントに実行させることが可能です。エージェントはコードを書いてプルリクエストを作成し、他のエージェントがコードレビューを行う機能も備えています。MCPを使用することでGitHub上のリソース操作が自動化され、便利な機能を利用できます。
目次
CursorなどのAIエディター便利ですよね。Agentモードにすると、要求に対して実装内容やドキュメントの確認から本実装までサクサク進めてくれます。どうせ任せるなら、GitHubへのpull request作成もやらせたいなと思ったので、MCPを使ってGitHubにもアクセスしてもらうようにしてみました。
Cursorにつなぐ
GitHubのAPIを利用してCursorからPull Request作成などを行います。そのため、個人用アクセストークン( Personal Access Token )を取得しておきましょう。設定する権限については、MCPとGitHubのドキュメントを参考に操作したいリソース・アクションを選びます。今回はPull Request / Issue / ContentsにWrite権限を付与しました。
取得したトークンを使って、以下のコマンドを完成させましょう。github_pat_xxx
部分を自分のトークンに書き換えます。
env GITHUB_PERSONAL_ACCESS_TOKEN=github_pat_xxx npx -y @modelcontextprotocol/server-github
書き換えたコマンドを、Cursorの設定ページにある Add new MCP server から追加します。

このようにMCP Serverが追加されていればOKです。

これでCursorのエージェントがGitHubリポジトリにアクセス・操作できるようになりました。
エージェントに指示してみる
早速使ってみましょう。まずはIssueの情報を読めるか聞いてみます。git remote add
しているプロジェクトなのですが、リポジトリのパスを聞いてきました。この辺りはエージェントやモデル次第なのかもしれません。

とはいえリポジトリ情報を渡すと、どんなissueがあるかを調べてくれました。今回はリストアップだけですが、「#xのIssueに対応するpull requestを作って」みたいな指示もできそうですね。

Cursorに指示したタスクを、そのままpull requestとして作らせる
では今回一番やりたかった、pull request作りをやらせてみましょう。ちょうどエージェントに作業させていたタスクがあったので、「MCPを使ってpull requestを作って」と指示してみます。今回はgitコマンドを触らせていたからか、リポジトリの特定までエージェントがやってくれました。

作業が完了したと表示されたので、GitHubにアクセスしてみましょう。ただpull requestを作るだけでなく、何を変更したかを書いてくれているのがわかります。そしてよくみるとgemini-code-assistがコードレビューを始めていますね。エージェントがコードを書いてプルリクエストを作り、別のエージェントがレビューをするという不思議な光景が広がっていました。

Issueへの対応もCursor x MCPで
「Issueが読めて、Pull Requestを作れるということは・・・?」と思ったので、Cursorに「MCPをつかって、GithubにあるIssue #8を修正して。作業は新しいブランチを作って行うこと。」と指示を出してみました。すると予想通り、Issueの内容を確認してコードの変更を開始しています。

そのままpull request作成までやってくれました。

ありがたい限りではありますが、ここまでの自動化をすると「これって結局何が問題で、何をやったんだっけ?」みたいな事態にならないかは少し心配になりそうです。今回は個人開発系なので思い切りよく行きましたが、実際の現場では一旦「このIssueってどういうこと?なにをすべき?」みたいな相談をClaudeなどにしてから、Cursorに指示を出すべきかなとは思います。
触ってみて
MCPをはじめて触ったのですが、GitHub上のリソース操作などもまとめてやってくれるのは想像以上に便利でした。ブラウザを開いて情報やデータをコピーし、それをCursorやClineなどに渡すようなタスクをしている場合は、そのサービスのMCPがないかを調べてみると良さそうです。
ただ、生成されるpull requestはあくまで「何をどうやったか( What / How )」に限定されています。そのため、チームでプロダクト開発を行う場合は、「なぜそれをやるのか?( Why )」の情報を人間がちゃんと足してやる必要はありそうです。この辺りも自動化させる方法・プロンプトやRulesがあるかもしれませんが、いきなり最適化させるよりは、少しずつ慣れていくのが良いかと思います。
参考
- https://zenn.dev/nari007/articles/ac2d759fa92c50
- https://github.com/modelcontextprotocol/servers/tree/main/src/github
余談: MCPサーバーを自分で用意する場合
今回の記事では、npx
コマンドを利用してコマンドを実行できるようにしました。もう1つのやり方として、該当コマンドをnpm i -g
でインストールする方法もあります。この場合は次のようなコマンドで追加しましょう。
% npm install -g @modelcontextprotocol/server-github
動作確認は、mcp-server-github
コマンドを実行することで行えます。
% mcp-server-github
GitHub MCP Server running on stdio
もしコマンドが見つからないと言われた場合は、npm ls -g
でどこにファイルがあるか調べましょう。
% npm ls -g @modelcontextprotocol/server-github
/Users/okamotohidetaka/.anyenv/envs/nodenv/versions/22.1.0/lib
└── @modelcontextprotocol/[email protected]
あとはそこからbin/mcp-sever-github
コマンドを探せばOKです。
% /Users/okamotohidetaka/.anyenv/envs/nodenv/versions/22.1.0/bin/mcp-server-github
GitHub MCP Server running on stdio
ここまで作業してから、npx
で済むことを知ったので、結局これは使いませんでした。