Backlog MCP は、Nulab が公式に提供する Backlog 用のMCPサーバーです。AIクライアントから課題(Issue)の検索・作成・更新、Wiki の読み書き、Git のプルリクエスト操作などができます。本記事では v0.18.0 を実際に起動し、62ツール・11,710トークンという常駐コストと、ENABLE_TOOLSETS でそれを半減できることを実測しました。あわせて、認証情報なしでは起動すら拒否するという設計を、同じ方法で測った他の2サーバーと比較します。

Backlog MCPのツールセット別トークン数を比較した図。既定の全有効は62ツール11,710トークン、issueのみ27ツール6,301トークン、gitのみ10ツール2,209トークン、spaceのみ6ツール873トークンであることを示す。
ENABLE_TOOLSETS の実測。必要なツールセットだけ有効にすると常駐コストが大きく下がる。

30秒でわかる Backlog MCP

Nulab公式nulab/backlog-mcp-server・MIT・TypeScript)。日本語READMEあり。v0.18.0 は 2026-08-12
実測 62ツール・42,447バイト・11,710トークン。1ツールあたり189トークンで、測った3サーバー中もっとも効率的
ENABLE_TOOLSETS=issue で 6,301トークン(46%減)space だけなら873トークン
認証情報なしでは起動しない(終了コード1)。Notion・Blender は起動してツール一覧まで返したので設計方針が違う
ENABLE_DYNAMIC_TOOLSETS は削除済み。指定しても警告が出るだけで効果なし

MCPサーバーの仕組み自体はMCPサーバーの作り方2026年完全ガイド:TypeScript・Python両対応チュートリアルにまとめてあります。本記事は既製サーバーを繋いで測る側の話です。

Backlog MCPとは——Nulab公式のプロジェクト管理MCP連携

Backlog は Nulab が提供する国産のプロジェクト管理サービスです。Backlog MCP Server はその公式MCPサーバーで、AIエージェントから Backlog のデータを読み書きできるようにします。

項目 実測値(2026-08-27)
リポジトリ nulab/backlog-mcp-server公式org配下
star / fork 227 / 66
ライセンス MIT
実装言語 TypeScript
最新リリース v0.18.0(2026-08-12)
最終push 2026-08-24
オープンIssue 21件
公開開始 2025-04-16
npm backlog-mcp-servernode_modules 実測 25MB)

Backlog は国内のSIer・受託開発・社内情報システム部門で広く使われているため、「AIエージェントに社内の課題管理を触らせる」という用途が現実的に成立する数少ないSaaSのひとつです。課題の一覧取得や起票をAIに任せられると、進捗まとめや起票の下書きといった定型作業がそのまま削れます。

star 227 という数字を過小評価しないでください。 対象ユーザーが Backlog 利用者に限られるため絶対数は伸びませんが、リリース間隔(v0.16.0 → v0.18.0 が2日間)と最終pushの新しさは、活発にメンテナンスされていることを示しています。日本語READMEが用意されている点も、国内利用を前提にした運用の表れです。

READMEが挙げる機能は、プロジェクト・課題・課題コメント・バージョン/マイルストーン・Wiki・Gitリポジトリ/プルリクエスト・通知の各操作に加えて、「Field selection for optimized responses」「Token limiting for large responses」です。レスポンス側のトークン最適化を明示的に機能として掲げているMCPサーバーは多くないので、この点は後段で確かめます。

Backlog MCP のインストールと接続手順

READMEが推奨するのは Docker です。npm パッケージも公開されているので、Node で直接動かすこともできます。

Docker で動かす場合

READMEが最初に案内するのは Docker です。MCPクライアントの設定に docker run を直接書く形になります。ローカルに Node 環境を用意せずに済み、バージョンをイメージタグで固定できるのが利点です。一方で、コンテナ起動のオーバーヘッドが毎回かかる点と、環境変数の受け渡しが1段増える点はトレードオフになります。Node が既に入っているなら、次に示す npm 経由のほうが取り回しは楽です。

必要なもの

