IMPORTANT NOTE: This MCP Server is now deprecated and is no longer being maintained. I recommend you use the official Linear remote MCP server here: https://linear.app/changelog/2025-05-01-mcp (https://mcp.linear.app/sse)
Linear's MCP isn't open source, and thus sucks.
A Model Context Protocol server for the Linear API.
This server provides comprehensive integration with Linear's issue tracking system through MCP, allowing LLMs to interact with Linear issues, attachments, and project management features.
- Clone and build the server:
git clone <repository-url>
cd linear-mcp-server
bun install
bun run build
-
Create or get a Linear API key for your team: https://linear.app/YOUR-TEAM/settings/api
-
Add server config to Claude Desktop:
- MacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- Linux:
~/.config/Claude/claude_desktop_config.json
- MacOS:
{
"mcpServers": {
"linear": {
"command": "node",
"args": ["/path/to/linear-mcp-server/build/index.js"],
"env": {
"LINEAR_API_KEY": "your_linear_api_key_here"
}
}
}
}
Replace /path/to/linear-mcp-server
with the actual path to your cloned repository.
-
linear_create_issue
: Create comprehensive Linear issues- Required inputs:
title
(string): Issue titleteamId
(string): Team ID to create issue in
- Optional inputs:
description
(string): Issue description (markdown supported)priority
(number, 0-4): Priority level (0=none, 1=urgent, 2=high, 3=normal, 4=low)status
(string): Initial status/state IDparentId
(string): Parent issue ID (to create sub-issues)assigneeId
(string): User ID to assign this issue tolabels
(string[]): Array of label IDs to add to this issueestimate
(number): Story points estimatedueDate
(string): Due date in ISO 8601 format (YYYY-MM-DD)projectId
(string): Project ID to add this issue tocycleId
(string): Cycle ID to add this issue tosubIssueSortOrder
(number): Position in parent's sub-issue list (for sub-issues)createAsUser
(string): Custom username for OAuth actor authorizationdisplayIconUrl
(string): Custom avatar URL for OAuth actor authorization
- Required inputs:
-
linear_update_issue
: Update existing issues with comprehensive field support- Required inputs:
id
(string): Issue ID to update
- Optional inputs:
title
(string): New titledescription
(string): New descriptionpriority
(number, 0-4): New priority (0=none, 1=urgent, 2=high, 3=normal, 4=low)status
(string): New status/state IDassigneeId
(string): New assignee user ID (use null to unassign)labels
(string[]): New array of label IDs (replaces existing labels)estimate
(number): New story points estimatedueDate
(string): New due date in ISO 8601 format (YYYY-MM-DD)projectId
(string): New project IDcycleId
(string): New cycle ID
- Required inputs:
-
linear_search_issues
: Search issues with flexible filtering- Optional inputs:
query
(string): Text to search in title/descriptionteamId
(string): Filter by teamstatus
(string): Filter by statusassigneeId
(string): Filter by assigneelabels
(string[]): Filter by labelspriority
(number): Filter by priorityestimate
(number): Filter by estimate pointsincludeArchived
(boolean): Include archived issueslimit
(number, default: 10): Max results
- Optional inputs:
-
linear_get_user_issues
: Get issues assigned to a user- Optional inputs:
userId
(string): User ID (omit for authenticated user)includeArchived
(boolean): Include archived issueslimit
(number, default: 50): Max results
- Optional inputs:
-
linear_add_comment
: Add comments to issues- Required inputs:
issueId
(string): Issue ID to comment onbody
(string): Comment text (markdown supported)
- Optional inputs:
createAsUser
(string): Custom usernamedisplayIconUrl
(string): Custom avatar URL
- Required inputs:
-
linear_create_attachment
: Create attachments for issues- Required inputs:
issueId
(string): ID of the issue to attach totitle
(string): Attachment titleurl
(string): URL of the external resource (must be unique per issue)
- Optional inputs:
subtitle
(string): Attachment subtitle (supports formatting variables)iconUrl
(string): Icon URL for the attachmentmetadata
(object): Metadata object for the attachment
- Required inputs:
-
linear_update_attachment
: Update existing attachments- Required inputs:
id
(string): Attachment ID
- Optional inputs:
title
(string): New attachment titlesubtitle
(string): New attachment subtitle (supports formatting variables)metadata
(object): New metadata object for the attachment
- Required inputs:
-
linear_get_teams
: List all teams in the organization- No inputs required
- Returns team IDs, names, keys, and descriptions
-
linear_get_users
: List all users in the organization- No inputs required
- Returns user IDs, names, display names, emails, and status
-
linear_get_workflow_states
: List all workflow states (issue statuses)- No inputs required
- Returns state IDs, names, colors, and types
-
linear_get_projects
: List all projects in the organization- No inputs required
- Returns project IDs, names, descriptions, states, and progress
-
linear_get_labels
: List all issue labels- No inputs required
- Returns label IDs, names, colors, and descriptions
-
linear_get_cycles
: List all cycles (sprints)- No inputs required
- Returns cycle IDs, names, numbers, and date ranges
linear-issue:///{issueId}
- View individual issue detailslinear-team:///{teamId}/issues
- View team issueslinear-user:///{userId}/assigned
- View user's assigned issueslinear-organization:
- View organization infolinear-viewer:
- View current user context
Some example prompts you can use with Claude Desktop to interact with Linear:
- "Create a high-priority bug report for the authentication system with 5 story points and assign it to user-123"
- "Create a sub-issue under issue ABC-456 for implementing JWT token validation"
- "Update issue DEF-789 to move it to the current sprint and set due date to next Friday"
- "Find all urgent issues assigned to me that are due this week"
- "Show me all issues in the mobile project that are in progress"
- "Create an issue for API refactoring, add it to the backend project, assign 8 story points, and add the 'refactor' and 'api' labels"
- "What's the current workload for the mobile team across all active cycles?"
- "Add a Figma design attachment to issue XYZ-123 with the link to our auth flow mockups"
- "Update the attachment on issue ABC-456 to reflect that the external service is now resolved"
- "Find all issues labeled 'bug' and 'frontend' that have more than 3 story points"
- "Show me recent updates on all issues in the authentication project"
- "List all sub-issues under the main authentication epic"
- Create issues with full metadata (assignee, labels, estimates, due dates, projects, cycles)
- Create sub-issues with proper parent-child relationships and sorting
- Update any aspect of existing issues
- Comprehensive search and filtering capabilities
- Associate issues with projects and cycles (sprints)
- Set story point estimates for sprint planning
- Organize issues with labels and priorities
- Track due dates and deadlines
- Assign issues to team members
- Add comments with markdown formatting
- Create and manage attachments to external resources
- Support for OAuth actor authorization (custom usernames/avatars)
- Sub-issue creation and management with custom positioning
- Attachment management with metadata and formatting variables
- Comprehensive search across all issue fields and relationships
- Support for archived issues and advanced filtering
- Install dependencies:
bun install
- Configure Linear API key in
.env
:
LINEAR_API_KEY=your_api_key_here
- Build the server:
bun run build
For development with auto-rebuild:
bun run watch
This server implements comprehensive Linear API functionality including:
- Issues: Full CRUD operations with all metadata fields
- Sub-issues: Parent-child relationships with positioning
- Comments: Rich text comments with custom attribution
- Attachments: External resource linking with metadata
- Search: Advanced filtering and querying capabilities
- Projects: Association and management
- Cycles: Sprint/iteration management
- Labels: Tagging and categorization
- Assignments: User assignment and workload management
- Estimates: Story point tracking for sprint planning
Missing tools that would be valuable to implement:
Implementedlinear_get_projects
- List all projectslinear_create_project
- Create new projectlinear_update_project
- Update project detailslinear_get_project_issues
- Get issues in a specific project
Implementedlinear_get_labels
- List all available labelslinear_create_label
- Create new label
Implementedlinear_get_workflow_states
- List all workflow states (status options)linear_get_team_workflow_states
- Get states for specific team
Implementedlinear_get_cycles
- List cycles (sprints)linear_create_cycle
- Create new cyclelinear_get_cycle_issues
- Get issues in a cycle
linear_upload_file
- Upload file and get URL for attachments
linear_archive_issue
- Archive an issuelinear_unarchive_issue
- Unarchive an issuelinear_duplicate_issue
- Duplicate an issue
Implementedlinear_get_teams
- List all teamslinear_get_team_members
- Get members of a team
Implementedlinear_get_users
- List organization userslinear_get_user
- Get specific user details
linear_create_customer
- Create customer recordslinear_update_customer
- Update customer informationlinear_create_customer_need
- Link customer requests to issues
Available in Linear APIlinear_create_webhook
- Set up webhook endpointsAvailable in Linear APIlinear_list_webhooks
- List existing webhooksAvailable in Linear APIlinear_delete_webhook
- Remove webhook endpoints
Core Issue Management:
Full implementation with all 15+ parameterslinear_create_issue
Full implementation with all 11 parameterslinear_update_issue
Advanced filtering and queryinglinear_search_issues
User assignment querieslinear_get_user_issues
Rich text commentslinear_add_comment
Sub-Issues:
Create sub-issues with parent relationshipsparentId
supportPosition sub-issues within parentsubIssueSortOrder
Issue Metadata:
Assign issues to usersassigneeId
Add/update labels on issueslabels
Story points for sprint planningestimate
Due date trackingdueDate
Associate with projectsprojectId
Associate with cycles/sprintscycleId
Priority levels (0-4)priority
Attachments:
Link external resourceslinear_create_attachment
Update attachment metadatalinear_update_attachment
Discovery Functions:
List all teams for finding team IDslinear_get_teams
List all users for finding user IDslinear_get_users
List workflow states for status IDslinear_get_workflow_states
List all projects for project IDslinear_get_projects
List all labels for label IDslinear_get_labels
List all cycles for cycle IDslinear_get_cycles
OAuth Features:
Custom user attributioncreateAsUser
anddisplayIconUrl
We've now implemented all the essential discovery functions! The remaining TODOs are mainly:
- Creation/management functions for Linear entities (projects, cycles, labels, teams)
- Advanced operations like archiving, file upload, customer management
- Webhook management (the GraphQL API supports these, just need MCP wrappers)
Your Linear MCP server is now production-ready with comprehensive issue management and all the discovery functions needed to use it effectively without manually hunting for IDs.
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.