Contents

  1. Why Backlog MCP — the Japan market context
  2. Reading the KanseiLink measured data
  3. Choosing between the two auth methods
  4. Pitfall 1: the x-www-form-urlencoded wall
  5. Pitfall 2: pagination without total count
  6. Pitfall 3: you must ask for the space name
  7. March 2026 new feature: bulk update tool
  8. Agent implementation recipes
  9. FAQ

Why Backlog MCP — the Japan market context

Backlog is a project and issue management SaaS by Nulab, widely used by Japanese engineering teams for over a decade. As of 2026, while Jira and Linear dominate the English-speaking world, Backlog retains domestic share thanks to a Japanese-optimized issue management UX, integrated Gantt charts and Wiki, and a low adoption barrier suited to mid-market organizations.

Backlog's release of an official Model Context Protocol server under MIT license in 2026 is a symbolic moment for Japanese SaaS in the agent era. The official repository github.com/nulab/backlog-mcp-server was last updated on April 17, 2026, and exposes 42+ tools across 7 functional toolsets that MCP clients like Claude Desktop, Cline, and Cursor can drive.

Why this matters

An MCP server that is simultaneously official, MIT-licensed, and feature-complete (42+ tools) is still rare among Japanese SaaS in 2026. Backlog clears all three bars at once — a meaningful advantage for buyers and developers building agentic workflows.

Reading the KanseiLink measured data

KanseiLink aggregates agent self-reported data across 225+ services. The Backlog MCP get_insights snapshot (April 2026) is below.

Backlog MCP Key Metrics (KanseiLink, April 2026)

90%
Success rate
(n=91)
128ms
Avg latency
AAA
AEO grade
(trust 0.9)
9
Total errors
(api 6 / search_miss 2 / auth 1)

The standout figure is 128ms average latency — faster than freee MCP (216ms), Slack MCP (163ms), and Notion MCP (216ms) in the KanseiLink dataset. Zero timeout errors are recorded, which makes Backlog a strong fit for long-running agent loops.

The most common error is api_error (6 cases) — transient 5xx/4xx that retries can handle. Next is search_miss (2 cases), all resolved with the verified workaround "use category filters or Japanese keywords." A single auth_error was fixed by regenerating the API key from the Backlog admin panel and retrying.

Metric Value What it means
Reports91Statistically meaningful sample
Success rate90%AAA-tier among major MCPs
Avg latency128msAmong the fastest major MCPs
Timeout errors0Low giveup-trigger risk in long tasks
auth_error workaroundEstablished"Regenerate the API key" recovers
search_miss workaroundEstablished (verified)"Category filter or Japanese keywords"

Choosing between the two auth methods

Backlog supports two authentication methods. The choice is the first design fork in any agent integration.

Method A: API key (?apiKey= query parameter)

Generate a key under Personal Settings → API and append ?apiKey={key} to every request URL. No headers, no OAuth refresh flow, minimal dependencies. For solo developers, internal agents, and single-user setups this is the simplest path.

GET /api/v2/issues?projectId[]=1&statusId[]=1&apiKey=YOUR_KEY HTTP/1.1
Host: myspace.backlog.com

Method B: OAuth 2.0

Register an app at developer.nulab.com, run the Authorization Code Flow, and send the bearer token in the Authorization header. Required for multi-tenant SaaS where each user authenticates with their own Backlog account, and for any operation that demands scheduled token rotation.

⚠️ Pitfall: API key in the URL has side effects

Because the API key is sent as a query parameter, it can leak into server logs, proxy logs, and browser history. In agent code, always mask the apiKey value in URL log output. HTTPS is assumed, but plaintext logs at internal reverse proxies are a real risk.

Pitfall 1: the x-www-form-urlencoded wall

The Backlog REST API requires POST/PATCH bodies in application/x-www-form-urlencoded, not application/json. This is unusual for a modern 2026 API and clashes with the fetch(url, {body: JSON.stringify(...)}) pattern that agents tend to generate by default.

# ❌ Bad: JSON body returns 400
POST /api/v2/issues?apiKey=KEY HTTP/1.1
Content-Type: application/json
{"projectId": 1, "summary": "Bug fix", "issueTypeId": 1, "priorityId": 3}

# ✅ Good: x-www-form-urlencoded
POST /api/v2/issues?apiKey=KEY HTTP/1.1
Content-Type: application/x-www-form-urlencoded
projectId=1&summary=Bug%20fix&issueTypeId=1&priorityId=3

