Linear Integration
STDIOMCP server providing integration with Linear's issue tracking system for LLMs.
MCP server providing integration with Linear's issue tracking system for LLMs.
A Model Context Protocol server for the Linear API.
This server provides integration with Linear's issue tracking system through MCP, allowing LLMs to interact with Linear issues.
To install the Linear MCP server for Claude Desktop automatically via Smithery:
npx @smithery/cli install mcp-server-linearapp --client claude
Create or get a Linear personal API key: https://linear.app/settings/account/security
Add server config to Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json
{ "mcpServers": { "linear": { "command": "npx", "args": ["-y", "mcp-server-linearapp"], "env": { "LINEAR_API_KEY": "your_linear_api_key_here" } } } }
linear_get_viewer
: Get information about the authenticated user
linear_get_user_issues
: Get issues assigned to a user
userId
(string): User ID (omit for authenticated user)includeArchived
(boolean): Include archived issueslimit
(number, default: 50): Max resultslinear_get_user_teams
: Get teams associated with a user
userId
(string): User ID to get teams for (omit for authenticated user)includeArchived
(boolean): Include archived teamslimit
(number, default: 50): Maximum number of teams to returnlinear_get_user_projects
: Get projects associated with a user
userId
(string): User ID to get projects for (omit for authenticated user)includeArchived
(boolean): Include archived projectslimit
(number, default: 50): Maximum number of projects to returnstatus
(string): Filter by project status (e.g., 'completed', 'in progress')linear_get_teams
: Get teams in the organization
includeArchived
(boolean): Include archived teamslimit
(number, default: 50): Maximum number of teams to returnlinear_get_team
: Get details about a specific team
teamId
(string): Team ID to get details forlinear_get_team_issues
: Get issues for a specific team
teamId
(string): Team ID to get issues forincludeArchived
(boolean): Include archived issueslimit
(number, default: 50): Maximum number of issues to returnstatus
(string): Filter by issue statuspriority
(number): Filter by priority levelassigneeId
(string): Filter by assigneelinear_get_projects
: Get projects in the organization
teamId
(string): Filter projects by teamincludeArchived
(boolean): Include archived projectslimit
(number, default: 50): Maximum number of projects to returnstatus
(string): Filter by project statuslinear_get_project
: Get details about a specific project
projectId
(string): Project ID to get details forlinear_get_project_issues
: Get issues for a specific project
projectId
(string): Project ID to get issues forincludeArchived
(boolean): Include archived issueslimit
(number, default: 50): Maximum number of issues to returnstatus
(string): Filter by issue statuspriority
(number): Filter by priority levellinear_create_issue
: Create a new Linear issue
title
(string): Issue titleteamId
(string): Team ID to create issue indescription
(string): Issue description (markdown supported)priority
(number, 0-4): Priority level (1=urgent, 4=low)status
(string): Initial status namelinear_update_issue
: Update existing issues
id
(string): Issue ID to updatetitle
(string): New titledescription
(string): New descriptionpriority
(number, 0-4): New prioritystatus
(string): New status namelinear_search_issues
: Search issues with flexible filtering
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 prioritylimit
(number, default: 10): Max resultslinear_add_comment
: Add comments to issues
issueId
(string): Issue ID to comment onbody
(string): Comment text (markdown supported)createAsUser
(string): Custom usernamedisplayIconUrl
(string): Custom avatar URLlinear_get_labels
: Get labels in the organization
teamId
(string): Filter labels by teamincludeArchived
(boolean): Include archived labelslimit
(number, default: 50): Maximum number of labels to returnlinear_create_label
: Create a new label
name
(string): Label nameteamId
(string): Team ID to create label incolor
(string): Color hex code (e.g., "#FF0000")description
(string): Label descriptionlinear_update_label
: Update an existing label
id
(string): Label ID to updatename
(string): New label namecolor
(string): New color hex codedescription
(string): New descriptionlinear_add_attachment
: Add an attachment to an issue
issueId
(string): Issue ID to add attachment tourl
(string): URL of attachmenttitle
(string): Title of attachmentsubtitle
(string): Subtitle for attachmenticon
(string): Icon URL for attachmentlinear_get_attachments
: Get attachments for an issue
issueId
(string): Issue ID to get attachments forlinear_link_issues
: Create a relationship between issues
issueId
(string): Source issue IDrelatedIssueId
(string): Target issue IDtype
(string): Relationship type (e.g., "blocks", "related", "duplicate")linear_get_issue_relations
: Get relationships for an issue
issueId
(string): Issue ID to get relationships fortype
(string): Filter by relationship typelinear_get_milestones
: Get milestones for a project
projectId
(string): Filter milestones by projectincludeArchived
(boolean): Include archived milestoneslimit
(number, default: 50): Maximum number of milestones to returnlinear_create_milestone
: Create a new milestone
name
(string): Milestone nameprojectId
(string): Project ID to create milestone intargetDate
(string): Target completion date (ISO format)description
(string): Milestone descriptionsortOrder
(number): Position in milestone listlinear_update_milestone
: Update an existing milestone
id
(string): Milestone ID to updatename
(string): New milestone nametargetDate
(string): New target datedescription
(string): New descriptionstatus
(string): New status (e.g., "planned", "inProgress", "completed")linear-issue:///{issueId}
: View individual issue details
linear-team:///{teamId}
: View team details
linear-team:///{teamId}/issues
: View team issues
linear-project:///{projectId}
: View project details
linear-project:///{projectId}/issues
: View project issues
linear-project:///{projectId}/milestones
: View project milestones
linear-user:///{userId}/assigned
: View user's assigned issues
linear-organization:
: View organization info
linear-viewer:
: View current user context
linear-viewer:///teams
: View teams for the authenticated user
linear-viewer:///projects
: View projects for the authenticated user
linear-viewer:///assigned
: View issues assigned to the authenticated user
linear-label:///{labelId}
: View label details
Here are example prompts you can use with Claude Desktop to interact with Linear:
"Create a new bug report for the authentication system" → use linear_create_issue
to create a new issue with appropriate details
"Update the priority of ticket FRONT-123 to urgent" → use linear_update_issue
to modify the priority of an existing issue
"Add a comment to the login page bug explaining the root cause" → use linear_add_comment
to add information to an existing issue
"Show me all my high-priority issues" → use linear_get_user_issues
or linear-viewer:///assigned
to find issues assigned to you with high priority
"Find all in-progress frontend tasks" → use linear_search_issues
to locate frontend-related issues with "in progress" status
"What issues are currently assigned to Sarah?" → use linear_get_user_issues
with Sarah's ID to see her assignments
"What teams am I a member of?" → use linear_get_user_teams
or linear-viewer:///teams
to list all teams the authenticated user belongs to
"Show me the projects I'm leading or contributing to" → use linear_get_user_projects
or linear-viewer:///projects
to get all projects associated with the current user
"What's the current progress on the mobile app project?" → use linear_get_project
to get detailed information about the project including progress
"List all the active projects for the Frontend team" → combine linear_get_team
to find the team ID and linear_get_projects
with team filter to locate active projects
"Give me a summary of recent updates on the billing system issues" → use linear_search_issues
to identify the relevant issues, then linear-issue:///{issueId}
to fetch the issue details
"What's the current workload for the mobile team?" → use linear-team:///{teamId}/issues
or linear_get_team_issues
to analyze issue distribution across the team
"Show me my role and responsibilities in the organization" → use linear_get_viewer
and linear-viewer:///teams
to analyze team memberships and roles
"Create a 'security' label for high-priority security issues" → use linear_create_label
to create a new label with appropriate settings
"What labels are available in the Frontend team?" → use linear_get_labels
with the Frontend team ID to see available categorizations
"Apply the 'needs-documentation' label to all API issues" → use linear_search_issues
to find API-related issues, then update each with linear_update_issue
"Create a milestone for the beta release" → use linear_create_milestone
to set up a project milestone with a target date
"What milestones are upcoming in the mobile app project?" → use linear_get_milestones
with the project ID to view planned delivery points
"Update the status of the API v2 milestone to completed" → use linear_update_milestone
to change milestone status
"Mark issue FRONT-123 as blocking API-456" → use linear_link_issues
to create a blocking relationship between issues
"What issues are being blocked by this bug?" → use linear_get_issue_relations
to find dependencies
"Show me all issues related to the authentication system" → use linear_search_issues
with appropriate filters, then explore relationships with linear_get_issue_relations
npm install
.env
:LINEAR_API_KEY=your_api_key_here
npm run build
For development with auto-rebuild:
npm run watch
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.