Claude Desktop や Cursor エディタから Backlog MCP Server を使って、Backlog とやり取りしてみる


## はじめに

株式会社ヌーラボから Backlog を操作する[公式 MCP サーバー](https://github.com/nulab/backlog-mcp-server)が2025年4月24日に公開されました。
この記事では、Backlog MCP サーバーを使って、Backlog とやり取りしてみます。

## 参考情報

https://github.com/nulab/backlog-mcp-server

## Backlog MCP Server とは

GitHub リポジトリによると、Backlog MCP Server は様々な AI エージェントを通じて Backlog 上の課題や Wiki ページの内容を操作できる MCP サーバーです。

> Backlog API とやり取りするための Model Context Protocol（MCP）サーバーです。Claude Desktop や Cline、Cursor などの AI エージェントを通じて、Backlog 上でプロジェクトや課題、Wiki ページなどを操作するためのツールを提供します。

Backlog MCP Server を使うと、このようなことができます。

- プロジェクト管理（作成、取得、更新、削除）
- 課題管理（作成、更新、削除、一覧）
- Wiki ページ管理
- Git リポジトリ管理
- プルリクエスト管理（作成、更新、一覧、コメント）
- 通知管理
- ウォッチリスト管理
- その他多数の Backlog API 機能に対応

## 前提条件

- Claude Desktop 0.9.0 以降がインストールされていること（この記事では Windows 版 0.9.2 を使用）
- Docker Desktop がインストールされていること
  - MCP サーバーを Docker で起動するために必要です
- Backlog のスペースがあること
- Backlog の API キーが発行されていること
  - スペースの API キーを発行する方法は、Backlogヘルプセンターの[APIの設定](https://support-ja.backlog.com/hc/ja/articles/360035641754-API%E3%81%AE%E8%A8%AD%E5%AE%9A)を参照

## Claude Desktop のセットアップ

### インストール

[Claude.ai 公式サイト](https://claude.ai/download) からインストーラーをダウンロードしてインストールします。

### MCP サーバーの設定

続いて、[Backlog MCP Server](https://github.com/nulab/backlog-mcp-server) に従って Backlog MCP Server をインストールします。

1. Claude Desktop を起動し、左上のハンバーガーメニューから「ファイル」→「設定」を選択
1. 設定ウィンドウから「開発者」を選択
1. 「構成を編集」をクリックしてエクスプローラーを開く
1. `claude_desktop_config.json` を編集（場所: `C:\Users\{ユーザー名}\AppData\Roaming\Claude\claude_desktop_config.json`）

![Claude Desktop の設定メニュー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/e627ec9b-1258-4c34-8428-a94743c6f7a7.png)

![Claude Desktop の開発者設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/1ec5f39d-ca62-4f20-9d6b-62985e603e84.png)

`claude_desktop_config.json` に以下の設定を追加します。`BACKLOG_DOMAIN`は、利用するBacklogのドメインを指定します。例えば、`{スペース名}.backlog.com` もしくは `{スペース名}.backlog.jp` のような形式です。`BACKLOG_API_KEY` は、Backlogヘルプセンターの[APIの設定](https://support-ja.backlog.com/hc/ja/articles/360035641754-API%E3%81%AE%E8%A8%AD%E5%AE%9A)を参考にAPIキー発行し、それを指定します。

```json:claude_desktop_config.json
{
  "mcpServers": {
    "backlog": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e", "BACKLOG_DOMAIN",
        "-e", "BACKLOG_API_KEY",
        "ghcr.io/nulab/backlog-mcp-server"
      ],
      "env": {
        "BACKLOG_DOMAIN": "your-domain.backlog.com",
        "BACKLOG_API_KEY": "your-api-key"
      }
    }
  }
}
```

設定後、Claude Desktop を再起動します。メニューから「終了」を選択して閉じ、再度起動します。ウィンドウを閉じただけでは設定が反映されないため注意してください。Claude Desktop と併せて Docker Desktop も起動します。

![Claude Desktop を終了する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/f3c1f976-86cf-4121-9e73-8797ea376688.png)

## 動作確認

Claude Desktop を起動すると、チャット画面にハンマーのアイコンが表示され、設定した権限に応じて利用可能な MCP ツールの数が表示されます（以下のスクリーンショットの 21 の部分。インストールしている MCP サーバーによって数が変わります）。

![ハンマーのアイコン](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/74ac6ec2-871b-497f-83f0-7ff3c208aeaf.png)

ハンマーのアイコンをクリックすると、利用可能な MCP ツールが表示されます。その中に `add_issue`、`add_issue_comment` などが表示されていることを確認できます。

![利用可能な MCP ツール](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/1c0a5a9e-94dc-4ea0-9e4b-6ce942c47e3a.png)

## 使用例

### プロジェクトの一覧の取得

Claude Desktop のチャット画面で、以下のようなメッセージをポストします。

> Backlog 上のすべてのプロジェクトを一覧表示して。

すると、MCP サーバーは以下のようにプロジェクトのリストを返してくれます。プロジェクト名やプロジェクトキー、プロジェクト ID、子課題設定や Git 設定の有無などが表示されています。

![プロジェクトのリスト](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/e85af967-9378-4cde-adaf-3c6d5c42b1af.png)

### 課題の作成

Claude Desktop のチャット画面で、以下のようなメッセージをポストします（後述のとおり、Claude Desktop ではエラーが発生します）。

> TASK プロジェクトに「ログインページのバグ修正」という高優先度の課題を作成して。

すると、MCP サーバーは課題を作成するためにまず `get_space` を呼び出します。

![MCP サーバーが get_space を呼び出す](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/587dbd7c-0faf-49dc-b52d-040188d06312.png)

しかし、その後エラーが発生しました。今のところ Claude Desktop でのみ発生する事象のようです。GitHub に Issue がありました。

https://github.com/nulab/backlog-mcp-server/issues/1

![Claude Desktop のエラー画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/56c1e8ff-0c2a-43b4-83d3-5dcb460ffe84.png)

## Cursor のセットアップ

### インストール

[Cursor 公式サイト](https://www.cursor.com/) からインストーラーをダウンロードしてインストールします。

### MCP サーバーの設定

続いて、Cursor の設定画面で MCP サーバーを設定します。

1. Cursorエディターを起動し、`CTRL + SHIFT + P` を押してコマンドパレットを開き、`Cursor Settings` を選択
1. 左側のメニューから`MCP`を選択し、続いて`Add new global MCP server`を選択
1. `mcp.jsonn` を編集

![Cursor Settings メニュー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/70a53d34-7e43-4350-bcbb-863bca50a58f.png)

Claude Desktop と同様に、`mcp.json` に以下の設定を追加します。

```json:mcp.json
{
  "mcpServers": {
    "backlog": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e", "BACKLOG_DOMAIN",
        "-e", "BACKLOG_API_KEY",
        "ghcr.io/nulab/backlog-mcp-server"
      ],
      "env": {
        "BACKLOG_DOMAIN": "your-domain.backlog.com",
        "BACKLOG_API_KEY": "your-api-key"
      }
    }
  }
}
```

## 動作確認

さきほどと同様に `Cursor Settings` を開き、左側のメニューから `MCP` を選択すると、MCP Server の一覧が表示されます。設定に誤りがなければ `backlog` の左隣に緑色の丸印が表示されます。

![Backlog MCP Serverの設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/d6b48147-f17e-495a-921f-df07172173b7.png)

## 使用例

### プロジェクトの一覧の取得

Cursor のチャット画面で、以下のようなメッセージをポストします。

> TASKプロジェクトに、以下の課題を作成して。
> 件名: シビックの車検
> 優先度: high
> 担当者: Rev
> 課題内容: シビックを車検に出す。ワイパーゴムを交換する。

すると、MCP サーバーは以下のように応答しました。Backlog API に渡す課題タイプの ID が取得できず、ID を求められました。タイプ ID を調べチャットに返すと、課題が作成されました。

![Cursor のチャットで Backlog に課題を登録](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/07ce6091-23d6-40e1-9410-c566abbf3707.png)

このように、Backlog に課題を作成することができました。

![Backlog に課題が作成された](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/e5e7c349-2259-4786-a035-127f558079cb.png)

### 課題の検索

Cursor のチャット画面で、以下のようなメッセージをポストします。

> TASKプロジェクトから車に関連する課題を探して、課題件名のリストと内容を要約したものを一覧にして。

すると、MCP サーバーは以下のように応答しました。MCP サーバーは「自動車」や「インテグラ」というキーワードで課題を検索し、結果を返してくれました。車に関する課題は、他に運転免許証や自動車保険の更新などがありますが、それらは検索結果には含まれませんでした。MCP サーバー側にもとのクエリから検索キーワードを生成するクエリ拡張があると良いかもしれません。

![Cursor のチャットで Backlog の課題を検索](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/04fcff86-f1ef-4bb5-9636-89eeb4cfdfc1.png)

### プルリクエストの作成

Cursor のチャット画面で、以下のようなメッセージをポストします。

> APP プロジェクトの server-resources/develop ブランチから main ブランチへのプルリクを作成して。

すると、MCP サーバーは以下のように応答しました。`get_project_list` を呼び出してプロジェクト情報は取得できたものの、その後の処理でエラーが発生しました。

![Cursor のチャットで Backlog の Git リポジトリにプルリクエストを作成](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/b2aa66e6-c0b7-4e85-a81c-3e825430318b.png)

### プロジェクトの課題一覧を取得

Cursor のチャット画面で、以下のようなメッセージをポストします。

> APPプロジェクトの課題一覧を取得して。

すると、MCP サーバーは以下のように応答しました。

> Your conversation is too long. Please try creating a new conversation or shortening your messages.

![Cursor のチャットで Backlog の課題一覧を取得](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/53aede23-c600-4420-b661-2e28c50526bc.png)

[課題一覧の取得 API](https://developer.nulab.com/ja/docs/backlog/api/2/get-issue-list/) のレスポンスサイズが大きくなりすぎて、LLM のコンテキストサイズを超えてしまったようです。

## まとめ

Backlog MCP Server を使うと、Backlog とやり取りして課題を作成したり、課題を検索できます。Backlog API のレスポンスサイズが大きいため、MCP サーバーではうまく扱えない場面もありました。この辺りは Backlog API に軽量な API が用意されると解決しそうです。

Claude Desktop や Cursor エディタなど様々なアプリケーションから Backlog MCP Server を使って Backlog とやり取りできるようになり、LLM を使ったワークフローがより便利になると思います。