Linear MCP Server

1

Add it to Claude Code

Run this in a terminal.

Run in terminal
claude mcp add -e "OAUTH_CLIENT_ID=${OAUTH_CLIENT_ID}" -e "OAUTH_CLIENT_SECRET=${OAUTH_CLIENT_SECRET}" linear-mcp -- uv run src/main.py
Required:OAUTH_CLIENT_IDOAUTH_CLIENT_SECRET+ 1 optional
README.md

A Model Context Protocol server for managing Linear workspaces

linear-mcp

A Linear MCP server built on the Dedalus platform.

Prerequisites

  • Python 3.11+
  • `uv`
  • A Linear workspace with an OAuth2 application
  • A Dedalus account

Quick Start

1. Create a Linear OAuth Application

  1. Go to Linear → Settings → API → OAuth2 Applications (link).
  2. Create a new application.
  3. Under Redirect URIs, add:
    https://as.dedaluslabs.ai/oauth/callback
    
  4. Note the Client ID and Client Secret.

2. Configure Environment Variables

cp .env.example .env

Fill in your .env:

# Linear OAuth (consumed by the Dedalus platform during deployment)
OAUTH_ENABLED=true
OAUTH_AUTHORIZE_URL=https://linear.app/oauth/authorize
OAUTH_TOKEN_URL=https://api.linear.app/oauth/token
OAUTH_CLIENT_ID=<your-linear-client-id>
OAUTH_CLIENT_SECRET=<your-linear-client-secret>
OAUTH_SCOPES_AVAILABLE=read,write,issues:create,comments:create
OAUTH_BASE_URL=https://api.linear.app

# Dedalus Platform (for the sample client)
DEDALUS_API_KEY=<your-dedalus-api-key>
DEDALUS_API_URL=https://api.dedaluslabs.ai
DEDALUS_AS_URL=https://as.dedaluslabs.ai

# After deploying, set this to your slug
LINEAR_MCP_SLUG=your-org/linear-mcp

3. Deploy to Dedalus

  1. Log in to the Dedalus Dashboard.
  2. Go to Add Server and connect this GitHub repository.
  3. In the server configuration, enter the environment variables from your .env (OAUTH_CLIENT_ID, OAUTH_CLIENT_SECRET, etc.).
  4. Deploy. The dashboard will show your server slug (e.g. your-org/linear-mcp).

4. Install Dependencies

uv sync

5. Run the Client

uv run src/_client.py

On first use, the client will open your browser for Linear OAuth authorization. After completing the flow, you can interact with Linear through the agent.

=== Linear MCP Agent ===
Server: your-org/linear-mcp
Type 'quit' or 'exit' to end the session.

You: What issues are assigned to me?
Assistant: ...

Environment Variables

Linear OAuth (server-side, set during Dedalus deployment)

Variable Description
OAUTH_ENABLED true
OAUTH_AUTHORIZE_URL https://linear.app/oauth/authorize
OAUTH_TOKEN_URL https://api.linear.app/oauth/token
OAUTH_CLIENT_ID Your Linear OAuth app client ID
OAUTH_CLIENT_SECRET Your Linear OAuth app client secret
OAUTH_SCOPES_AVAILABLE read,write,issues:create,comments:create
OAUTH_BASE_URL https://api.linear.app

Dedalus Platform (client-side, for `_client.py`)

Variable Description
DEDALUS_API_KEY Your Dedalus API key (dsk_*)
DEDALUS_API_URL API base URL (default: https://api.dedaluslabs.ai)
DEDALUS_AS_URL Authorization server URL (default: https://as.dedaluslabs.ai)

Running the Server Locally

uv run src/main.py

This starts the MCP server on port 8080. Note that _client.py always connects through Dedalus (not localhost). Use this for local testing with a direct MCP client.


Lint & Typecheck

uv run --group lint ruff format src/
uv run --group lint ruff check src/ --fix
uv run --group lint ty check src/

Available Tools

Tool R/W Description
linear_get_issue R Get issue by ID or identifier (ENG-123)
linear_list_issues R List issues with filters
linear_create_issue W Create a new issue
linear_update_issue W Update an existing issue
linear_list_comments R List comments on an issue
linear_create_comment W Add a comment to an issue
linear_get_project R Get project by ID
linear_list_projects R List projects
linear_create_project W Create a new project
linear_update_project W Update an existing project
linear_list_cycles R List cycles for a team
linear_get_cycle R Get a cycle by ID
linear_active_cycle R Get the current active cycle for a team
linear_list_teams R List all teams
linear_get_team R Get a team by ID
linear_list_team_states R List workflow states (statuses) for a team
linear_whoami R Get authenticated user profile
linear_list_users R List workspace members
linear_list_labels R List labels
linear_create_label W Create a new label
linear_search_issues R Full-text search across issues
linear_issue_context R Full issue context (details + comments + states)
linear_my_issues R Issues assigned to the authenticated user
linear_get_attachment R Get an attachment by ID
linear_get_attachment_by_url R Get an attachment by URL
linear_create_attachment W Create an attachment on an issue
`linear_update_attachme

Tools (9)

linear_get_issueGet issue by ID or identifier
linear_list_issuesList issues with filters
linear_create_issueCreate a new issue
linear_update_issueUpdate an existing issue
linear_list_commentsList comments on an issue
linear_create_commentAdd a comment to an issue
linear_list_projectsList projects
linear_my_issuesIssues assigned to the authenticated user
linear_search_issuesFull-text search across issues

Environment Variables

OAUTH_CLIENT_IDrequiredYour Linear OAuth app client ID
OAUTH_CLIENT_SECRETrequiredYour Linear OAuth app client secret
DEDALUS_API_KEYYour Dedalus API key

Configuration

claude_desktop_config.json
{"mcpServers": {"linear": {"command": "uv", "args": ["run", "src/main.py"], "env": {"OAUTH_CLIENT_ID": "your-id", "OAUTH_CLIENT_SECRET": "your-secret"}}}}

Try it

What issues are currently assigned to me in Linear?
Create a new issue in the engineering team titled 'Fix login bug' with high priority.
Search for all issues related to 'authentication' and summarize them.
List the active cycle for the product team.
Add a comment to issue ENG-123 saying 'This is ready for review'.

Frequently Asked Questions

What are the key features of Linear MCP?

Full CRUD operations for Linear issues and projects. OAuth2 authentication for secure workspace access. Full-text search capabilities across all issues. Context-aware issue retrieval including comments and workflow states. Support for cycle and team management.

What can I use Linear MCP for?

Automating issue creation from AI-generated bug reports. Quickly querying assigned tasks without leaving the chat interface. Summarizing project progress and active cycles for team standups. Updating issue statuses and adding comments during technical discussions.

How do I install Linear MCP?

Install Linear MCP by running: uv sync

What MCP clients work with Linear MCP?

Linear MCP works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep Linear MCP docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare