最近話題のMCPサーバーをCursorで触ってみた（GitHub MCP Server編）

みなさん、こんにちは。

最近、MCPサーバーが流行っていて気になったので触ってみたよというショートな記事になります。

何ができそうか、どんな使い方をすればいい感じかは別の記事で書きたいと思います！

# 設定
以下の手順でCursorでGutHubのMCPサーバーを使う設定を行うことができます。

- GitHub側の準備をする
- CursorにGitHubのMCP設定を追加
- 設定できたか確かめてみる

## 1. GitHub側の準備をする
まずは、GitHubにアクセスするためにパーソナルアクセストークンを取得しましょう。

1. [GitHub](https://github.com/)にログインする。
1. プロフィールのアイコンをクリックし、「⚙️ Settings」をクリックする。
1. 左側のバーを下までスクロールし、「＜＞ Developer settings」をクリックする。
1. 「🔑 Personal access tokens]→「Fine-grained tokens」を選択
1. 「Generate new token」をクリックする。
1. トークンを設定する
    - **Token name:** あとで見てわかりやすい名前をつけましょう
    - **Description:** トークンの説明です。書かなくても大丈夫！
    - **Resource owner:** デフォルトは自分のアイコンとユーザー名が表示されていますが、自分が所属している Organization も設定できるようです
    - **Expiration:** トークンの有効期限を設定します。30日などの短めに設定しておくのがセキュリティ的に良いと思います
    - **Repository access:** 次の3つから選ぶことができます。利用の観点からは、All repositories などの方が楽ですが、セキュリティの観点からOnly select repositoriesの方が良いと思います。
        -  **Public repositories:** Publicリポジトリへの読み取り専用。
        -  **All repositories:** 現在および将来所有するすべてのリポジトリに適用。公開リポジトリ（読み取り専用）も含む。
        -  Only select repositories: 個別に適用するリポジトリを選択可能（1~50）。公開リポジトリ（読み取り専用）も含む。
    -  **Permissiona:** リポジトリ関連の権限を選択します。リポジトリの削除が可能になる権限などもあったりするので、ご自身で確認をした上で、最小限の権限を選択しましょう。
1. 「Generate token」ボタンをクリック
1. 表示されたトークンをコピーして安全な場所に保存（⚠️再表示されません）

これで、GitHub側での設定は完了です！

## 2. CursorにGitHubのMCP設定を追加
次に、Cursor側の設定をしていきましょう。

1. Cursorを開いて、右上の「⚙️」をクリックして、設定を開きます。
1. 左のバーから「MCP」を選択する。
1. 「+ Add new global MCP」をクリックし、`mcp.json`に以下のコードを貼り付けてください。
    ```json
    {
      "mcpServers": {
        "github": {
          "command": "docker",
          "args": [
            "run",
            "-i",
            "--rm",
            "-e",
            "GITHUB_PERSONAL_ACCESS_TOKEN",
            "ghcr.io/github/github-mcp-server"
          ],
          "env": {
            "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR TOKEN>"
          }
        }
      }
    }
    ```
1. `<YOUR TOKEN>`のところに先ほどコピーしておいたトークンを貼り付けます。

これで、Cursor側での設定は完了です！

このまま使うとうまく行かない時があるので、一度Cursorを再起動しておくのをおすす
めします。

## 3. 設定できたか確かめてみる

それでは、issueを取得させてみましょう。
![スクリーンショット 2025-05-30 17.11.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604108/40a8516e-a8ca-4b78-bcf3-0b25dc3e88e3.png)

まずは、`get_me` というツールを使ってGitHubの情報を確認するようです。承認してみます。
![スクリーンショット 2025-05-30 17.12.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604108/552cc63c-2f1b-4893-8acf-acf60fd6900a.png)

情報が確認できたようなので、`search_repositories`というツールを使ってリポジトリの情報を確認してみるようです。承認してみます。
![スクリーンショット 2025-05-30 17.13.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604108/c01092f6-093b-43e8-a7d5-f54cc3a83066.png)

取得可能なリポジトリを見つけてきたようですね。`list_issues`というツールの使用を承認してみます。
![https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_604108_db4a9fb1-cad0-42c7-a31a-ab51206cd939のコピー.tiff](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604108/ae8970d4-b3a1-460e-b61b-3babee17f5e2.tiff)

次のようにオープンなissueのリストを取得してくれました！
![https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_604108_280f1928-d74a-410b-975f-b4b5acaa5fdfのコピー.tiff](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604108/6ef68647-9a4a-44e2-aedd-a9f1155e2b5c.tiff)

色々と遊んでみると、そのほかにもissueの内容を詳細にみたり、クローズしたり、コメントを追加したりと結構なんでもできるようでした。

すごい。

# できること
READMEにできること（ツール）の種類がリストアップされていました。
いくつかみてみましょう👀

https://github.com/github/github-mcp-server?tab=readme-ov-file#tools

## Users

| ツール名 | 説明 |
| ---- | ---- |
| `get_me` | 認証されたユーザーの詳細を取得 | 


## Issues

| ツール名 | 説明 |
| ---- | ---- |
| `get_issue` |	リポジトリ内の問題の内容を取得 |
| `get_issue_comments` | issueに対するコメントを取得 |
| `create_issue` | 新しいissueを作成 |
| `add_issue_comment` | issueにコメントを追加|
| `list_issues` | リポジトリのissueを一覧表示してフィルタリング |
| `update_issue` | リポジトリの既存のissueを更新 |
| `search_issues` | issueとプルリクエストを検索 |

## Pull Requests

| ツール名 | 説明 |
| ---- | ---- |
| `get_pull_request` | 特定のプルリクエストの詳細を取得|
| `list_pull_requests` | リポジトリのプルリクエストを一覧表示してフィルタリング |
| `merge_pull_request` | プルリクエストをマージ |
| `get_pull_request_files` | プルリクエストで変更されたファイルのリストを取得 |
| `get_pull_request_status` | プルリクエストのすべてのステータスチェックの総合ステータスを取得 |
| `update_pull_request_branch` | プルリクエストブランチをベースブランチからの最新の変更で更新 |
| `get_pull_request_comments` |プルリクエストのレビューコメントを取得 |
| `get_pull_request_reviews` | プルリクエストのレビューを取得 |
| `create_pull_request_review` | プルリクエストレビューにレビューを作成 |
| `create_pull_request` | 新しいプルリクエストを作成|

## Repositories

| ツール名 | 説明 |
| ---- | ---- |
| `create_or_update_file` | リポジトリ内の単一ファイルを作成または更新 |
| `push_files` |単一のコミットで複数のファイルをプッシュ |
| `search_repositories` | GitHubリポジトリを検索 |
| `create_repository` | 新しいGitHubリポジトリを作成|
| `get_file_contents` | ファイルまたはディレクトリの内容を取得 |
| `fork_repository` | リポジトリをフォーク |
| `create_branch` |新しいブランチを作成 |
| `list_commits` | リポジトリのブランチのコミットを取得|

などなど

ほかにも色々ありますのでご自身で確認してみてください！