Backlog MCPサーバーの導入手順と権限設計|63ツールの絞り込みと削除系の封じ方【2026年版】

Backlog MCPサーバーの導入手順と権限設計|63ツールの絞り込みと削除系の封じ方【2026年版】

Backlog MCPサーバーは、BacklogのAPIをClaude CodeやCursorなどのAIクライアントから呼べるようにする、ヌーラボ公開のMCPサーバーです。課題の検索や起票、Wikiの参照、プルリクエストへのコメントまでAIに任せられます。この記事では、Claude Codeへの登録手順と .mcp.json の書き方、7つのツールセットと63のツールを絞り込む設定を確認します。後半は、ツールセットの切り替えだけでは止められない削除系ツールをClaude Codeの権限設定で封じる方法と、OAuth 2.0で動かす構成、社内展開の判断基準です。

まとめ:Backlog MCPで最初に決めるAPIキーの主体と有効にするツールセット

導入そのものは数分で終わります。APIキーを発行し、BACKLOG_DOMAIN と BACKLOG_API_KEY を渡して npx backlog-mcp-server を起動する設定を1つ足すだけです。

先に決めるべきは2点あります。1つ目は、誰のAPIキーで動かすか。APIキーには操作範囲を絞る設定が無く、発行したユーザーが画面でできる操作がそのままAIの操作範囲になります。2つ目は、どのツールを使わせるか。ENABLE_TOOLSETS で絞れるのは7つのツールセット単位で、課題を読むために issue を有効にすると delete_issue も一緒に読み込まれます。削除系はClaude Codeの permissions.deny で止める。この2段構えを最初の設定に含めてください。

Backlog MCPサーバーの提供元と63ツールを7つに分けたツールセット構成

MCPそのものの仕組みはMCPの仕組みとMCPサーバーの作り方で解説しています。ここではBacklog版の成り立ちとツールの中身を押さえます。

ヌーラボ公開のMIT版とサポート窓口の対象外になる運用上の意味

公式実装はnulab/backlog-mcp-serverで、TypeScript製のMITライセンスです。npmの登録情報では最初の版が2025年3月7日に出ており、2026年9月27日時点の最新は2026年9月7日公開の0.20.4です。動作要件はNode.js 22以上になります。

注意したいのはサポートの扱いです。Backlogヘルプセンターの案内は、MITライセンスで提供しており、ヌーラボのサポート窓口では公式サポートを提供していないと明記しています。不具合の報告先はGitHubのIssuesです。Backlog本体の契約サポートを前提に社内展開の稟議を書くと、ここで話が食い違います。

space・project・issueなど7ツールセットと主なツール名の対応

mainブランチの src/tools/tools.ts(2026年9月27日時点)を数えると、ツールは7つのツールセットに計63個登録されていました。

ツールセット ツール数 主な操作
space 6 スペース・ユーザー・自分の情報取得
project 5 プロジェクト一覧取得・追加・更新
issue 29 課題の一覧取得・起票・削除
wiki 5 Wikiの取得・追加・更新
git 10 プルリクエスト取得・コメント追加
document 4 文書ツリー取得・文書追加
notifications 4 通知取得・既読化

ツール名は操作と対象を並べた形で、get_issues、add_issue、get_wiki、add_pull_request_comment のように読めば中身が分かります。中心は issue です。29個のうち読み取りは14個で、残り15個が起票・更新・削除・ウォッチ操作などの書き込み系にあたります。複数スペースを設定したときだけ、組織一覧を返す list_organizations が追加されます。

0.18系から0.20系で消えた動的ツールセットとdelete_project

検索上位の記事では、ツール数が36や47と書かれていることがあります。これは執筆時点の版の違いで、直近1か月でも構成は動いています。リリース一覧から設定に影響する変更を拾うと次のとおりです。

  • 0.18.0(2026年8月12日):AIが必要なツールセットを後から有効化する動的ツールセットを廃止し、fields 指定を必須から外した
  • 0.19.0(2026年9月1日):課題の添付ファイルを取得する get_issue_attachment を追加
  • 0.20.1(2026年9月2日):PR #238でプロジェクト削除の delete_project を削除

古い記事にある動的ツールセットの設定は、今の版では効きません。設定例を写すときは、記事の公開日とリリース一覧を突き合わせてください。

Claude CodeにBacklog MCPをnpxとDockerで登録する設定手順

登録はAPIキーの発行、コマンドでの追加、チーム共有用の設定ファイル化の順に進めます。

個人設定のAPIから発行するAPIキーとBACKLOG_DOMAINの書式

APIキーはBacklogヘルプの「APIの設定」のとおり、個人設定のAPI画面で「登録」を押すと発行されます。入力できるのはメモ欄だけで、読み取り専用にする、特定プロジェクトに限る、といった項目はありません。