・Backlog アカウントと、API が有効なスペース
・Backlog の個人設定から発行する APIキー
・スペースのドメイン(example.backlog.jpexample.backlog.com

npm で動かす場合

npm install [email protected]
BACKLOG_DOMAIN="example.backlog.jp" \
BACKLOG_API_KEY="your-api-key" \
  node node_modules/backlog-mcp-server/build/index.js

Claude Code への登録は次のとおりです。

claude mcp add backlog \
  --env BACKLOG_DOMAIN=example.backlog.jp \
  --env BACKLOG_API_KEY=your-api-key \
  -- node /path/to/node_modules/backlog-mcp-server/build/index.js

複数スペースを使う場合

エラーメッセージから、複数組織の設定形式が読み取れます。

Configure either BACKLOG_ORG_<NAME>_DOMAIN and BACKLOG_ORG_<NAME>_API_KEY
with BACKLOG_DEFAULT_ORG, or both BACKLOG_DOMAIN and BACKLOG_API_KEY.

組織ごとに BACKLOG_ORG_<NAME>_DOMAIN / BACKLOG_ORG_<NAME>_API_KEY を定義し、BACKLOG_DEFAULT_ORG で既定を選ぶ形です。単一スペースなら BACKLOG_DOMAINBACKLOG_API_KEY の2つで足ります。複数スペースの切り替え動作そのものは、本記事では未検証です(ダミー認証情報での起動確認までしか行っていません)。

なお README を読むと、この MCP サーバーは OAuth にも対応しています。/.well-known/oauth-authorization-server(RFC 8414)、/.well-known/oauth-protected-resource/mcp(RFC 9728)、POST /register(RFC 7591 動的クライアント登録)を実装し、登録できるリダイレクトURIを制限する記述もあります。ループバックURI(http://localhost 等)は application_type: native を宣言したクライアント、あるいは全リダイレクトURIがループバックであるクライアントからのみ受け付ける、という設計です。★227規模のサーバーとしては丁寧な実装です。OAuthモードの実動作は未検証です。

【実測】認証情報なしでは起動しない——3サーバーで挙動が割れた

MCPサーバーが認証情報なしでどう振る舞うかを、同じ手順(stdio で initializetools/list)で3つ測りました。

Backlog MCP を環境変数なしで起動すると、MCPのハンドシェイクに到達する前にプロセスが落ちます

{"level":50,"err":{"type":"Error","message":"Configure either
BACKLOG_ORG_<NAME>_DOMAIN and BACKLOG_ORG_<NAME>_API_KEY with
BACKLOG_DEFAULT_ORG, or both BACKLOG_DOMAIN and BACKLOG_API_KEY."}}

終了コードは 1initialize すら成功しません。

一方、同じ検証をした他の2サーバーはどちらも起動しました。

サーバー 認証情報なしで initialize 認証情報なしで tools/list 実際の呼び出し
Backlog MCP 失敗(exit 1) 到達不能
Notion MCP(ローカル版) 成功 成功・24ツール全部 401
Blender MCP 成功 成功・25ツール全部 接続エラー

3つの分岐を1本の流れにすると、止まる位置の違いが見えます。

sequenceDiagram participant C as "MCPクライアント" participant B as "Backlog MCP" participant O as "Notion / Blender MCP" C->>B: "プロセス起動(認証情報なし)" B--xC: "exit 1・initialize に到達しない" Note over C,B: "起動時点で fail-closed" C->>O: "プロセス起動(認証情報なし)" O-->>C: "initialize 成功" C->>O: "tools/list" O-->>C: "成功・全ツールを返す" Note over C,O: "ここは fail-open。トークンは消費される" C->>O: "tools/call" O--xC: "401 / 接続エラー" Note over C,O: "実行段で初めて fail-closed"

Backlog MCP だけが起動時点で fail-closed です。他の2つは「一覧は fail-open、実行は fail-closed」でした。

どちらが優れているという単純な話ではありません。fail-open 側には「クライアントの設定画面でツールが見えるので接続確認しやすい」という利点があり、fail-closed 側には「設定ミスが即座に分かる」「認証されていないのにトークンだけ消費する状態にならない」という利点があります。ただし運用の事故を減らすという観点では、起動時に落ちるほうが安全側です。Notion MCP と Blender MCP では、トークンを渡し忘れていてもツール一覧は正常に見えるため、実際に呼ぶまで壊れていることに気づけません。

Notion 側の詳しい挙動はNotion MCPとは|ホスト版とローカル版の違いを24ツール・21,831トークン実測で解説に、Blender 側はBlender MCPとは|25ツール6,480トークンとテレメトリ既定ONを実測で確かめるにまとめています。

【実測】62ツールで11,710トークン——3サーバー比較で見える設計差

ダミーの認証情報(example.backlog.jp / dummy)を渡すと起動し、tools/list が取れました。APIキーの正当性は起動時には検証されないため、ツール定義の計測はこれで可能です。

項目 実測値
ツール数 62
バイト数 42,447
トークン数 11,710
説明文のバイト数 2,216

同じ方法で測った3サーバーを並べると、設計の差がはっきりします。

サーバー ツール数 トークン 1ツールあたり
Notion MCP(ローカル版 v2.5.1) 24 21,831 910
Blender MCP(v1.8.7) 25 6,480 259
Backlog MCP(v0.18.0) 62 11,710 189

Backlog MCP は最もツール数が多いのに、1ツールあたりのコストが最も小さいという結果でした。Notion MCP の2.6倍のツールを持ちながら、総トークンは約半分です。

理由は引数設計にあります。Backlog MCP の最軽量ツールは 50〜52トークンしかありません。

ツール トークン
get_issues(最重) 1,167
count_issues 1,018
update_issue 734
get_priorities(最軽) 50
get_resolutions 51
get_myself 52

get_prioritiesget_resolutions引数を取らないので、名前と短い説明だけで済みます。対して get_issues は24個のフィルタ引数(projectId / statusId / assigneeId / createdSince / dueDateUntil など)を持つため1,167トークンかかります。

Notion MCP のローカル版は、最軽量のツールでも749トークンでした。 OpenAPI 定義から機械生成しているため、どのツールにも共通の巨大なスキーマがぶら下がるからです。Backlog MCP は手書きで、必要な引数だけを定義しています。MCPサーバーのコストはツール数ではなく引数設計で決まるという結論が、3サーバーの実測で再現しました。

【実測】ENABLE_TOOLSETS でトークンを半減させる

Backlog MCP には、実測した3サーバーの中で唯一、ツールセット単位で機能を絞る仕組みがあります。ENABLE_TOOLSETS 環境変数(または --enable-toolsets フラグ)です。

利用できるツールセットは7つです。

ツールセット 内容
space スペース設定・全体情報
project プロジェクト・カテゴリ・カスタムフィールド・課題種別
issue 課題とコメント・バージョン/マイルストーン
wiki Wikiページ
git Gitリポジトリ・プルリクエスト
notifications 通知
document ドキュメント・ドキュメントツリー

実際に指定して測りました。

設定 ツール数 バイト数 トークン 既定比
既定(全部) 62 42,447 11,710
ENABLE_TOOLSETS=issue 27 22,656 6,301 -46%
ENABLE_TOOLSETS=issue,project 33 26,171 7,209 -38%
ENABLE_TOOLSETS=git 10 8,127 2,209 -81%
ENABLE_TOOLSETS=space 6 2,805 873 -93%

課題管理だけに使うなら issue で十分で、それだけで46%減ります。 Git 連携を別のMCPサーバーに任せているなら、git を外すだけでも効きます。

BACKLOG_DOMAIN="example.backlog.jp" \
BACKLOG_API_KEY="your-api-key" \
ENABLE_TOOLSETS="issue,wiki" \
  node node_modules/backlog-mcp-server/build/index.js

効かない環境変数に注意

ENABLE_DYNAMIC_TOOLSETS という似た名前の環境変数がありますが、これは既に削除されています。指定して起動しても、ツール数は62のまま変わりませんでした(1 でも true でも同じ)。

実装を確認すると、この変数はもう警告を出すためだけに残っています。

Dynamic toolsets have been removed, and --dynamic-toolsets /
ENABLE_DYNAMIC_TOOLSETS no longer do anything. Every toolset is enabled
unless you narrow it with --enable-toolsets or ENABLE_TOOLSETS.

この警告は stderr にしか出ないため、MCPクライアント経由だと目に触れないことがあります。古い記事や設定例をコピーして ENABLE_DYNAMIC_TOOLSETS を書いていると、削減しているつもりで全ツールが載ったままになります。正しい変数名は ENABLE_TOOLSETS です。

Notion MCP・Blender MCP・Backlog MCPの3サーバーを比較した図。1ツールあたりのトークン数はNotion 910、Blender 259、Backlog 189で、Backlogが最もツール数が多いのに最も効率的であることを示す。
3サーバーの実測比較。ツール数の多さとコストは比例しない。

レスポンス側の最適化と、実務上の注意点

READMEが掲げる「Field selection」「Token limiting」は、ツール定義ではなくレスポンスに効く機能です。実装には --optimize-response--max-tokens に対応するコードがあり、大きなレスポンスを切り詰められる構成になっています。これらのフラグの実効果は、実データを返す必要があるため本記事では未検証です(有効なAPIキーとスペースが要ります)。

ツール一覧を眺めていて気づいた点を2つ挙げます。

命名が1か所だけ揺れています。 62ツール中61個が get_issue / add_wiki のようなスネークケースなのに対し、addDocument だけがキャメルケースです。動作に影響はありませんが、ツール名をハードコードするときは取り違えやすいので注意してください。

62ツールという数はAIの選択精度にも効きます。 トークンコストとは別の話として、似た名前のツールが並ぶとAIがどれを呼ぶべきか迷いやすくなります。Backlog MCP には get_issue(単一取得)・get_issues(一覧)・count_issues(件数)が並んでおり、「課題がいくつあるか」を聞かれたときに一覧を全件取ってから数える、といった非効率な経路を選ぶ余地があります。ENABLE_TOOLSETS で絞る動機は、コスト削減だけでなくAIの迷いを減らすことにもあります。

書き込み系ツールが既定で全部有効です。 delete_project / delete_issue / delete_version / update_issue といった破壊的な操作が、既定のツールセットに含まれます。MCPには「読み取り専用モード」の標準的な仕組みがないため、AIに書き込みをさせたくない場合はツールセットを絞るだけでは不十分です。issue ツールセットには delete_issue も含まれます。読み取り専用で使いたいなら、APIキー側の権限を絞るのが確実です。Backlog のAPIキーには権限設定があるので、そちらで制御してください。

APIキーはMCPクライアントの設定ファイルに平文で載ります。 claude mcp add --env BACKLOG_API_KEY=... のような登録方法を取ると、キーが設定ファイルに残ります。Backlog のAPIキーはスペース全体に対する権限を持つため、リポジトリにコミットされる場所へ設定を置かないでください。チームで設定を共有する場合は、キーだけを各自の環境変数から読ませる形にするのが安全です。

バージョン固定を検討する価値があります。 v0.16.0 から v0.18.0 まで2日間でリリースされている速度感で、ENABLE_DYNAMIC_TOOLSETS のように機能が削除される変更も実際に起きています。業務のワークフローに組み込むなら、[email protected] のように版を固定し、更新はリリースノートを見てから行うほうが安定します。

もう1点、運用上の判断材料として。MCPサーバーを繋ぐ数だけ固定費が積み上がります。 本記事で測った3つを全部繋ぐと、それだけで 21,831 + 6,480 + 11,710 = 約40,000トークンが毎セッション消費されます。ENABLE_TOOLSETS のような絞り込み機構を持つサーバーは、この観点で明確に有利です。

どんなチームに向くか

向くのは、Backlog を既に日常的に使っていて、進捗確認や起票の手数を減らしたいチームです。「先週更新された課題を要約して」「このバグを起票して、担当を私にして」といった指示が自然言語で通るようになります。62ツールが Backlog API のほぼ全域をカバーしているので、機能不足で困る場面は少ないはずです。

慎重になるべきなのは、AIに書き込み権限を渡すことへの合意が取れていないチームです。前述のとおり削除系ツールが既定で有効で、MCP側に読み取り専用モードがありません。まずはAPIキーの権限を読み取りのみに絞って導入し、運用が固まってから書き込みを開放する順序が無難です。

まとめ

・Backlog MCP は Nulab公式(MIT・TypeScript・日本語READMEあり)。v0.18.0・最終push 2026-08-24 と活発
実測 62ツール・42,447バイト・11,710トークン。1ツールあたり189トークンで、測った3サーバー中もっとも効率的
ENABLE_TOOLSETS=issue で6,301トークン(-46%)space のみなら873トークン(-93%)
ENABLE_DYNAMIC_TOOLSETS は削除済み。stderr に警告が出るだけで効果はなく、削減したつもりの設定ミスになりやすい
認証情報なしでは起動しない(exit 1)。Notion・Blender は起動して全ツールを一覧できたので、設計方針が明確に違う
削除系ツールが既定で有効。読み取り専用にしたいならAPIキー側の権限で絞る

MCP 連携のコストは「どのサーバーを繋ぐか」だけでなく「どこまで絞れるか」で決まります。tools/list を1回取って数える——それだけで、自分の設定が実際に何トークン積んでいるかは確認できます。

参照ソース