Skip to content
plugmcp
DirectorySkillsCategoriesBlog
EN/中文
Sign inSign up
Directory/io.github.adelaidasofia
L
MCP serverOfficial registry

Linear MCP (multi Workspace, PAT Auth)

Multi-workspace Linear MCP — PAT auth, 57 tools + 3 prompts, substrate enforcement, drop-in.

by io.github.adelaidasofiav0.3.2GitHub
Power your agent

Add this server

The publisher's own command. Not a PlugMCP endpoint.

Local command
uvx adelaidasofia-linear-mcp==0.3.2
Credentials from the publisher
  • LINEAR_PAT — Personal API Key from linear.app/settings/account/security
Provider
Claude Code
LINEAR_PAT=<secret> claude mcp add io.github.adelaidasofia-linear-mcp -- uvx adelaidasofia-linear-mcp==0.3.2

Run in a terminal.

Claude Desktop
{
  "mcpServers": {
    "io.github.adelaidasofia-linear-mcp": {
      "command": "uvx",
      "args": [
        "adelaidasofia-linear-mcp==0.3.2"
      ],
      "env": {
        "LINEAR_PAT": "<secret>"
      }
    }
  }
}

claude_desktop_config.json

Step-by-step: add this in Claude

Remote URL or a command on your machine? How the two installs differ

Run on PlugMCP

Host a copy with our keys and logs.

A new server you create. It is not this listing's official endpoint. Use the publisher install when you want their URL and their credentials.

Launch
Related MCP

More like this

View more
  • Firecrawl

    firecrawl

    🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.

    7.6k starsRemotebatch-processingclaude
  • N
plugmcp

Plug any tool into any agent. MCP servers for people who do not write servers. Gateway for volume, n8n for apps.

PlugMCP, 2026

Product
  • Browse
  • Install
  • Host your own
  • Voice mode
  • Browser
Directory
  • All MCP servers
  • Agent skills
  • Categories
  • New
  • Voice
  • Submit a server
Developers
  • Docs
  • Blog
  • What is MCP
  • What is WebMCP
  • Status
Company
  • About
  • Contact
  • Terms
  • Privacy
  • DPA
  • [email protected]

Notion

Official
io.github.awkoy

Token-auth Notion MCP: pages, databases, blocks, comments, files. Runs headless in CI and agents.

