Connect Your AI Agent with Linear (API key) for Slack

Integrate Linear (API key) MCP server into your Slack workspace for instant access to your AI agent.

Back to MCP Servers
Linear (API key)
Linear (API key)
Linear helps streamline software projects, sprints, tasks, and bug tracking. It's built for high-performance teams.

Categories

Productivity

Available Tools

Tools that your AI agent can use through this MCP server to interact with Linear (API key)

Update Issue

Updates an existing Linear issue. All fields are optional; only provided fields are changed — prior values are preserved for any omitted field. Use Get Teams for team IDs, List Workflow States for state IDs, List Users for assignee IDs, List Labels for label IDs, and Search Issues for the issue ID. Example: issueId: "iss_01abc", stateId: "state_done_xyz" → returns {success: true, issue: {id: "iss_01abc", identifier: "ENG-42", state: {name: "Done"}}}. See the documentation.

Update Initiative

Update an existing initiative in Linear. All fields are optional; only provided fields are updated. Use List Initiatives to find the initiative ID. Example: initiativeId: "b2c3d4e5-0000-0000-0000-000000000002", status: "Completed" → returns {success: true, initiative: {id: "b2c3d4e5-...", name: "Q4 Platform Upgrade", status: "Completed"}}. See the documentation

Search Issues

Search Linear issues by team, project, assignee, labels, state, or text query. Returns up to 200 matching issues (paginated internally). Use Get Teams for team IDs, List Projects for project IDs, List Workflow States for state IDs, List Users for assignee IDs, and List Labels for label names. Use the optional fields prop to narrow the response to only the keys you need (reduces context size for large result sets). Example: teamId: "9d1c3f7e-...", query: "login redirect" → returns [{id: "iss_01", identifier: "ENG-42", title: "Fix login redirect on mobile", state: {name: "In Progress"}}]. See the documentation.

Remove Label from Issue

Remove a label from an issue in Linear. The label can be re-added at any time, so this operation is reversible. Use Search Issues to find the issue ID, and List Labels to find the label ID. Example: issueId: "iss_01abc", labelId: "lbl_bug123" → removes the label and returns {success: true}. See the documentation

List Workflow States

List workflow states (statuses) in Linear. Returns state IDs, names, types (e.g. backlog, started, completed, cancelled), and team info. Optionally filter by team (use the Get Teams action to discover valid team IDs, e.g. 4e80f53c-da9e-4dee-b14e-2cab3e2e8716). Example: teamId: "9d1c3f7e-..." → returns {nodes: [{id: "state_done_xyz", name: "Done", type: "completed"}, {id: "state_prog_abc", name: "In Progress", type: "started"}], pageInfo: {endCursor: "...", hasNextPage: false}}. See the documentation.

List Views

List saved custom views in Linear. Use this to discover valid view IDs for the Get View Issues action. Custom views combine filters (team, assignee, state, labels, etc.) into a reusable saved search. Optionally filter by team. Example: teamId: "9d1c3f7e-..." → returns {nodes: [{id: "cv1abc", name: "My Open Issues", teamId: "9d1c3f7e-..."}], pageInfo: {endCursor: "...", hasNextPage: false}}. See the documentation

List Users

List members of the Linear workspace. Use this to discover valid user IDs for assigning issues or initiatives. Returns {nodes, pageInfo}, where each node includes id, name, and email. If pageInfo.hasNextPage is true, call again with after set to pageInfo.endCursor to fetch more. Example: call with no filters to list all members → returns {nodes: [{id: "abc123", name: "Alice", email: "[email protected]"}], pageInfo: {endCursor: "abc123", hasNextPage: false}}. See the documentation.

List Projects

List projects in Linear, optionally filtered by team. Returns project objects including id, name, state, priority, and progress history. Use Get Teams to find team IDs. Use the optional fields prop to narrow the response when only specific fields are needed (reduces context for large result sets). Example: teamId: "9d1c3f7e-..." → returns {nodes: [{id: "proj_01", name: "Mobile App v2", state: {name: "In Progress"}}], pageInfo: {endCursor: "...", hasNextPage: false}}. See the documentation.

List Project Updates

