惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
腾讯CDC
博客园 - 司徒正美
A
About on SuperTechFans
H
Help Net Security
J
Java Code Geeks
C
Check Point Blog
B
Blog RSS Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
MongoDB | Blog
MongoDB | Blog
U
Unit 42
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
MyScale Blog
MyScale Blog
V
Visual Studio Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
H
Hackread – Cybersecurity News, Data Breaches, AI and More
F
Fortinet All Blogs
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
GbyAI
GbyAI
博客园 - 【当耐特】
雷峰网
雷峰网

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
From Linear to Lanes: A Two-MCP Workflow
s-xyz · 2026-04-30 · via Hacker News: Show HN

In this tutorial we'll walk through how to use the official Linear MCP and the local Lanes MCP together, so that an agent can pull issues out of Linear and spin up a session on them directly. The interesting part is that last word: directly. Once a Linear ticket lands on your Lanes board, starting a Claude Code, Codex, or shell session against it is one prompt away in the same chat. No copy-paste, no window swap, no second tool to learn.

The mechanic is simple. An agent that has both MCP servers connected can read your Linear backlog, drop selected tickets onto your local Lanes board, kick off a session in a fresh git worktree, and then sync the outcome back to Linear when it's done. We'll walk through each of those pieces in turn.

A short walkthrough of the flow described below: pulling a Linear ticket into Lanes and kicking off a session on it from a single chat.

The two servers

It's worth a quick word on what each server actually is before we wire them up.

Linear MCP is hosted remotely by Linear at https://mcp.linear.app/mcp. You connect to it over OAuth and there's nothing to install locally. It exposes Linear's full read and write surface: tickets, projects, comments, labels, cycles, and so on.

Lanes MCP is the opposite shape. It runs locally, on http://localhost:5353/sse, served by the Lanes desktop app once you flip the toggle in Settings. It exposes everything inside your local Lanes workspace: issues, sessions, terminal scrollback, session history, git changes per issue, and the controls to start or stop a session.

The trick is that an agent connected to both has them sitting in the same context at the same time. There is no glue code between them, and no integration layer to maintain. The connective tissue is just whatever prompt you type next.

Setup

Adding Linear's server to Claude Code is one command:

Then run /mcp inside a session to complete the OAuth handshake in your browser. Once that's done, the Linear tools are available to the agent alongside everything else.

For Lanes, open the desktop app, head to Settings, then Local MCP, and toggle it on. The same screen has a one-click Connect button for Claude Code, which writes the entry to ~/.claude.json for you so you don't have to hand-edit any JSON. Restart your agent and both servers should show up in /mcp.

Pulling Linear issues into Lanes

With both servers connected, importing tickets becomes a single sentence in chat.

"Pull all my open Linear issues with the frontend label and create matching issues in Lanes tagged with frontend."

Here's roughly what happens behind that prompt. The agent calls list_my_issues on the Linear MCP, filtered by the label, and gets back the matching tickets. Then, because tags in Lanes are referenced by UUID rather than by name, it calls lanes_list_labels to resolve frontend to its actual ID in your local workspace. From there, every Linear issue becomes a lanes_create_issue call with the title, description, and resolved label UUID filled in. The Linear identifier (something like ENG-742) and the Linear permalink get stitched into the Lanes description, so the link back upstream is preserved on the issue itself.

You don't have to look up label or component IDs yourself. The agent handles that through lanes_list_labels and lanes_list_components before creating or updating issues. Refer to them by name in your prompt and trust the agent to resolve them.

The same shape works for narrower imports:

"Import the three highest-priority issues from the current cycle on team ENG, only the ones assigned to me, into the Lanes backlog."

In this case the agent stacks Linear's filter parameters (cycle, team, assignee, priority) before importing. Because both servers live in the same conversation, no list of issue IDs ever needs to leave the chat or pass through your clipboard.

Starting a session on an imported issue

This is the part the whole setup exists for. Once a Linear ticket is on your Lanes board, you can run it as a session straight from chat.

"Find the Lanes issue for ENG-742 and start a Claude Code session in plan mode with a fresh worktree."

Three things happen behind that prompt. First, the agent searches Lanes for the imported ticket using its Linear identifier. Then it calls lanes_update_issue to set worktreeStrategy to create along with a sensible worktreeName, so that when the session spawns it lands in an isolated git branch rather than your current working tree. Finally, lanes_start_session actually launches the session with cli: "claude" and planMode: true. That call returns immediately, and the PTY spawns asynchronously inside the desktop app a moment later.

You can layer more onto the same prompt without changing its shape. A custom prompt override, extra environment variables, additional CLI flags, or swapping claude for codex or shell are all just additional fields on the same lanes_start_session call. The session shows up in Lanes like any other, except now it already has the full Linear ticket baked into its description.

Syncing the result back

When a session finishes, you can close the loop from the same chat.

"Summarize the work done on ENG-742, post it as a comment on the Linear issue, and move the Linear issue to In Review."

The agent pulls everything it needs out of Lanes. lanes_get_issue_history returns the message timeline of the most recent session for that issue. lanes_get_session_stats gives you token usage, duration, and per-tool call counts. lanes_get_issue_changes returns the git diff of the worktree. From those three sources it composes a summary, posts it through Linear's create_comment, and then calls update_issue on Linear to transition the ticket's state. Every piece of context the agent needs already lives on the board, so the round trip back to Linear is just a translation step rather than a rewrite from memory.

Polling a long-running session

Sessions don't have to be one-shot. Because lanes_get_session_status is just another MCP tool, you can also ask the agent to keep an eye on running sessions for you.

"Every five minutes, check the status of the session on ENG-742. If it's awaiting input, show me the last 50 lines of the terminal."

lanes_get_session_status returns the live status of each session (starting, busy, awaiting_input, exited, or error). When it flips to awaiting_input, lanes_read_terminal pulls the scrollback so you can see what the agent got stuck on without leaving the chat. That same pairing is also useful for end-of-day status reports across every active session at once, not just a single ticket.

What to try

If you wire up a workflow on top of these two servers, we'd love to hear about it. Drop it in our Discord. And if a tool call feels missing or wrong, that's exactly the kind of feedback we want during the research preview.