streamlinear

A compact Linear MCP server that packs issue search, edits, comments and raw GraphQL into one tool

By Prime Radiant JavaScript Local · stdio Productivity

46 popularity score ★ 90 ↓ 594/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs LINEAR_API_TOKEN. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add streamlinear -e LINEAR_API_TOKEN=<LINEAR_API_TOKEN> -- npx -y @primeradianthq/streamlinear@1.2.1
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "streamlinear": {
      "command": "npx",
      "args": [
        "-y",
        "@primeradianthq/streamlinear@1.2.1"
      ],
      "env": {
        "LINEAR_API_TOKEN": "<LINEAR_API_TOKEN>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "streamlinear": {
      "command": "npx",
      "args": [
        "-y",
        "@primeradianthq/streamlinear@1.2.1"
      ],
      "env": {
        "LINEAR_API_TOKEN": "<LINEAR_API_TOKEN>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "streamlinear": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@primeradianthq/streamlinear@1.2.1"
      ],
      "env": {
        "LINEAR_API_TOKEN": "<LINEAR_API_TOKEN>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.streamlinear]
command = "npx"
args = ["-y", "@primeradianthq/streamlinear@1.2.1"]

[mcp_servers.streamlinear.env]
LINEAR_API_TOKEN = "<LINEAR_API_TOKEN>"
Gemini CLITerminal
gemini mcp add --scope user -e LINEAR_API_TOKEN=<LINEAR_API_TOKEN> streamlinear npx -- -y @primeradianthq/streamlinear@1.2.1

Settings 2

LINEAR_API_TOKEN secret Required: Linear personal API key (lin_api_...); the server exits at start without it. Use one entry per workspace for several workspaces.
STREAMLINEAR_POST_ONLY Optional: Set to 1 or true to refuse search, get and graphql, leaving create, update, comment and help.

What it does

streamlinear is a small local MCP server for Linear, made by Prime Radiant with Claude Code in mind. Rather than registering one tool per operation, it registers a single tool named `linear` that takes an `action` field: `search`, `get`, `update`, `comment`, `create`, `graphql` or `help`. Its makers put the cost of its tool definition at about 500 tokens, against roughly 17,000 for the standard Linear MCP.

The actions cover the everyday issue loop. A search with no arguments returns your own assigned issues that are not completed or canceled. A text query runs Linear's issue search. Fetching an issue accepts an identifier such as ABC-123, a linear.app URL or a UUID, and returns its fields with the five latest comments (fixed at `comments(first: 5)` in mcp/src/linear-core.ts). Updates change state, priority (0-4), assignee or labels, with state names matched loosely ("in prog" finds "In Progress"). New issues need a title and a team key.

Anything else goes through the `graphql` action, which passes any query or mutation you write straight to Linear's GraphQL API. At startup the server fetches your teams and workflow states and writes them into the tool description, so the assistant sees valid names without an extra call.

A mention like @sam in a comment or a new issue's description becomes a link to that person's Linear profile, but only when exactly one user matches by name or email prefix. The code looks among the first 250 users it fetches, so in a bigger workspace some people won't be found.

If the assistant should file and update issues without ever seeing their contents, set `STREAMLINEAR_POST_ONLY` to 1 or true. The three read actions then answer with a refusal, while the writing ones and help still work. Lookups of teams, states and users keep running behind the scenes.

What it needs

RuntimeNode.js 20+
Runs onmacOS, Windows, Linux
LinearA personal API key (lin_api_...) set as LINEAR_API_TOKEN

Create a personal API key in Linear's settings and pass it as `LINEAR_API_TOKEN`. The server exits at start without it. It must be able to reach api.linear.app. For several workspaces, add one client entry per workspace, each with its own key mapped to `LINEAR_API_TOKEN`.

Limits

  • Size cap Search and filtered listings return at most 20 issues per call, fixed in the code with no setting to raise it.
  • Size cap get shows only the five latest comments of an issue. Older ones need a graphql query.
  • Not covered The built-in actions cover issues only. Projects, cycles and other objects need the graphql action.
  • Size cap @name mentions are matched against the first 250 workspace users only.
  • Not covered One process serves one workspace (one token). Several workspaces need several client entries.
  • Limit With STREAMLINEAR_POST_ONLY set, search, get and graphql are refused.
  • Platform Runs over stdio only, with no HTTP transport.

The 20-issue and five-comment caps are written into mcp/src/linear-core.ts, so reaching past them means writing your own query through the graphql action. Post-only mode turns that action off as well.

Who it suits

Suits a developer who works in Linear from Claude Code or another stdio client and wants a small tool definition that leaves room in the context window, and who is comfortable with a personal API key on their machine. The `graphql` action gives full API reach for those who know Linear's schema. Someone who would rather not keep a key locally, or wants a vendor-maintained server, may prefer Linear's own hosted server at mcp.linear.app, which we also list; streamlinear is a third-party project, not published by Linear.

Tools 1

1 can delete or overwrite. A ? marks an optional parameter.

linear deletes
Searches, reads, updates, comments on or creates Linear issues, runs raw GraphQL, or shows help, picked by the action fieldaction: enumquery?: anyid?: stringstate?: stringpriority?: numberassignee?: stringlabels?: arraybody?: stringtitle?: stringteam?: stringgraphql?: stringvariables?: object

Similar servers