175 starsLocal
  • Context7

    upstash

    Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors

    63k starsRemotevibe-coding
  • Multi-workspace Linear MCP — PAT auth, 57 tools + 3 prompts, substrate enforcement, drop-in.

    Suggested
    • Firecrawl🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.
    • N
      NotionToken-auth Notion MCP: pages, databases, blocks, comments, files. Runs headless in CI and agents.
    • Context7Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors

    linear-mcp

    Multi-workspace Linear MCP server with Personal API Key auth. Drop-in replacement for the official OAuth-only Linear MCP at mcp.linear.app/mcp.

    Why this exists. The official Linear MCP is OAuth-only and single-workspace per instance. PAT auth plus persistent token storage plus multi-workspace routing kills three failure modes:

    1. The OAuth flow is brittle across MCP client session boundaries — auth state expires when a session resumes mid-flow.
    2. The localhost callback fails in some setups, forcing fragile paste-back flows.
    3. One MCP instance per workspace doubles config + OAuth dances.

    This server replaces both with one entry. One install, N workspaces, never an OAuth dance again.

    Install

    From PyPI

    pipx install adelaidasofia-linear-mcp
    

    From source

    git clone https://github.com/adelaidasofia/linear-mcp ~/.claude/linear-mcp
    cd ~/.claude/linear-mcp
    pip install -e .
    

    Claude Desktop one-click

    Download the latest .mcpb from Releases and double-click.

    Configure

    1. Generate one Personal API Key per workspace at https://linear.app/settings/account/security. You must be logged into each workspace separately while generating the key for that workspace.

    2. Create ~/.claude/linear-mcp/admin.env (chmod 600):

    LINEAR_WORKSPACES=personal,work
    LINEAR_PRIMARY_WORKSPACE=personal
    
    LINEAR_PAT_PERSONAL=lin_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
    LINEAR_PAT_WORK=lin_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
    
    LINEAR_LABEL_PERSONAL=Personal
    LINEAR_LABEL_WORK=Work
    
    Suggested
    • Firecrawl🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.
    • N
      NotionToken-auth Notion MCP: pages, databases, blocks, comments, files. Runs headless in CI and agents.
    • Context7Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors

    No FAQ yet. Enrichment fills this from the README on the next crawl.

    Suggested
    • Firecrawl🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.
    • N
      NotionToken-auth Notion MCP: pages, databases, blocks, comments, files. Runs headless in CI and agents.
    • Context7Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors

    No tool list yet. Remote servers get one after the first health check.

    Suggested
    • Firecrawl🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.
    • N
      NotionToken-auth Notion MCP: pages, databases, blocks, comments, files. Runs headless in CI and agents.
    • Context7Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors

    Aliases are arbitrary — name them whatever helps you route (acme,beta, team1,team2, home,client).

    chmod 600 ~/.claude/linear-mcp/admin.env
    
    1. Register in Claude Code (user scope, so it loads in every project):
    claude mcp add -s user linear-mcp python3 -m linear_mcp.server
    

    Or, with pipx install:

    claude mcp add -s user linear-mcp linear-mcp
    
    1. Restart Claude Code. healthcheck should return ok: true per workspace.

    Substrate-layer enforcement (v0.3)

    Three server-side checks that protect issue quality without depending on any markdown rule file or client-side memory. Apply only to WRITE paths; reads stay unconstrained.

    LayerWhat it doesBypass env var
    [source:] first-line checksave_issue / save_project reject CREATE calls whose description (or project content) does not start with [source: <canonical-key>]. UPDATE calls (id passed) skip the check so legacy backfills remain unblocked.LINEAR_MCP_SKIP_SOURCE_CHECK=1
    Idempotency checkBefore any CREATE, the server runs searchIssues / searchProjects for [source: <key>] and refuses to create a duplicate. The error names the existing identifier + UUID so the caller can update in place.LINEAR_MCP_SKIP_IDEMPOTENCY=1
    auth_phrase on bulk_save_issuesbulk_save_issues now requires auth_phrase ∈ {"go", "yes do it", "confirmed", "execute", "go cancel", "go update"} (case-insensitive). Mass-modification surface stays explicit.(no bypass — surface the phrase to the operator)

    Canonical-key examples:

    • [source: 🍄 Mycelium AI/📝 Meeting Notes/2026-05-22 - sync.md]
    • [source: ⚙️ Meta/Decisions/2026-05-23-merger-public-comms.md]
    • [source: linear-kickoff:sweep-myc-p1]
    • [source: ~/.claude/linear-mcp/BUILD_PROMPT_V03.md]

    Fast issue execution

    linear-exec is the short path for starting real work from a Linear issue. It resolves the issue, checks blocking relations, scans same-project siblings for obvious scope overlap, infers the repo when possible, and can create the standard claude-dev-worktree branch.

    Dry-run a specific issue:

    linear-exec execute MYC-150 --workspace mycelium
    

    Start the work after reviewing the preflight:

    linear-exec execute MYC-150 --workspace mycelium --repo memory-runtime-pro --go
    

    Find the next unblocked P1 issue in a workspace:

    linear-exec sweep mycelium p1
    linear-exec sweep mycelium p1 --go --repo memory-runtime-pro
    

    The command refuses to proceed when an upstream blocks relation is still incomplete unless --force is passed. --no-state-update and --no-worktree let agents use only the parts of the preflight they need.

    Tool surface (v0.3 — 57 tools + 3 prompts)

    Every tool takes an optional workspace parameter (the alias from LINEAR_WORKSPACES). Omit it to use LINEAR_PRIMARY_WORKSPACE.

    Meta

    ToolPurpose
    list_workspacesShow configured workspaces and primary
    healthcheckVerify each PAT + surface remaining rate-limit budget

    Core entities

    ToolPurpose
    list_teams / get_teamTeams (with inline workflow states)
    list_users / get_userUsers (me resolves to PAT owner)
    list_projects / get_project / save_projectProjects (v0.3: save_project enforces [source:] on content + idempotency on CREATE)
    list_initiatives / get_initiative / save_initiativeInitiatives
    list_issues / get_issue / save_issue / bulk_save_issuesIssues (id or ONDE-123; bulk uses issueBatchUpdate; v0.3: save_issue enforces [source:] + idempotency on CREATE; bulk_save_issues requires auth_phrase)
    list_cyclesCycles
    list_milestones / get_milestone / save_milestoneProject milestones
    list_issue_statuses / get_issue_statusWorkflow states
    list_issue_labels / create_issue_labelLabels
    list_comments / save_commentComments
    list_documents / get_document / save_documentDocuments
    save_status_updatePost a project status update

    Webhooks (v0.2)

    ToolPurpose
    list_webhooks / get_webhookInspect subscriptions
    create_webhook / update_webhookManage subscriptions
    delete_webhookDestructive — draft+confirm

    Notifications / inbox (v0.2)

    ToolPurpose
    list_notifications / get_notificationInbox read
    notifications_unread_countTop-of-mind counter
    mark_notification_read / mark_all_notifications_readTriage
    archive_notificationSweep

    Attachments (v0.2)

    ToolPurpose
    list_attachments / get_attachmentPer-issue reads
    attachments_for_urlReverse lookup: which issues link to this URL?
    link_url_to_issueAttach any URL to an issue
    delete_attachmentDestructive — draft+confirm

    Issue relations (v0.2)

    ToolPurpose
    list_issue_relationsThe blocks/duplicate/related graph
    create_issue_relation / delete_issue_relationManage the graph

    Agent sessions (v0.2)

    ToolPurpose
    list_agent_sessions / get_agent_sessionLinear's first-class agent surface
    create_agent_session_on_issue / create_agent_session_on_commentSpawn

    Search (v0.2 — replaces v0.1's broken search_documentation)

    ToolPurpose
    search_issues / search_documents / search_projectsFull-text per entity type
    semantic_searchWorkspace-wide semantic across all entities

    MCP prompts (v0.2)

    Available as slash commands in MCP clients that surface prompts:

    • /triage-issue — full triage pass: classify, label, prioritize, assign, link duplicates
    • /project-status — draft a weekly status update from current Linear state
    • /inbox-sweep — sweep today's notifications, propose actions, archive what's handled

    Multi-workspace usage

    Switch workspaces inline:

    list_teams(workspace="work")
    save_issue(workspace="personal", title="Ship", team_id="...")
    

    Without workspace, the primary is used.

    Auth

    Linear PATs use header Authorization: <key> (no Bearer prefix). Each PAT is scoped to one workspace and grants access only to data the owning user can see. There is no shared org token.

    Rate limit: 2500 requests/hour per token (verified against live API 2026-05-23). The server passes Linear's Retry-After header through on 429 and surfaces remaining budget via healthcheck.

    Safety

    Read tools and routine writes (create/update issues, comments, labels, status updates) pass through. Destructive ops (delete_webhook, delete_attachment) use the draft+confirm pattern: the first call stages the change and returns a draft_id + preview of what will happen; the second call (with confirm_draft_id) commits. Drafts expire after 1 hour (override with LINEAR_MCP_DRAFT_TTL_SECONDS).

    Every tool call appends one JSONL line to ~/.claude/linear-mcp/audit.log (override with LINEAR_MCP_AUDIT_LOG_PATH, disable with LINEAR_MCP_AUDIT_LOG=false). Tokens are stripped from audit records.

    healthcheck surfaces each PAT's remaining rate-limit budget (X-RateLimit-Requests-Remaining + X-Complexity-Remaining) per workspace, so agents can self-throttle without making a separate observability call.

    Related MCPs

    • adelaidasofia/slack-mcp — multi-workspace Slack with draft+confirm
    • adelaidasofia/whatsapp-mcp — WhatsApp via whatsmeow + vault export
    • adelaidasofia/imessage-mcp — iMessage chat.db + vault export
    • adelaidasofia/github-mcp — GitHub PR/issue/release

    License

    MIT.


    Built by Adelaida Diaz-Roa. Full install or team version at diazroa.com.