Skip to main content

Linear MCP

Version: 1.0 Last Updated: 2025-12-08 Category: MCP Servers Integration: Linear

Overview

The Linear MCP (Model Context Protocol) Server provides AI agents with comprehensive access to Linear's project management API. This integration enables automated issue management, sprint planning, project tracking, and team collaboration workflows through natural language interactions.

Connection Type: Remote SSE (Server-Sent Events) Server URL: https://mcp.linear.app/sse Official: Maintained by Linear

Features

  • Issue Management: Create, read, update, and search issues
  • Project Management: Manage projects, milestones, and roadmaps
  • Team Collaboration: Access team data, cycles, and user information
  • Label Management: Create and manage issue labels
  • Comment System: Add and retrieve comments on issues
  • Status Tracking: Manage issue statuses and workflows
  • Documentation: Access and search Linear's documentation

Configuration

Credentials

This component requires a Linear API credential with:

  • API Key: Personal API key from Linear

Getting Your API Key

  1. Log in to your Linear workspace at https://linear.app/
  2. Click on your profile picture (bottom left)
  3. Navigate to Settings → API
  4. Click Create new key
  5. Give it a descriptive label (e.g., "AnswerAgent Integration")
  6. Copy the API key immediately (it's only shown once)

Available Tools

Issue Management

list_issues

Search and list issues with flexible filtering options.

Parameters:

  • query (optional): Search text for issue titles and descriptions
  • assignee (optional): Filter by assignee (email, name, or "me")
  • team (optional): Filter by team name or ID
  • project (optional): Filter by project name or ID
  • state (optional): Filter by issue state
  • label (optional): Filter by label name or ID
  • priority (optional): Filter by priority (0-4)
  • createdAt (optional): Filter by creation date (ISO-8601 or duration)
  • updatedAt (optional): Filter by update date (ISO-8601 or duration)
  • limit (optional): Maximum results (default: 50, max: 250)
  • orderBy (optional): Sort order ("createdAt" or "updatedAt")
  • includeArchived (optional): Include archived issues (default: true)

Returns: Array of issues with metadata

get_issue

Retrieve detailed information about a specific issue.

Parameters:

  • id (required): Issue ID

Returns: Complete issue details including attachments and git branch name

create_issue

Create a new issue in Linear.

Parameters:

  • title (required): Issue title
  • team (required): Team name or ID
  • description (optional): Issue description (markdown)
  • assignee (optional): User to assign (email, name, or "me")
  • state (optional): Issue state (type, name, or ID)
  • priority (optional): Priority level (0=None, 1=Urgent, 2=High, 3=Normal, 4=Low)
  • labels (optional): Array of label names or IDs
  • project (optional): Project name or ID
  • cycle (optional): Cycle name, number, or ID
  • dueDate (optional): Due date (ISO format)
  • parentId (optional): Parent issue ID for sub-issues

Returns: Created issue object

update_issue

Update an existing issue.

Parameters:

  • id (required): Issue ID
  • title (optional): New title
  • description (optional): New description
  • assignee (optional): New assignee
  • state (optional): New state
  • priority (optional): New priority
  • labels (optional): Labels to set
  • project (optional): Project to assign
  • cycle (optional): Cycle to assign
  • dueDate (optional): New due date
  • estimate (optional): Estimate value

Returns: Updated issue object

Status Management

list_issue_statuses

List available issue statuses for a team.

Parameters:

  • team (required): Team name or ID

Returns: Array of available issue statuses

Label Management

list_issue_labels

List labels available for issues.

Parameters:

  • team (optional): Filter by team name or ID
  • name (optional): Filter by label name
  • limit (optional): Maximum results (default: 50, max: 250)
  • orderBy (optional): Sort order

Returns: Array of issue labels

create_issue_label

Create a new issue label.

Parameters:

  • name (required): Label name
  • color (optional): Hex color code
  • description (optional): Label description
  • teamId (optional): Team UUID (workspace label if not provided)
  • isGroup (optional): Create as label group (default: false)
  • parentId (optional): Parent label UUID for child labels

Returns: Created label object

Comment Management

list_comments

List comments for a specific issue.

Parameters:

  • issueId (required): Issue ID

Returns: Array of comments

create_comment

Add a comment to an issue.

Parameters:

  • issueId (required): Issue ID
  • body (required): Comment content (markdown)
  • parentId (optional): Parent comment ID for replies

Returns: Created comment object

Project Management

list_projects

List projects in the workspace.

Parameters:

  • query (optional): Search text
  • team (optional): Filter by team
  • state (optional): Filter by project state
  • member (optional): Filter by team member
  • initiative (optional): Filter by initiative
  • limit (optional): Maximum results (default: 50, max: 250)
  • includeArchived (optional): Include archived projects (default: false)
  • orderBy (optional): Sort order
  • createdAt (optional): Filter by creation date
  • updatedAt (optional): Filter by update date

Returns: Array of projects

get_project

Get detailed project information.

Parameters:

  • query (required): Project ID or name

Returns: Complete project details

create_project

Create a new project.

Parameters:

  • name (required): Project name
  • team (required): Team name or ID
  • description (optional): Full description (markdown)
  • summary (optional): Concise summary (max 255 chars)
  • lead (optional): Project lead (email, name, or "me")
  • state (optional): Project state
  • priority (optional): Priority (0-4)
  • startDate (optional): Start date (ISO format)
  • targetDate (optional): Target date (ISO format)
  • labels (optional): Array of labels

Returns: Created project object

update_project

Update an existing project.

Parameters:

  • id (required): Project ID
  • name (optional): New name
  • description (optional): New description
  • summary (optional): New summary
  • lead (optional): New lead
  • state (optional): New state
  • priority (optional): New priority
  • startDate (optional): New start date
  • targetDate (optional): New target date
  • labels (optional): Labels to set

Returns: Updated project object

Cycle Management

list_cycles

Retrieve cycles (sprints) for a team.

Parameters:

  • teamId (required): Team ID
  • type (optional): Cycle type ("current", "previous", "next")

Returns: Array of cycles

Team Management

list_teams

List all teams in the workspace.

Parameters:

  • query (optional): Search text
  • limit (optional): Maximum results (default: 50, max: 250)
  • includeArchived (optional): Include archived teams (default: false)
  • orderBy (optional): Sort order
  • createdAt (optional): Filter by creation date
  • updatedAt (optional): Filter by update date

Returns: Array of teams

get_team

Get detailed team information.

Parameters:

  • query (required): Team UUID, key, or name

Returns: Complete team details

list_users

List workspace members.

Parameters:

  • query (optional): Filter by name or email

Returns: Array of users

get_user

Get detailed user information.

Parameters:

  • query (required): User ID, name, email, or "me"

Returns: Complete user details

Documentation

list_documents

List Linear documents and project documentation.

Parameters:

  • query (optional): Search text
  • projectId (optional): Filter by project ID
  • limit (optional): Maximum results (default: 50, max: 250)
  • includeArchived (optional): Include archived documents (default: false)
  • orderBy (optional): Sort order
  • createdAt (optional): Filter by creation date
  • updatedAt (optional): Filter by update date

Returns: Array of documents

get_document

Retrieve a specific document.

Parameters:

  • id (required): Document ID or slug

Returns: Complete document content

search_documentation

Search Linear's official documentation.

Parameters:

  • query (required): Search query
  • page (optional): Page number (default: 0)

Returns: Search results from Linear docs

Usage Examples

Example 1: Create an Issue

// Using the Linear MCP in a chatflow
const result = await linearMCP.create_issue({
title: "Fix login button on mobile",
team: "Engineering",
description: "The login button is not responding on iPhone Safari",
priority: 1, // Urgent
labels: ["bug", "frontend", "mobile"],
assignee: "sarah@example.com"
})

Example 2: List Team Issues

// Get all high-priority issues assigned to current user
const issues = await linearMCP.list_issues({
assignee: "me",
priority: 2, // High
state: "In Progress",
orderBy: "updatedAt"
})

Example 3: Sprint Planning

// Get current sprint and analyze workload
const cycles = await linearMCP.list_cycles({
teamId: "team_uuid",
type: "current"
})

const issues = await linearMCP.list_issues({
cycle: cycles[0].name,
team: "Engineering"
})

Best Practices

Issue Management

  • Use descriptive titles and detailed descriptions
  • Set appropriate priorities based on urgency
  • Apply consistent labeling for better organization
  • Link related issues using parent/child relationships

Team Collaboration

  • Use assignee: "me" for user context in agents
  • Filter by team to scope operations appropriately
  • Leverage cycles for sprint-based workflows

Performance

  • Use specific filters to reduce result sets
  • Implement pagination for large queries
  • Cache frequently accessed data
  • Respect rate limits (2000 requests/hour)

Security

  • Store API keys in environment variables
  • Use dedicated API keys for integrations
  • Rotate keys regularly
  • Monitor API usage and access logs

Error Handling

Common error scenarios:

  • Unauthorized: Invalid or expired API key
  • Not Found: Issue, project, or team doesn't exist
  • Forbidden: Insufficient permissions for operation
  • Rate Limited: Exceeded API rate limits

Implement retry logic with exponential backoff for transient errors.

Rate Limits

Linear API rate limits:

  • Standard: 2000 requests per hour per API key
  • Complex queries: May count as multiple requests

Monitor usage and implement caching to stay within limits.

Resources

Support

For issues or questions:

Ask Alpha