All MCP servers

Linear MCP server

Issues, projects and comments in your Linear workspace, through Linear's hosted MCP server.

How it connects

New to MCP? What is an MCP server?

Runs on
Linear's own MCP endpoint
Connects with
Your Linear account, connected once for your org
Category
Productivity

Checked October 16, 2026 against Linear's hosted server (mcp.linear.app) as listed on Oct 16, 2026

What it does

Linear hosts this server at https://mcp.linear.app/mcp. It covers far more than issues: an agent can also run projects and milestones, write documents and status updates, manage labels and releases, and review and merge pull requests through Linear's diffs. Every call acts as the Linear user who signed in.

Tools

The hosted server listed 68 tools to a connected client on Oct 16, 2026. The save_* tools both create and update: called without an id they create, and with one they edit.

Issues and triage

ToolWhat it doesReads or changes
list_issuesLists issues with filters.Reads
get_issueGets one issue in full.Reads
save_issueCreates an issue, or updates one: title, description, state, assignee, priority and so on.Changes
list_issue_statusesLists a team's workflow states.Reads
get_issue_statusGets one workflow state by name or ID.Reads
share_issueShares an issue with a workspace user who cannot otherwise see it.Changes
unshare_issueRemoves that shared access.Changes
list_cyclesLists a team's cycles.Reads
list_custom_viewsLists saved custom views.Reads
list_templatesLists templates.Reads
get_templateGets one template.Reads
get_triage_responsibilityShows who is on triage for a team now and the upcoming rotation shifts.Reads

Labels

ToolWhat it doesReads or changes
list_issue_labelsLists issue labels.Reads
save_issue_labelCreates or updates an issue label.Changes
create_issue_labelCreates an issue label. Deprecated in favour of save_issue_label.Changes
retire_issue_labelRetires a label so it can't be applied to new issues. Retiring a group retires its children.Changes
restore_issue_labelBrings a retired issue label back.Changes
list_project_labelsLists project labels.Reads
save_project_labelCreates or updates a project label.Changes
retire_project_labelRetires a project label.Changes
restore_project_labelBrings a retired project label back.Changes

Projects, milestones and status updates

ToolWhat it doesReads or changes
list_projectsLists projects.Reads
get_projectGets one project.Reads
save_projectCreates or updates a project.Changes
list_milestonesLists a project's milestones.Reads
get_milestoneGets one milestone.Reads
save_milestoneCreates or updates a milestone.Changes
get_status_updatesGets project or initiative status updates.Reads
save_status_updatePosts or edits a project or initiative status update.Changes
delete_status_updateDeletes (archives) a status update.Changes

Documents and comments

ToolWhat it doesReads or changes
list_documentsLists documents.Reads
get_documentGets one document.Reads
save_documentCreates or updates a document.Changes
list_commentsLists comments.Reads
save_commentPosts or edits a comment.Changes
delete_commentDeletes a comment.Changes

Attachments and images

ToolWhat it doesReads or changes
get_attachmentGets an attachment.Reads
prepare_attachment_uploadStarts a file upload for an attachment.Changes
create_attachment_from_uploadAttaches an uploaded file to an issue.Changes
create_attachmentAttaches a base64 file. A deprecated fallback.Changes
delete_attachmentDeletes an attachment.Changes
extract_imagesFetches the images embedded in issue, comment or document Markdown so the agent can see them.Reads

Releases

ToolWhat it doesReads or changes
list_release_pipelinesLists release pipelines.Reads
list_releasesLists releases.Reads
get_releaseGets one release.Reads
save_releaseCreates or updates a release, including moving it to another pipeline stage.Changes
list_release_notesLists release notes.Reads
get_release_noteGets one set of release notes.Reads
save_release_noteCreates or edits release notes.Changes

Diffs and code review

Linear's diffs are pull requests shown in Linear. These tools accept a Linear review URL or a GitHub PR URL.

ToolWhat it doesReads or changes
list_diffsLists pull requests visible to the user.Reads
get_diffGets one pull request with its reviewers.Reads
get_diff_threadsGets the review threads on a pull request.Reads
update_diffChanges a pull request's title, description, reviewers or issue links, or closes, reopens or drafts it.Changes
save_diff_commentPosts or edits a review comment.Changes
delete_diff_commentDeletes a review comment.Changes
resolve_diff_threadResolves a review thread.Changes
submit_diff_reviewApproves a pull request or requests changes.Changes
merge_diffMerges a pull request, or adds it to the merge queue.Changes

