Claude Code Sessions on Linear Tickets via MCP
An r/VibeCodeDevs post wired Claude Code to Linear via two MCPs. Add Scavio for out-of-repo grounding. Three named MCPs, clean tool surface.
An r/VibeCodeDevs post documented a workflow that captures where ticket-driven coding is heading: open a Linear ticket, start a Claude Code session, the agent reads ticket context via Linear's hosted MCP, navigates the local repo via Lanes' local MCP, writes the change, posts a comment back. Three named MCPs, each with a clear job, no overlap. This is what production-ready agent orchestration looks like in 2026.
Why two MCPs are better than one
Linear's official MCP at https://mcp.linear.app/mcp handles the cloud surface: tickets, projects, comments. OAuth on first call, no install. Lanes' local MCP at localhost:5353 handles the local surface: per-worktree git changes, terminal scrollback, sessions, start/stop hooks. Together they give the agent both ends of the dev workflow without overlap.
The third slot the OP didn't fill
Out-of-repo grounding. The agent often needs framework docs, recent GitHub issues for upstream libraries, or Stack Overflow threads to resolve a ticket. The OP's setup leaves Claude Code to approximate this via guessing or web-fetching randomly. Scavio MCP fills the slot cleanly.
claude mcp add linear https://mcp.linear.app/mcp
# OAuth opens browser on first call
claude mcp add lanes http://localhost:5353
# Lanes desktop app must be running
claude mcp add scavio https://mcp.scavio.dev/mcp \
--header 'x-api-key: $SCAVIO_API_KEY'The routing rules that prevent tool confusion
With three MCPs attached, the LLM needs explicit routing instructions or it will sometimes use the wrong tool. A line in the system prompt fixes this:
For ticket lookups, call linear. For local board state, scrollback, and per-worktree git, call lanes. For framework docs, GitHub issues, Stack Overflow, or any out-of-repo context, call scavio.
End-to-end session shape
- Open ticket:
linear.get_issue("ENG-1234")returns description + linked PRs + comments. - Navigate repo:
lanes.get_session()shows the relevant worktree state, recent file changes. - Out-of-repo grounding:
scavio.search("cursor library backward pagination 2026")returns Stack Overflow + GitHub issues. - Edit + commit: standard Claude Code edit + git commit flow.
- Close loop:
linear.add_comment("ENG-1234", "Fixed via PR #X. Backward pagination now supported via cursor reverse flag.").
Per-ticket cost
Linear MCP is free per their team plan. Lanes is free desktop or paid tiers depending on usage. Scavio: ~$0.05-0.20 per ticket session in API calls (5-30 search queries depending on complexity). Replaces a meaningful chunk of tab-switching time.
Why hosted MCP for Linear matters
OAuth token refresh, multi-team scope, no local install drift. Self-hosted Linear-MCP variants exist; they're fine for solo, brittle for teams. The official hosted MCP is the way to do this in 2026.
What this stack ISN'T
It isn't for solo devs working a single repo from a single ticket. The friction of three MCP installs only earns its keep when you bounce between tickets often, work multiple worktrees, or coordinate handoffs with teammates via Linear comments. Below that activity level, Linear MCP alone is fine.
The pattern, generalized
Linear → ticket surface. Lanes → local board state. Scavio → out-of-repo grounding. Same shape works with Jira (when its MCP matures) → custom local-board → Scavio, or with GitHub Issues → Lanes/Scavio variants. The structural insight is: three named MCPs covering ticket / local / web, each with a clean affordance, beats one mega-MCP trying to do all three.
Why this is a 2026 phenomenon, not a 2024 one
Two things shipped in 2025-2026 made this practical: hosted MCPs from major SaaS (Linear, similar to come) so agents don't need self-hosted gateways, and routing-aware agent runtimes that don't coin-flip when 3+ MCPs are attached. Both are now standard. The OP's workflow is early but generalizable.