CursorにGitHub MCPを設定して色々便利にする

はじめに
開発者の生産性向上が重要視される現代のソフトウェア開発において、AIツールの活用は不可欠となってきています。本記事では、CursorというAI搭載のIDEとGitHub MCPの連携による開発ワークフローの改善について解説します。
なぜCursorとGitHub MCPなのか?
Cursor上でGitHub MCPを活用することで、以下のような利点が得られます:
- GitHubの操作をAIアシスタントに任せることができる
- コードレビューや問題解決のプロセスが効率化される
- 複雑なGitHub操作をシンプルな自然言語で実行可能

セットアップ
セットアップは非常にシンプルです。詳細な手順は以下の公式ドキュメントを参照してください:
基本的なセットアップステップ:
- GitHubのPersonal Access Tokenを作成
- Cursorの設定でMCPサーバーを追加
- 環境変数の設定

GitHubのPersonal Access Tokenについて、最新の情報を確認させていただきます。
1. Fine-grained tokens(より推奨)
-
アクセス権限の細かい制御が可能
- 50以上の細かい権限を個別に設定可能
- 各権限に対して「アクセスなし」「読み取り」「読み書き」を設定可能
- リポジトリごとに個別のアクセス権限を設定可能
-
セキュリティ機能
- 有効期限の設定が必須
- 組織の管理者による承認機能あり
- トークンの使用状況の監視が可能
-
制限事項
- GraphQL APIは現時点でサポート外
- 所属していない組織のリポジトリへのアクセスには使用不可
- Enterprise account APIへのアクセスには使用不可
2. Tokens (classic)
-
広範なアクセス権限
- ユーザーがアクセス可能な全てのリポジトリに対してアクセス可能
- 権限の粒度が荒い(例:
repo
スコープは全ての私有リポジトリに対する完全なアクセス権を付与)
-
セキュリティ面での懸念
- 有効期限の設定が任意
- 組織の管理者による制御が限定的
- トークンが漏洩した場合のリスクが大きい
推奨される使用方法
-
基本的な方針
- 可能な限りFine-grained tokensを使用することが推奨されています
- 必要最小限の権限のみを付与する原則に従う
-
Classic tokensが必要なケース
- 所属していない組織のリポジトリへのアクセス
- Enterprise account APIの使用
- GraphQL APIの使用
-
長期的な自動化の場合
- GitHub ActionsやGitHub Appsの使用を推奨
- 特に組織での利用では、個人のアカウントに依存しないGitHub Appsが推奨されます
この情報は2024年4月時点の最新情報に基づいています。GitHubは継続的に機能を改善しており、将来的にはFine-grained tokensの制限事項が解消される可能性があります。

組織のリポジトリにアクセスするためのPersonal Access Tokenの設定について説明させていただきます。
組織のリポジトリが選択できない場合、以下の手順で解決できます:
- 組織側での設定確認と変更
まず、組織の管理者が Fine-grained PAT を有効にする必要があります:
-
組織のページに移動
-
Settings → Third-party Access → Personal access tokens
-
以下の設定を確認/変更:
- 「Allow fine-grained personal access tokens」を有効化
- 必要に応じて「Require administrator approval」(管理者の承認が必要かどうか)を設定
-
トークンの作成手順
-
GitHubにログイン
-
右上のプロフィールアイコン → Settings
-
Developer settings → Personal access tokens → Fine-grained tokens
-
「Generate new token」をクリック
-
重要な設定項目:
- Resource owner: ここでご自身の組織を選択
- Repository access: 「Only select repositories」を選択し、必要なリポジトリを選択
- Permissions: 必要な権限を設定
-
承認プロセス
組織で承認が必要な設定になっている場合:
-
トークン生成後、組織の管理者に承認リクエストが送信されます
-
管理者が承認するまでトークンは使用できません
-
管理者は組織の Settings → Third-party Access → Personal access tokens で承認可能
-
トラブルシューティング
もし組織のリポジトリが選択できない場合の確認ポイント:
-
組織でのあなたの権限レベルを確認
-
組織でFine-grained PATが有効になっているか確認
-
組織の設定で制限が設けられていないか確認
-
代替手段
どうしても Fine-grained PAT で設定できない場合:
-
Classic token を使用(非推奨ですが、一時的な解決策として)
- Developer settings → Personal access tokens → Tokens (classic)
-
repo
スコープを選択 - 組織のアクセス権を付与
-
GitHub App の作成(推奨:長期的な解決策として)
- より細かい権限制御が可能
- 組織全体での管理が容易
- 個人アカウントに依存しない
これらの設定で問題が解決しない場合は、組織の管理者に以下の点を確認する必要があります:
- 組織のFine-grained PAT設定の状態
- あなたの組織での権限レベル
- 組織の制限ポリシー
なお、これらの設定は組織のセキュリティポリシーに大きく関わるため、必ず組織の管理者と相談の上で進めることをお勧めします。