Array parameters use bracket notation: projectId[]=1&projectId[]=2. The Nulab official backlog-mcp-server handles encoding internally; only roll your own when you write fetch directly or implement in another language.

✅ Best practice

Use the official Nulab backlog-mcp-server. Run npx @nulab/backlog-mcp-server and add it to your Claude Desktop / Cline / Cursor mcpServers config. The urlencoded problem is absorbed inside the server.

Pitfall 2: pagination without total count

Backlog uses offset + count (max 100) pagination, but responses do not include a total_count. The only way for an agent to know "how many more remain" is to loop until an empty array is returned.

For long-running projects with thousands or tens of thousands of issues, full retrieval needs roughly 100 calls (offset=0,100,200,...). At 128ms per call, that's ~12.8 seconds — close to common agent timeout thresholds. Always combine filters (projectId, statusId, updatedSince) to narrow the working set.

Pitfall 3: you must ask for the space name

Backlog is multi-tenant: the base URL takes the form https://{space}.backlog.com/api/v2/. Agents must explicitly ask the user for the Backlog space name before any call. Guessing risks connecting to a different company's Backlog space.

# Claude Desktop config example
{
  "mcpServers": {
    "backlog": {
      "command": "npx",
      "args": ["-y", "@nulab/backlog-mcp-server"],
      "env": {
        "BACKLOG_BASE_URL": "https://myspace.backlog.com",
        "BACKLOG_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

March 2026 new feature: bulk update tool

On March 25, 2026, Nulab added a bulk issue update tool to backlog-mcp-server. Previously each issue required a separate PATCH /issues/{key} call; the new tool updates status, assignee, and due date across many issues in one operation.

Typical workflows enabled:

Fewer agent calls means lower token usage and shorter end-to-end latency — three benefits compounding. With 128ms average latency, this enables near-real-time automation of routine project-management ops.

On March 8, 2026, Nulab also shipped a Wiki markdown table rendering fix, raising the reliability of Wiki tools. Backlog appears to be actively maintaining its MCP server.

Agent implementation recipes

Five practical recipes distilled from KanseiLink data and the official documentation.

Need internal evidence for Backlog MCP's AEO score?

KanseiLink delivers measured success rate, latency, error type breakdown, and known workarounds for 225+ SaaS — including Backlog — directly via MCP. Built for both agent developers and SaaS vendors.

Talk to KanseiLink Research

FAQ

Should I use API key or OAuth for Backlog MCP?

For solo developers and single-user internal agents, the API key method is simplest: generate a key from Backlog Personal Settings and append ?apiKey={key} to every request URL. For multi-tenant SaaS where users authenticate with their own Backlog account, or when token rotation is required, OAuth 2.0 (registered at developer.nulab.com) is mandatory.

I keep getting 400 errors. What's wrong?

The most common cause is sending POST/PATCH bodies as application/json. The Backlog REST API requires application/x-www-form-urlencoded. Array parameters use bracket notation: projectId[]=1&projectId[]=2. The Nulab official MCP server handles this internally.

Backlog MCP is rated AAA — what's the basis?

(1) Official Nulab MCP server under MIT license, (2) 91 measured reports with 90% success, (3) 128ms average latency, (4) zero timeout errors, (5) auth_error has an established API-key-regeneration workaround, (6) 42+ tools across 7 functional areas (issues, wiki, git, PR, files, etc.).

What is the bulk update tool added on March 25, 2026?

A bulk issue update tool added to Nulab's official backlog-mcp-server. It updates status, assignee, due date, etc. across many issues in one call. Useful for sprint-end closure, assignee handover, and batch tagging. With 128ms latency, near-real-time automation becomes practical.

Does the Backlog API have published rate limits?

Backlog documentation states "varies by plan; no strict rate limit for API key access, but heavy use may be throttled." When making large volumes of calls in a short window, implement exponential backoff and slow down on 429 responses.

Data Disclosure & Disclaimer

Numbers in this article are based on KanseiLink MCP get_insights data as of April 2026: Backlog MCP (n=91, success_rate 0.90, avg_latency 128ms, trust_score 0.9, AAA grade). Error breakdown: api_error 6, search_miss 2 (workaround verified), auth_error 1 (workaround unverified). Backlog API specifics (auth methods, x-www-form-urlencoded requirement, pagination, rate limits) reference developer.nulab.com documentation as of April 2026, and the Nulab official repository github.com/nulab/backlog-mcp-server (last updated 2026-04-17). The bulk update tool (2026-03-25) and Wiki markdown fix (2026-03-08) are based on KanseiLink internal change-log entries. Specifications may change without notice; verify against the latest official documentation before production use.