BACKLOG_DOMAIN には https:// を付けないホスト名を入れます。your-space.backlog.com か your-space.backlog.jp の形で、READMEの設定例もホスト名だけを書いています。ブラウザのアドレス欄からスペースURLを写したときは、先頭のスキームを消してから貼ってください。

claude mcp addでnpx版を登録するコマンドとWindowsの差分

Claude CodeのMCP接続ドキュメントの書式に沿うと、次の1行で登録できます。-- より前がClaude Code側のオプション、後ろがサーバーの起動コマンドです。

claude mcp add --transport stdio \
  --env BACKLOG_DOMAIN=your-space.backlog.com \
  --env BACKLOG_API_KEY=your-api-key \
  backlog -- npx -y backlog-mcp-server

Windowsのネイティブ環境では、同じドキュメントが npx を cmd /c 経由で起動するよう案内しています。末尾を -- cmd /c npx -y backlog-mcp-server に置き換えてください。登録後にClaude Codeで /mcp を開き、backlog がconnectedになっていれば完了です。「自分のBacklogユーザー情報を取得して」と頼んで get_myself が呼ばれれば、APIキーまで通っています。

.mcp.jsonでチーム共有しAPIキーを環境変数展開で外に出す設定

チームで同じ設定を使うなら、プロジェクトスコープの .mcp.json をリポジトリ直下に置きます。APIキーを直書きするとGitに残るため、${VAR} の環境変数展開で各自の値を読ませます。

{
  "mcpServers": {
    "backlog": {
      "command": "npx",
      "args": ["-y", "backlog-mcp-server"],
      "env": {
        "BACKLOG_DOMAIN": "your-space.backlog.com",
        "BACKLOG_API_KEY": "${BACKLOG_API_KEY}",
        "ENABLE_TOOLSETS": "space,project,issue,wiki",
        "MAX_TOKENS": "20000"
      }
    }
  }
}

各自はシェルの設定などで BACKLOG_API_KEY を定義しておくだけです。Dockerで動かす場合は、READMEの例どおり command を docker にし、run --pull always -i --rm -e BACKLOG_DOMAIN -e BACKLOG_API_KEY ghcr.io/nulab/backlog-mcp-server を引数に並べます。Node.jsの版を揃えにくい端末が混ざるチームではDocker版のほうが手戻りが少なく済みます。

ENABLE_TOOLSETSとMAX_TOKENSで応答量とツール数を絞る設定

63個のツール説明はすべてAIの文脈に載ります。使わないツールを外すと、選び間違いと文脈の消費が同時に減ります。

用途別に有効化するツールセットの組み合わせと読み込まれるツール数

ENABLE_TOOLSETS の既定値は all で、カンマ区切りで指定したツールセットだけが読み込まれます。READMEは、他のツールの入口になる project を有効にしておくよう勧めています。

  • 課題の確認と起票だけ:space,project,issue(40ツール)
  • 仕様をWikiから読んで実装する:space,project,issue,wiki(45ツール)
  • プルリクエストのレビュー補助:space,project,git(21ツール)

通知の既読化まで任せる用途はまれなので、notifications はまず外してかまいません。別のMCPサーバーと併用してツール名が重なるときは、PREFIX=backlog_ で backlog_get_issues のような名前に変えられます。GitHub MCPサーバーのtoolset設計と並べると、どちらも get_pull_request 系を持つため、両方入れる環境では付けておくと安全です。

OPTIMIZE_RESPONSEのfields指定と既定5万トークンの切り詰め

課題一覧は1件ごとに担当者・カスタム属性・添付情報まで返すため、応答が膨らみがちです。READMEによると MAX_TOKENS の既定は50,000で、超えた応答は切り詰められ、警告文が付きます。ソースの src/index.ts でも既定値は '50000' でした。

OPTIMIZE_RESPONSE=1 を足すと、各ツールに fields 引数が加わり、GraphQLのように必要な項目だけを返させられます。たとえば get_issues に id・issueKey・summary・status だけを指定すれば、一覧の把握には十分です。切り詰めで後半の課題が黙って欠けるより、項目を減らして全件を返させるほうが判断を誤りません。

ツールセット単位では防げない削除系をClaude Codeの権限で封じる設計

Backlog MCPサーバーには、ツールごとに読み取り専用かどうかを示す仕組みがありません。tools.ts にも該当する記述は無く、絞り込みはツールセットの有無だけです。削除を防ぐには、AIクライアント側で止めます。

issueツールセットに同居するdelete_issueと書き込み系の一覧

issue ツールセットには、課題の削除 delete_issue、マイルストーンの削除 delete_version、ウォッチの削除 delete_watching、関連付けの解除 remove_related_issue が入っています。課題を読ませたいだけでも、有効にした時点でこの4つもAIが呼べる状態です。