Workspace, people and notifications

ToolWhat it doesReads or changes
get_workspaceGets workspace details.Reads
list_teamsLists teams.Reads
get_teamGets one team.Reads
list_usersLists workspace users.Reads
get_userGets one user.Reads
get_notificationsReads the signed-in user's notification inbox.Reads
mark_notificationChanges the state of a notification in the user's inbox, such as marking it read.Changes
list_agent_skillsLists Linear Agent skills.Reads
get_agent_skillGets a Linear Agent skill with its full instructions.Reads
search_documentationSearches Linear's own help docs.Reads

Set it up

Directly

Claude Code, using the command from Linear's docs:

bash
claude mcp add --transport http linear-server https://mcp.linear.app/mcp

Run /mcp in a session to sign in. In Cursor, add the URL to ~/.cursor/mcp.json, or use the install link on Linear's page:

json
{
  "mcpServers": {
    "linear": {
      "url": "https://mcp.linear.app/mcp"
    }
  }
}

Linear offers a read-only endpoint, https://mcp.linear.app/mcp/readonly, that exposes only the read tools. You can also skip OAuth and send a Linear API key or OAuth token as Authorization: Bearer <token>. A key created with only the Read permission gives you a read-only connection. Each Linear workspace needs its own sign-in. The general client steps are in How to add MCP servers to Claude Code and How to set up MCP servers in Cursor.

Through Statio

Install Linear from the catalog, press Connect and approve on Linear's page. One person with permission to manage credentials connects it for the organization, and Statio refreshes the tokens before they expire. Then grant tools under Permissions to a person, a team or an agent. A team grant gives every member the whole server, so grant single tools to a person or agent when you want only some of them.

The desktop app writes the client config. By hand, point Cursor at http://127.0.0.1:7777/linear/mcp, using the server name from your dashboard, and for Claude Code run mcphub config claude-code. A non-interactive agent signs in with its own client ID and secret, which Connect a client describes. If nothing appears, start a fresh session and then work through How to debug an MCP server that won't connect.

What to hold back

A Linear connection is easy to think of as "the issue tracker". It also carries code review and merge rights over your GitHub pull requests, release management, and every team the user can see. Decide per agent.

A triage bot needs list_issues, get_issue, save_issue, save_comment, the label and status reads, and maybe get_triage_responsibility. Keep these from it:

  • share_issue gives a person access to an issue they could not otherwise see. An agent following text in a bug report ("loop in alex@...") can expose an issue from a private team.
  • save_status_update posts a project update that stakeholders read as the team's word. delete_status_update and delete_comment remove history.
  • retire_issue_label on a label group retires every child label, which breaks any triage filter built on those labels.
  • save_project, save_milestone and save_release move dates and stages on plans other people rely on.

A coding agent that picks up issues and opens pull requests should read diffs, and maybe post review comments. Hold back:

  • merge_diff. It merges the pull request in your repository, or queues the merge. An agent that wrote the change and then merges it has skipped review entirely.
  • submit_diff_review. An agent approving its own pull request is the same problem with an extra step.
  • update_diff with its close and reopen actions, if you'd rather a person decides when a PR is abandoned.

get_notifications and mark_notification act on the connecting user's personal inbox. A shared agent identity marking things read hides them from the person who owns that inbox. Issue descriptions and comments are also untrusted input: anyone who can file an issue can write instructions an agent will read, which is why the write grants above matter. MCP permissions explains how per-tool grants work in Statio.

Questions

Yes. Linear runs it at https://mcp.linear.app/mcp with OAuth 2.1 and dynamic client registration, so you don't register an app. A deprecated SSE endpoint at https://mcp.linear.app/sse remains for clients without Streamable HTTP.

Yes, three ways: connect to https://mcp.linear.app/mcp/readonly, request only the read OAuth scope, or use an API key with only the Read permission.

Yes. Send the key, or an existing OAuth token, in an Authorization: Bearer header. Linear suggests this for app users, restricted read-only keys and existing OAuth apps.

What Statio adds

  • You choose which of its tools each agent may call. A tool you hold back is removed from that agent's tool list, and a call to it is refused.
  • Agents get a Statio token, never the Linear one.
  • Every call is recorded with the agent that made it, when, how long it took and whether it succeeded.

Lock down your first tool in minutes.

Three MCP servers, one of them hosted, and 10,000 calls a month, free and without a card. If you outgrow it the next plan is $19.

Two steps: create your account, then install the desktop app on each machine that runs an AI client.