MCP Linear
Community MCP server for the Linear GraphQL API, covering issues, projects, releases, customers and webhooks
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
Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs LINEAR_API_TOKEN. Replace each <NAME> with your value.
claude mcp add streamlinear -e LINEAR_API_TOKEN=<LINEAR_API_TOKEN> -- npx -y @primeradianthq/streamlinear@1.2.1{
"mcpServers": {
"streamlinear": {
"command": "npx",
"args": [
"-y",
"@primeradianthq/streamlinear@1.2.1"
],
"env": {
"LINEAR_API_TOKEN": "<LINEAR_API_TOKEN>"
}
}
}
}{
"mcpServers": {
"streamlinear": {
"command": "npx",
"args": [
"-y",
"@primeradianthq/streamlinear@1.2.1"
],
"env": {
"LINEAR_API_TOKEN": "<LINEAR_API_TOKEN>"
}
}
}
}{
"servers": {
"streamlinear": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@primeradianthq/streamlinear@1.2.1"
],
"env": {
"LINEAR_API_TOKEN": "<LINEAR_API_TOKEN>"
}
}
}
}[mcp_servers.streamlinear]
command = "npx"
args = ["-y", "@primeradianthq/streamlinear@1.2.1"]
[mcp_servers.streamlinear.env]
LINEAR_API_TOKEN = "<LINEAR_API_TOKEN>"gemini mcp add --scope user -e LINEAR_API_TOKEN=<LINEAR_API_TOKEN> streamlinear npx -- -y @primeradianthq/streamlinear@1.2.1LINEAR_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. |
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.
| Runtime | Node.js 20+ |
|---|---|
| Runs on | macOS, Windows, Linux |
| Linear | A 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`.
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.
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.
1 can delete or overwrite. A ? marks an optional parameter.
linear deletesaction: enumquery?: anyid?: stringstate?: stringpriority?: numberassignee?: stringlabels?: arraybody?: stringtitle?: stringteam?: stringgraphql?: stringvariables?: object