ここで1つ落とし穴があります。READMEのツール一覧ではマイルストーン削除が delete_version_milestone と書かれていますが、ソースの deleteVersion.ts が登録する名前は delete_version でした。README の名前で拒否ルールを書くと、何も止まりません。

settings.jsonのdenyで削除系を止めget系だけ自動許可する記述

Claude Codeの権限設定ドキュメントによると、denyとaskのルールはツール名の位置にglobを書けます。allowのglobを使える位置は、mcp__<サーバー名>__ の後ろだけです。.claude/settings.json に次のように書きます。

{
  "permissions": {
    "allow": ["mcp__backlog__get_*", "mcp__backlog__count_*"],
    "ask": ["mcp__backlog__add_*", "mcp__backlog__update_*"],
    "deny": ["mcp__backlog__delete_*", "mcp__backlog__remove_*"]
  }
}

読み取りは確認なしで通り、起票と更新は毎回確認が入り、削除系はAIの文脈から外れます。ドキュメントは、名前に _ を含むルールをタイプミス検出の警告対象外としています。前項のように実在しない名前を書いても警告は出ないため、個別名ではなく delete_* のglobで書くほうが確実です。PREFIX を付けた場合は mcp__backlog__backlog_delete_* になる点にも注意してください。

APIキーを発行するユーザーの権限がそのままAIの操作範囲になる前提

Backlog APIの認証ドキュメントでは、APIキーはクエリの apiKey かヘッダの Backlog-API-Key で渡し、操作の可否はユーザーの役割(管理者・一般ユーザー・ゲストなど)で決まります。スペース管理者のAPIキーを渡せば、AIもスペース管理者として動くわけです。

クライアント側のdenyは、設定を書き換えれば外れる安全策にすぎません。本当に守りたい線は、Backlog側で権限を絞ったユーザーのAPIキーを使うことで引きます。ツール単位の権限設計の考え方はMCPのtool定義と権限・認可の設計手順で一般化して整理しています。

プロジェクトを限定できるRust版BACKLOG_PROJECTSとの選び分け

ヌーラボの社員が個人開発したsafx/backlog-mcp-server-rustもあります。ヌーラボ公式ブログの紹介記事(2025年7月17日)によると、ドキュメントや共有ファイルの取得に早くから対応していた実装です。

権限設計の面で公式版に無いのは2つ。環境変数 BACKLOG_PROJECTS でアクセスできるプロジェクトキーを限定できることと、issue_writable などのCargoのfeatureを外してビルドすれば書き込み系をバイナリから除けることです。ただし既定のビルドでは書き込み系が有効で、公式版と同じく個人開発の扱いになります。1つのAPIキーで複数の顧客プロジェクトが見えてしまい、それをサーバー側で遮断したい場面に限って、Rust版を自分でビルドする価値があります。

APIキー共有を避けるOAuth 2.0のHTTPモードとレート制限の確認

個人のAPIキーを各自の端末に置く運用が許されない組織向けに、公式版はOAuth 2.0で動くHTTPモードを持っています。

HTTPトランスポートとOAuthアプリ登録で社内に1台立てる構成

READMEの手順は、Backlogの個人設定でアプリケーションを登録し、リダイレクトURIに <MCP_SERVER_BASE_URL>/callback を設定するところから始まります。得たクライアントIDとシークレットを渡し、HTTPで起動します。

BACKLOG_DOMAIN=your-space.backlog.com \
BACKLOG_OAUTH_CLIENT_ID=your-client-id \
BACKLOG_OAUTH_CLIENT_SECRET=your-client-secret \
MCP_SERVER_BASE_URL=https://mcp.example.com \
node build/index.js --transport http --http-host 0.0.0.0 --http-port 3333 \
  --http-allowed-hosts mcp.example.com

利用者は自分のBacklogアカウントで認可するので、APIキーを誰にも渡さずに済みます。サーバーは認可サーバーのメタデータと動的クライアント登録の /register を自動で公開します。

制約も押さえてください。READMEによると、OAuthモードは単一のスペースにしか対応せず、複数スペースの設定とは併用できません。クライアント登録とトークンはメモリに保持されるため、再起動のたびに全員が認可をやり直します。コンテナを頻繁に入れ替える基盤に載せると、利用者から見ると「急に接続が切れる」という状態です。なおBacklogのアクセストークンは、認証ドキュメントのとおり発行から3600秒で失効し、リフレッシュトークンで更新されます。

/api/v2/rateLimitで自分のスペースの上限を確かめる手順

AIは課題を1件ずつ読みに行くため、人の操作よりAPIの呼び出しが多くなります。Backlog APIのレート制限は1分あたりの上限で管理され、超えると429が返ります。上限値は固定で公開されておらず、レート制限情報の取得APIで自分のキーの値を確かめる方式です。

curl -s "https://your-space.backlog.com/api/v2/rateLimit" \
  -H "Backlog-API-Key: $BACKLOG_API_KEY"