List project updates in Linear, optionally scoped to a single project. Use List Projects to find a project ID. Returns update objects with id, body, health, createdAt, and author. Example: projectId: "a1b2c3d4-0000-0000-0000-000000000001", first: 10 → returns {nodes: [{id: "pu_01xyz", body: "Q3 milestone complete.", health: "onTrack"}], pageInfo: {endCursor: "...", hasNextPage: false}}. See the documentation.

List Project Statuses

List available project statuses in the Linear workspace. Use this to discover valid status IDs when creating or updating projects. Returns {nodes, pageInfo}, where each node includes id, name, and type. If pageInfo.hasNextPage is true, call again with after set to pageInfo.endCursor to fetch more. Example: returns {nodes: [{id: "5a1b2c3d-0000-0000-0000-000000000006", name: "Planned", type: "planned"}], pageInfo: {endCursor: "5a1b2c3d-0000-0000-0000-000000000006", hasNextPage: false}}. See the documentation.

List Project Labels

List available project labels in the Linear workspace. Use this to discover valid label IDs when creating or updating projects. Returns {nodes, pageInfo}, where each node includes id, name, and optional color. If pageInfo.hasNextPage is true, call again with after set to pageInfo.endCursor to fetch more. Example: returns {nodes: [{id: "9a1b2c3d-0000-0000-0000-000000000007", name: "Frontend", color: "#0ea5e9"}], pageInfo: {endCursor: "9a1b2c3d-0000-0000-0000-000000000007", hasNextPage: false}}. See the documentation.

List Labels

List issue labels in the Linear workspace. Use this to discover valid label names and IDs for creating or filtering issues. Returns label objects with id, name, and color. Example: first: 50 → returns {nodes: [{id: "lbl_bug123", name: "Bug", color: "#ef4444"}, {id: "lbl_fe456", name: "Frontend", color: "#0ea5e9"}], pageInfo: {endCursor: "...", hasNextPage: false}}. See the documentation.

List Initiatives

List initiatives in Linear, optionally filtered by name or status. Use this to discover valid initiative IDs for creating updates or linking projects. Returns initiative objects with id, name, status, and targetDate. Example: status: "Active" → returns {nodes: [{id: "ini_01abc", name: "Q4 Platform Upgrade", status: "Active"}], pageInfo: {endCursor: "...", hasNextPage: false}}. See the documentation

List Initiative Updates

List initiative updates in Linear, optionally scoped to a single initiative. Use List Initiatives to find an initiative ID. Returns update objects with id, body, health, createdAt, and author. Example: initiativeId: "b2c3d4e5-0000-0000-0000-000000000002", first: 10 → returns {nodes: [{id: "iu_01xyz", body: "Two projects completed.", health: "onTrack"}], pageInfo: {endCursor: "...", hasNextPage: false}}. See the documentation.

List Comments

List comments in Linear, optionally filtered by issue or body text. Returns comment objects with id, body, createdAt, and author details. Supports pagination via first/after. Use Search Issues to find an issue ID to filter by. Example: issueId: "iss_01abc", body: "PR #" → returns {nodes: [{id: "cmt_xyz", body: "Fixed in PR #123.", createdAt: "2024-01-15T10:00:00Z"}], pageInfo: {endCursor: "...", hasNextPage: false}}. See the documentation

Get View Issues

Retrieve issues filtered by a saved custom view in Linear. Custom views encapsulate pre-configured filters (team, state, assignee, labels, etc.). Use List Views to find the view ID. Use the optional fields prop to narrow the response to only the keys you need (reduces context for large result sets). Example: viewId: "cv1b2c3d4-..." → returns {nodes: [{id: "iss_01", identifier: "ENG-42", title: "Fix login", state: {name: "In Progress"}}], pageInfo: {endCursor: "...", hasNextPage: false}}. See the documentation

Get Teams

Retrieves teams in your Linear workspace. Returns team objects with id, name, key, and more (including internal settings fields). Use this to discover valid team IDs (UUIDs) for creating or filtering issues and projects. Supports pagination: pass after with the previous response's pageInfo.endCursor to load the next page. Use the optional fields prop to narrow the response to only the keys you need (reduces context for large result sets). Example: call with limit: 50 → returns {nodes: [{id: "9d1c3f7e-...", name: "Engineering", key: "ENG"}, ...], pageInfo: {endCursor: "...", hasNextPage: true}}. See the documentation.