npx に記述されたコマンドを Add MCP Server に記述すると追加された.
トークンを設定し忘れていた.
For SSE servers, the URL should be the URL of the SSE endpoint, e.g. http://example.com:8000/sse.
For stdio servers, the command should be a valid shell command that can be run from the terminal. If you require environment variables to be set, we recommend you write a small wrapper script that sets the environment variables and then runs the server.
https://docs.cursor.com/context/model-context-protocol
env GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> npx -y @modelcontextprotocol/server-github

ユースケースを試す
実践的ユースケース
1. コードレビューの効率化
PRの自動レビュー
// AIアシスタントに以下のようなタスクを依頼可能
- PRの変更内容の要約
- コーディング規約との整合性チェック
- セキュリティの脆弱性スキャン
レビューコメントの作成
- 文脈を理解した建設的なフィードバック
- コードの改善提案
- ベストプラクティスの提示
2. イシュー管理の最適化
イシューの効率的な管理
- 関連イシューの検索と分類
- 優先度の判断支援
- 解決に必要なリソースの特定
解決策の提案
// AIアシスタントができること
- 類似イシューの検索
- コードベースからの関連箇所の特定
- 具体的な修正案の提示
3. コード検索と分析
プロジェクト全体の検索
- 特定の実装パターンの検索
- 依存関係の分析
- コードの重複検出
使用例
// 例:特定のパターンを持つコードの検索
- セキュリティ上の問題がある可能性のあるパターン
- パフォーマンス最適化の候補
- 非推奨APIの使用箇所
4. ブランチ管理とマージ作業
効率的なブランチ管理
- コンフリクトの事前検出
- マージ前の影響範囲分析
- 自動的なブランチ更新
マージ作業の支援
// AIアシスタントによるサポート
- マージ前のコードレビュー
- テストカバレッジの確認
- ドキュメントの更新確認

トークンを設定し忘れていた.
For SSE servers, the URL should be the URL of the SSE endpoint, e.g. http://example.com:8000/sse.
For stdio servers, the command should be a valid shell command that can be run from the terminal. If you require environment variables to be set, we recommend you write a small wrapper script that sets the environment variables and then runs the server.
https://docs.cursor.com/context/model-context-protocol
env GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> npx -y @modelcontextprotocol/server-github

何も設定しないと,ownerやrepoをハルシネーションした値でフィルタし出してしまう.
正しい値を与える必要がありそう

github issueを取得,更新することができた.
これによって, 設計と実装フェーズを分ける
作業に GitHub をつかえる.
(参考:https://note.com/suthio/n/n6a7663311d50)
GitHubのissue上で設計し,実装時にはissue内の要件に従いタスクを実行するのみ.これによって,LLMというコンテキスト長が短いツールを効率よく使える.
Cursorが作成したissueの一部
ユーザーは,issueの内容をレビューすれば良い