応答は読み取り・更新・検索・アイコンの4区分に分かれ、ドキュメントの応答例では読み取りが毎分600回、更新が毎分150回です。同じAPIキーで社内の連携スクリプトも動いているなら、AIと枠を取り合います。MCP用のキーを別ユーザーで発行しておくと、429の原因を切り分けやすくなります。

Backlog MCPを社内展開してよい条件と見送るべき運用の線引き

設定の手順が短いぶん、統制の設計を飛ばして使い始めやすいツールです。条件を先に決めておきます。

個人のAPIキーで始めてよい開発チームと共有アカウント運用の禁止

採用してよいのは、開発者が自分のAPIキーで、自分が担当する課題を読み書きする使い方です。Backlog上の操作履歴は本人名義で残り、AIの操作も本人の操作として追えます。前章のdeny設定を .claude/settings.json としてリポジトリに入れておけば、チーム全員に同じ歯止めが掛かります。

見送るべきなのは、共有アカウントのAPIキーを配る運用です。誰のAIが課題を書き換えたのか、Backlogの履歴から区別できなくなります。退職者の端末にキーが残ったとき、共有キーは全員分を再発行しない限り止められません。人数が増えたら、キーの配布ではなく前述のOAuthモードへ移る判断になります。ツールの選び直しから検討するならプロジェクト管理ツールの選び方と既製か自作かの判断軸も参考になります。

顧客とのBacklogを扱う受託案件でMCPを見送る場面と代替策

顧客のスペースにゲストとして招かれている場合は、原則として接続しません。課題本文や添付ファイルがAIの文脈に流れ、利用しているAIサービスの規約に沿って外部へ送信されるためです。契約でAIへの入力を認める条項が無い限り、1つのAPIキーでも情報の持ち出しにあたります。

顧客の了承が取れた場合でも、読ませる範囲をプロジェクト単位で絞れない公式版より、権限を絞った専用ユーザーのキーを使う構成にしてください。課題管理とAIエージェントを業務フローに組み込む仕組みを、権限と監査の設計から作りたい場合は、生成AI開発・AI受託開発の範囲でご相談いただけます。

よくある質問

Backlog MCPの導入検討でよく出る疑問に、公式リポジトリとBacklog APIのドキュメントをもとに回答します。

Backlog MCPサーバーは無料で使えますか?

MCPサーバー自体はMITライセンスのOSSで、利用料はかかりません。必要なのはBacklogの契約と、APIを呼べるユーザーのAPIキーです。別途かかるのは、接続するAIクライアント側の利用料になります。ヌーラボのサポート窓口は対象外なので、不具合はGitHubのIssuesで報告し、業務で使うなら版を固定して更新前に動作を確かめる運用を組んでください。

Claude Desktopやclineでも同じ設定で動きますか?

動きます。mcpServers に command と env を書く形式は、Claude DesktopやCursor、clineなど標準入出力のMCPに対応したクライアントで共通です。違いは設定ファイルの置き場所と、権限の止め方です。この記事で紹介した permissions.deny はClaude Codeの機能なので、他のクライアントでは各製品のツール承認設定で削除系を止めるか、ENABLE_TOOLSETS で書き込みの多いツールセットを外してください。

Backlog MCPで課題を読み取り専用にできますか?

公式版の設定だけではできません。ENABLE_TOOLSETS はツールセット単位で、issue を有効にすると起票・更新・削除も入ります。Claude Codeなら add_*・update_*・delete_* をdenyに入れれば実質的に読み取り専用にすることが可能です。サーバー側で書き込みを除きたいなら、Rust版をfeatureを外してビルドする方法があります。

Backlog MCPでドキュメントや添付ファイルも読めますか?

公式版の0.20系では、document ツールセットでドキュメントの階層取得と本文取得ができます。課題の添付ファイルを取得するツールは、0.19.0で追加された get_issue_attachment です。Wikiの添付や共有ファイルまで読ませたい場合は、それらの取得に対応したRust版が選択肢になります。どちらも添付の中身がAIの文脈に入るため、機密資料を置いているプロジェクトは対象から外してください。

複数のBacklogスペースを1つの設定で扱えますか?

APIキー方式であれば、複数スペースを扱うことが可能です。BACKLOG_DEFAULT_ORG と、BACKLOG_ORG_<名前>_DOMAIN・BACKLOG_ORG_<名前>_API_KEY の組を並べると、各ツールに organization 引数が加わります。自社と顧客のスペースを両方登録すると、AIが取り違えて顧客側に起票する事故が起こりえます。受託の現場では、スペースごとにMCPの設定を分けてプロジェクト単位で切り替えるほうが安全です。

関連記事

お気に入りに入れた記事の一覧

資料請求

RELATED POSTS 関連記事

目次