Get Project Update

Retrieve a single project update by its ID in Linear. Use List Project Updates first to obtain a valid update ID. Returns the full update including id, body, health, createdAt, and author. Example: projectUpdateId: "7df5e7f9-a357-4539-ae94-4a004fec635f" → returns {id: "7df5e7f9-a357-4539-ae94-4a004fec635f", body: "Q3 milestone complete.", health: "onTrack", createdAt: "2024-01-15T10:00:00Z"}. See the documentation.

Get Issue

Retrieve a single Linear issue by its UUID or human-readable identifier. Provide exactly one of issueId (UUID) or issueIdentifier (e.g. ENG-42). Returns complete issue details: title, description, state, assignee, team, project, labels, and timestamps. Use the optional fields prop to narrow the response to only the keys you need (reduces context for large result sets). Example: issueIdentifier: "ENG-42" → returns {id: "iss_01abc", identifier: "ENG-42", title: "Fix login redirect", state: {name: "In Progress"}}. See the documentation.

Get Initiative Update

Retrieve a single initiative update by its ID in Linear. Use List Initiative Updates first to obtain a valid update ID. Returns the full update including id, body, health, createdAt, and author. Example: initiativeUpdateId: "530f4366-88ab-4866-a44b-c2326728c32d" → returns {id: "530f4366-88ab-4866-a44b-c2326728c32d", body: "Two projects completed.", health: "onTrack", createdAt: "2024-01-15T10:00:00Z"}. See the documentation.

Create Project

Create a new project in Linear to track a body of work. Projects group related issues within a team. Use Get Teams for team IDs, List Project Statuses to find status IDs, List Users for member IDs, and List Project Labels for label IDs. Example: teamId: "9d1c3f7e-...", projectName: "Mobile App v2", statusId: "s2abc" → returns {success: true, project: {id: "proj_01", name: "Mobile App v2"}}. See the documentation.

Create Project Update

Post a status update on a Linear project. Use List Projects first to obtain the project ID. Updates appear in the project's activity feed. Example: projectId: "a1b2c3d4-0000-0000-0000-000000000001", body: "Q3 milestone complete; all P0 issues resolved.", health: "onTrack" → returns {success: true, projectUpdate: {id: "pu_01xyz"}}. See the documentation.

Create Issue

Creates a new issue in Linear. Requires a team ID and title; all other fields are optional. Use Get Teams to discover valid team IDs, List Workflow States to find state IDs, List Users to find assignee IDs, and List Labels to find label IDs. Example: teamId: "9d1c3f7e-2b48-4c6a-9f1e-5a7b8c9d0e1f", title: "Fix login redirect on mobile" → returns {success: true, issue: {id: "iss_01", identifier: "ENG-42", title: "Fix login redirect on mobile"}}. See the documentation.

Create Initiative

Create a new initiative in Linear to track a cross-team strategic goal. Initiatives group multiple projects toward a shared objective. Use List Users to find a valid owner ID. Example: initiativeName: "Q4 Platform Upgrade", status: "Active", targetDate: "2024-12-31" → returns {success: true, initiative: {id: "ini_01abc", name: "Q4 Platform Upgrade"}}. See the documentation

Create Initiative Update

Post a status update on a Linear initiative. Use List Initiatives first to obtain the initiative ID. Updates appear in the initiative's activity feed and can include a health status. Example: initiativeId: "b2c3d4e5-0000-0000-0000-000000000002", body: "Two projects completed; on track for Q4.", health: "onTrack" → returns {success: true, initiativeUpdate: {id: "iu_01xyz"}}. See the documentation.

Create Comment

Add a comment to a Linear issue. Use Search Issues to find the target issue ID first. Returns the new comment's ID and body. Example: issueId: "iss_01abc", body: "Fixed in PR #123." → returns {success: true, comment: {id: "cmt_xyz", body: "Fixed in PR #123."}}. See the documentation