Streamlinear banner
obra obra

Streamlinear

Development community

Description

Streamlined Linear integration for Claude Code - one tool, six actions, zero bloat

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

streamlinear

A lightweight Linear MCP for Claude Code. One tool, seven actions.

Why?

The standard Linear MCP uses ~17,000 tokens for tool definitions.

streamlinear uses ~500 tokens.

Design Philosophy

Instead of 23 separate tools, streamlinear has **one tool with action dispatch**:

{"action": "search"}
{"action": "get", "id": "ABC-123"}
{"action": "update", "id": "ABC-123", "state": "Done"}
{"action": "comment", "id": "ABC-123", "body": "Fixed!"}
{"action": "create", "title": "New bug", "team": "ENG"}
{"action": "graphql", "graphql": "query { viewer { name } }"}
{"action": "help"}

Actions

Action Purpose
search Find issues (smart defaults: your active issues)
get Issue details by ABC-123, URL, or UUID
update Change state, priority, assignee
comment Add comment to issue
create Create new issue
graphql Raw GraphQL for anything else
help Full documentation

Installation

Single Workspace

Add to your `.mcp.json`:

{
  "mcpServers": {
    "linear": {
      "command": "npx",
      "args": ["-y", "github:obra/streamlinear"],
      "env": {
        "LINEAR_API_TOKEN": "lin_api_xxxxx"
      }
    }
  }
}

Multiple Workspaces

To use streamlinear with multiple Linear workspaces (e.g., personal and work), create separate MCP entries and use variable substitution in the `env` field:

{
  "mcpServers": {
    "linear-personal": {
      "command": "npx",
      "args": ["-y", "github:obra/streamlinear"],
      "env": {
        "LINEAR_API_TOKEN": "${LINEAR_PERSONAL_TOKEN}"
      },
      "envFrom": ["LINEAR_PERSONAL_TOKEN"]
    },
    "linear-work": {
      "command": "npx",
      "args": ["-y", "github:obra/streamlinear"],
      "env": {
        "LINEAR_API_TOKEN": "${LINEAR_WORK_TOKEN}"
      },
      "envFrom": ["LINEAR_WORK_TOKEN"]
    }
  }
}

**How this works:**

  • envFrom loads your secrets/env vars (e.g., LINEAR_WORK_TOKEN)