linear-mcp

linear-mcp

A Model Context Protocol server that enables interaction with Linear workspaces to manage issues, projects, cycles, and teams through a GraphQL interface. It provides 21 tools for comprehensive task management, search, and workflow coordination using OAuth2 authentication.

Category
Visit Server

README

linear-mcp

A Linear MCP server for Dedalus.

Prerequisites

  • Python 3.11+
  • uv
  • A Linear workspace

Setup

cd linear-mcp
cp .env.example .env   # then fill in your values
uv sync

Environment variables

Linear uses OAuth2 for authentication. The Dedalus platform (DAuth) handles the OAuth flow. The MCP server declares the secret name it needs (e.g. LINEAR_ACCESS_TOKEN).

OAuth provider configuration (consumed by the Dedalus platform):

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 client configuration (for _client.py testing):

Variable Description
DEDALUS_API_KEY Your Dedalus API key (dsk_*)
DEDALUS_API_URL Defaults to https://api.dedaluslabs.ai
DEDALUS_AS_URL Defaults to https://as.dedaluslabs.ai

Run the server

uv run src/main.py

Test locally

uv run src/_client.py

This opens an interactive agent loop. On first use, DAuth will prompt you to complete the Linear OAuth flow in your browser.

Lint and 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

21 tools (14 read, 7 write)

Architecture

Linear uses a single GraphQL endpoint (POST /graphql) for all operations. The request layer in src/linear/request.py dispatches queries through Dedalus's HTTP enclave, which injects OAuth credentials transparently.

src/
├── linear/
│   ├── config.py      # Connection definition (OAuth)
│   ├── request.py     # GraphQL dispatch + coercion helpers
│   └── types.py       # Typed dataclass models
├── tools/
│   ├── issues.py      # Issue CRUD
│   ├── comments.py    # Comment operations
│   ├── projects.py    # Project CRUD
│   ├── cycles.py      # Cycle queries
│   ├── teams.py       # Team + workflow states
│   ├── users.py       # User queries
│   ├── labels.py      # Label operations
│   └── search.py      # Issue search
├── server.py          # MCPServer setup
├── main.py            # Entry point
└── _client.py         # Interactive agent loop (DAuth)

Notes

  • Linear's API is GraphQL-only. Every tool dispatches a GraphQL query or mutation.
  • Workflow states (statuses) vary per team. Use linear_list_team_states to discover valid state IDs before creating or transitioning issues.
  • Issue identifiers (e.g. ENG-123) can be used interchangeably with UUIDs in most tools.
  • Priority values: 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low.
  • Archived resources are hidden by default. Some tools accept include_archived to surface them.
  • Authentication uses OAuth2 via DAuth. Personal API keys are not supported in this server.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured