💬
CursorからGitHub GraphQL APIに雑にクエリを投げるMCPを自作した
概要
- Cursorに設計/仕様の相談をしたり、長ーいissueコメントの最新状況まとめを書かせたり、随所で行われてる議論からホットトピックを抽出させたりしたかった
- GitHubのIssues, Pull Requests, Projects(カンバン)にアクセスできるMCPが欲しかったが、GitHubの公式MCPではやりたいことができなかった
- 雑に自作したので使い方、所感を紹介します
前提
AIコードエディター「Cursor」
GitHub GraphQL API
MCPとは
自作MCPの中身と使い方
中身
- GitHub GraphQL APIに対してクエリを投げつけて返すだけのシンプルなもの
- コードと使い方は公開してある
使い方
1. GitHubのPersonal Access Token を取得する
初めてやる方はこの辺を参考にどうぞ
2. CursorのMCP設定を足す
- Cursor の
mcp.json
に下記の github-cli セクションを追加する -
env
の<PERSONAL_ACCESS_TOKEN>
に自分の GitHub アクセストークンを貼る
{
"mcpServers": {
"github-cli": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ikutani41/github-cli-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<PERSONAL ACCESS TOKEN HERE>"
}
}
}
}
3. Cursorを再起動
(厳密には再起動しなくてもほぼ大丈夫なんですが一応
4. 必要に応じてRulesにインストラクションを追加
このMCPを使う際のガイドを与えておくと、より良い感じに動きそうです。
参考用のRuleファイルも置いておいたので、<>
で囲われているOwner名
とRepository名
をご自身の環境に合わせて変えて使ってみてください。
雑感
こういう使い方ができる。
重たい腰を上げて大量の情報をスキャンして整理する、みたいな仕事がとても楽になった。
https://github.com/Everforth/pj-name/issues/1234
このissueのやりとり見て最新状態をまとめて。決定事項と残と重要情報。
https://github.com/Everforth/pj-name/pull/789
このPRやっとApprove付いた!やりとり拾って別チケットとして切り出すべき作業や課題を抽出して。
https://github.com/orgs/Everforth/projects/12
このプロジェクトの Ready カラムにある issue を見て、それぞれの重さを3つにレベル分けして。アサイン考えたい。
https://github.com/Everforth/pj-name/issues/1234
設計議論が着地しました!議論を追って最終的な設計をtmpフォルダに書いといて!
データ設計とAPIエンドポイント設計だけでOKです。
GitHub公式MCPで「やりたいことができなかった」件について
- 具体的に困ったことは2つ
- カンバン(
ProjectV2
)にアクセスする方法がなかった - issueやpull requestのリストやcommentのリストを取得する場合、20件指定でもresponseが大きすぎて(10万文字とか)Cursor Agentが処理しきれなかった
- カンバン(
- そのため、GitHubのリソースに自由にアクセスできて、ほしい情報だけ取得することでresponseも最小限で済ませられるGraphQL APIを使う方法を採用した
- 元々、私はREST APIの方が分かりやすくて好きだった
- AIにとっては分かりやすさの差はなさそう
- リソース横断で目的に応じた情報を取りたいというREST APIが有利だと思っていたユースケースも、Cursorが自分で数種類クエリを組み立てて順次勝手に実行してくれるので特に困らなかった
- (たまにスキーマ理解が抜けていてケアレスミスをするので、そういうものは手順を作ってやらせることで解決している
- GitHubの公式MCPは新旧あり、この試みを始めた当初は旧しかなかった
- 引き続きREST APIっぽい思想でtool提供しているようなので、今回の用途においては乗り換えはなさそう
旧
新
Discussion