Skip to content
ƒtsforgev0.58.0
38

Linear

3 min read

For teams that live in Linear, work starts as a card. tsforge can read those cards and start work on them directly — and because Linear’s own GitHub integration links the branch and moves the card as the PR opens and merges, the harness orchestrates nothing: it just reads the card and checks out the branch Linear already named.

Linear is a curated integration over MCP — see MCP servers for the shared model (capability = consent, curated verbs, opt-in).

Add a linear MCP server to tsforge.config.json. Linear’s server is remote, so bridge it to tsforge’s stdio transport with mcp-remote:

{
"mcpServers": {
"linear": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.linear.app/sse"]
}
}
}

The server must be keyed exactly linear. Once it connects, an interactive session prints ↳ linear: on. Force it off with TSFORGE_NO_LINEAR=1.

The agent has all of Linear’s MCP tools (mcp__linear__*): everything a person can do in Linear through its API.

  • Issues: save_issue creates an issue, or with an id updates any field: title, description, status, priority, assignee, labels, project, milestone, cycle, estimate, due date, parent, duplicate-of. Moving an issue to another project or team is an update.
  • Projects, milestones, labels, documents, status updates: save_project, save_milestone, save_issue_label, save_document and save_status_update create and update them, and list_* / get_* find them.
  • What Linear itself doesn’t offer: there is no tool to delete an issue (cancel it, or mark it a duplicate of the original). Initiatives appear only if your Linear plan includes them.

On top of that, three shortcuts:

  • linear_read (read-only): issue (one card by identifier like ENG-123 — title, state, description, the branch name Linear generated, and links), search, mine (your assigned issues), and comments.
  • linear_write: quick create (a title and the team to file it under, by key like ENG, name or id; returns its identifier and branch name) and comment (on a card by its identifier).
  • linear_start: the one-step start — read a card by id and check out the git branch Linear made for it (creating it if needed). Edit as usual, then open a PR referencing the issue (e.g. Fixes ENG-123); Linear links the branch and transitions the card for you.

create and comment describe the intent and the outcome for a human teammate — not code mechanics, line counts, or line numbers (the code is the agent’s job). A soft check nudges the model off diff-speak, with an exception for a task that really is about a specific code detail.

Reads (the shortcuts and every get_/list_/search tool) are available in every mode, including plan mode. Writes (every other Linear tool, and linear_start’s checkout) follow capability-as-consent: allowed interactively, denied while planning or running unattended. See Permissions & policy.

VariableDefaultEffect
TSFORGE_NO_LINEARoffwithhold the Linear tools even when the server is connected (=1)
TSFORGE_LINEAR_RAWon=0 hides the full mcp__linear__* toolset, leaving only the shortcuts

→ MCP servers · Git & GitHub · Environment variables