# Linear MCP connector

The Linear connector lets Claude, ChatGPT, Cursor and the Elaichi Agent read your Linear issues, projects, milestones, releases and status updates as you, with every request logged and nothing broader than your own Linear access.

Source: https://elaichi.ai/connectors/linear/

## Facts

| | |
| --- | --- |
| Application | Linear |
| Category | Ticketing |
| AI tools | 68 |
| Authentication | Connects over OAuth |
| Bring your own OAuth app | No |
| Native MCP | Yes. Linear builds and runs this MCP server. Elaichi adds sign-in, access controls and an audit log on top |
| Support for its tools | linear.app/contact |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. Connected tools are never listed one by one, however few there are. The endpoint advertises `search_tools` and `execute_tool` instead |

## What you can ask once Linear is connected

- What is the status of the checkout bug issue?
- Summarize this week's status updates for the mobile app project
- Who is on triage for the platform team today?

## Connect Linear in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Linear.
2. Optionally set Share with, then press Connect.
3. Approve it in Linear. Linear's own window opens. Whoever approves it decides what this connection can reach.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Linear tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Linear MCP connector for Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Linear MCP connector for ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Linear MCP connector for Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Linear to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Linear tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Linear through Elaichi

### Check the bug a customer is asking about

Support. Ask for the Linear issue a customer keeps writing in about and get its current status, the latest comments and any attached screenshots, without leaving the conversation.

### See where a project stands before the review

Product. Pull a Linear project, its milestones and its recent status updates into one short readout so you walk into the weekly review already caught up.

### Find out who is on triage today

Engineering. Ask who holds triage responsibility for a Linear team and what notifications are waiting, then hand off cleanly at the start of the day.

### Pull release notes before an announcement

Marketing. Ask for the latest Linear release and its release notes, then draft the changelog post or customer email from what actually shipped.

### Attach the customer's screenshot to the issue

Customer success. Upload the file a customer sent and attach it to the right Linear issue so the engineer sees exactly what the customer saw.

### Catch up on a week of status updates

Operations. Ask for the status updates and documents across the Linear projects you follow and get a plain summary of what moved, what slipped and what is blocked.

## Elaichi vs Zapier MCP vs Composio for Linear

All three can connect Linear to an AI assistant, and all three have admin controls. They differ in where access lives and how you pay.

| What to check | Elaichi | Zapier MCP | Composio |
| --- | --- | --- | --- |
| Where the AI connects | One address for the whole organization. Endpoint: https://api.elaichi.ai/mcp | A server per member, created at sign-in. | An MCP endpoint per team, or an SDK. |
| Control over Linear tools | Allow or restrict single Linear tools, per role or user. | App and action restrictions on the account. | Role permissions, down to the action. |
| Record of calls | One audit entry per Linear call. | A History tab of tool calls. | A log of every tool call. |
| Single sign-on | SAML or OIDC, plus SCIM, on Gold. | SAML on Enterprise. | SAML and OIDC on Enterprise. |
| Price | $15 per user per month. | 2 tasks per successful call. | Billed per tool call. |

Sources: Zapier MCP [docs](https://docs.zapier.com/mcp/get-started/quickstart), [security](https://docs.zapier.com/mcp/manage/security), [usage](https://docs.zapier.com/mcp/features/usage); Composio [docs](https://docs.composio.dev/docs/composio-connect), [gateway](https://composio.dev/mcp-gateway), [enterprise](https://composio.dev/enterprise), [pricing](https://composio.dev/pricing). Checked September 2026.

Longer take: [Zapier MCP alternative](/blog/zapier-mcp-alternative/) and [when you don't need an MCP gateway](/blog/when-you-dont-need-an-mcp-gateway/).

## Frequently asked questions

### How do I connect Linear to Claude?

Connect Linear inside Elaichi first, which opens Linear's own sign-in screen where you approve access as yourself, with no OAuth application to register and no client ID or secret to generate. Then in Claude go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. From that point Claude can read your Linear issues, projects and releases as you.

### Does Linear work with ChatGPT and Cursor as well as Claude?

Yes. Once Linear is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, the Elaichi Agent and any other MCP client. You connect Linear once and every client you use picks it up.

### What can an AI agent actually do with my Linear data?

With Linear connected, an agent can look up an issue and its status, read a project with its milestones and status updates, pull a release and its release notes, open a document or template, check who is on triage and list your notifications. It can also attach an uploaded file to an issue and remove old comments or attachments where you allow it. Short, concrete asks work best, such as the issue number or project name rather than a long paragraph.

### Does connecting Linear give the AI access to every team and project?

No. Every request runs as the person who signed in to Linear, so the agent sees only the Linear teams, projects and issues that person can already open. Elaichi can narrow that further with roles and restrictions, but it never widens what Linear itself allows.

### Can my team share one Linear connection?

Yes. One person connects Linear in Elaichi and shares the connection with a team, and nobody else ever handles a credential. Each teammate still signs in to Elaichi as themselves, so every Linear call in the audit log carries their own name.

### Can I stop an agent from deleting comments or attachments in Linear?

Yes. Restrictions in Elaichi apply per action, so you can allow reading Linear issues and projects while blocking deletion of comments, attachments or status updates. A restricted action is never advertised to the AI client at all, so no prompt can reach it.

### What happens to a Linear connection when someone leaves?

Offboarding a person in Elaichi ends their Linear access through every connected client at once. A Linear connection that was shared with a team keeps working for everyone else on that team. If you disconnect Linear in Elaichi, it disappears from Claude, ChatGPT, Cursor and every other client in one step.

### Does the Linear MCP connector work with Gemini, Codex, Claude Code or other MCP clients?

Yes. Linear is reached over the same MCP endpoint every client uses, so anything that speaks MCP can call it — Gemini, Codex, Claude Code, Windsurf, Cline, Zed and OpenCode among them — alongside Claude, ChatGPT, Cursor, and the Elaichi Agent. The tools on offer and the access behind them are identical whichever client asks. Only the setup screen differs.

### Is Elaichi an alternative to Zapier MCP for Linear?

Yes. Both let Claude, ChatGPT or Cursor use Linear. Zapier MCP fits a team that already automates in Zapier, since each person signs in and acts as themselves in that account. Elaichi fits when IT wants one address for the whole company, per-tool rules by role, and a record of every Linear call.

### How is Elaichi different from Composio for Linear?

Composio gives AI agents tools and sign-in handling across 1,000+ apps, for developers building agents or people using an assistant, billed per tool call. Elaichi gives a company's own people governed access to Linear: one address, restrictions per role or user, and $15 per user per month. Both have role permissions and a log of every call.

## All 68 Linear tools

Every tool below is callable through https://api.elaichi.ai/mcp once Linear is connected, subject to the toolbox it is in and the restrictions on the caller.

- **Create attachment (deprecated)** (Create). Deprecated fallback for tiny files only. Accepts base64 file content, verifies SHA-256 checksum, and uploads it through the MCP worker.
Prefer `prepare_attachment_upload` plus direct PUT plus `create_attachment_from_upload`.

CRITICAL: Do not print base64Content and then copy…
- **Create attachment from upload** (Create). Link an already-uploaded Linear assetUrl to an existing issue as an attachment.

Use this only after:
1. prepare_attachment_upload returned an assetUrl and uploadRequest.
2. The client successfully PUT raw file bytes to uploadRequest.url.

This tool does not upload file…
- **Create issue label (deprecated)** (Create). Create a new Linear issue label. Deprecated: use `save_issue_label`, which can also update labels.
- **Delete attachment** (Delete). Delete an attachment by ID
- **Delete comment** (Delete). Delete a Linear comment. Inline description comments (those with non-null `quotedText`) anchor a mark in the editor, so their root cannot be deleted — delete the replies individually or resolve the thread instead.
- **Delete diff comment** (Delete). Delete a comment or persisted draft from a Linear diff
- **Delete status update** (Delete). Delete (archive) a project or initiative status update.
- **Extract images** (Action). Extract and fetch images from markdown content. Use this to view screenshots, diagrams, or other images embedded in Linear issues, comments, or documents. Pass the markdown content (e.g., issue description) and receive the images as viewable data.
- **Get agent skill** (Get). Retrieve a Linear Agent skill by ID, including its full markdown instructions.
- **Get attachment** (Get). Retrieve an issue attachment by ID. Use format=url to get its title and download URL without fetching the file content. Linear upload URLs are signed for five minutes; call again to refresh. External URLs are returned unchanged. Files embedded in comments have no issue…
- **Get diff** (Get). Exact lookup for a Linear diff. Use with review URLs, GitHub PR URLs, Linear full identifiers, UUIDs, or slugs.
- **Get diff threads** (Get). Exact lookup for diff threads and the authenticated user's drafts. Use with review URLs, GitHub PR URLs, Linear full identifiers, UUIDs, or slugs.
- **Get document** (Get). Retrieve a Linear document by ID or slug
- **Get issue** (Get). Retrieve detailed information about an issue by ID, including attachments, git branch name, and active Triage Intelligence suggestions when the issue is in triage. A nonempty fields selection overrides the include options; request optional fields directly in fields.
- **Get issue status** (Get). Retrieve detailed information about an issue status in Linear by name or ID
- **Get milestone** (Get). Retrieve details of a specific milestone by ID or name
- **Get notifications** (Get). Get a page of notifications from the authenticated user's Linear inbox.
- **Get project** (Get). Retrieve details of a specific project in Linear
- **Get release** (Get). Retrieve details of a release by ID or slug.
- **Get release notes** (Get). Retrieve release notes by ID or slug, including markdown content.
- **Get status updates** (Get). List or get project/initiative status updates. Pass `id` to get a specific update, or filter to list.
- **Get team** (Get). Retrieve details of a specific Linear team, including its parent ID and hierarchy name. Use list_teams with parentTeam or ancestorTeam to find its sub-teams
- **Get template** (Get). Retrieve a Linear template by ID or name: the content it pre-fills, the ids it applies, its sub-issues, and its form fields. Pass the template to save_issue or save_project to apply it. References come back as ids, so read a name with the matching tool when you need one. A…
- **Get triage responsibility** (Get). Retrieve who is responsible for a team's triage: the person on triage now, what happens when an issue enters triage, and the upcoming shifts of the team's triage rotation. Pass `user` to get only that person's shifts, for example to find when their next triage duty starts,…
- **Get user** (Get). Retrieve details of a specific Linear user
- **Get workspace** (Get). Retrieve the connected Linear workspace
- **List agent skills** (List). List Linear Agent skills available to the authenticated user.
- **List comments** (List). List comments on a Linear issue, project, initiative, document, project milestone, or project/initiative status update. Provide exactly one of `issueId`, `projectId`, `initiativeId`, `documentId`, `milestoneId`, or `statusUpdateId`. For issues, projects, and initiatives this…
- **List custom views** (List). Find saved issue, project, and initiative views accessible to the user, including personal, workspace, and team views. Excludes archived views and views scoped to a project or initiative. Returns view metadata, not the records matching its filters.
- **List cycles** (List). Retrieve cycles for a specific Linear team
- **List diffs** (List). List Linear diff pull requests visible to the authenticated user
- **List documents** (List). List documents in the user's Linear workspace
- **List issue labels** (List). List available issue labels in a Linear workspace or team. A retired label carries `retiredAt` and cannot be applied to new issues.
- **List issue statuses** (List). List available issue statuses in a Linear team
- **List issues** (List). List issues in the user's Linear workspace, including active Triage Intelligence suggestions for issues in triage. For issues assigned to me, use "me" as the assignee. For issues created by me, use "me" as the creator. Use "null" for no assignee.
- **List project milestones** (List). List all milestones in a Linear project
- **List project labels** (List). List available project labels in a Linear workspace or team. Returns workspace labels by default; pass `team` to also include that team's labels. A team-scoped label carries a `team` field; different teams can hold same-named labels, so check it before acting on an ID. A…
- **List projects** (List). List projects in the user's Linear workspace
- **List release notes** (List). List release notes in the workspace, optionally filtered by pipeline or covered release.
- **List release pipelines** (List). List release pipelines in the workspace.
- **List releases** (List). List releases in the workspace, with optional filtering by pipeline, stage, version, and text.
- **List teams** (List). List teams in the user's Linear workspace, including their parent IDs and hierarchy names
- **List templates** (List). List the Linear issue, project, and document templates available to the authenticated user. Use this to find the template a team expects, then call get_template for its content.
- **List users** (List). Retrieve users in the Linear workspace
- **Mark notification** (Action). Mark a Linear inbox notification as read or unread, or snooze or unsnooze it.
- **Merge diff** (Merge). Merge a Linear diff or add it to the repository's merge queue
- **Prepare attachment upload** (Upload). Prepare a direct Linear file upload for an existing issue.

Workflow:
1. Call this tool with issue, filename, contentType, and size.
2. Upload raw bytes with PUT to uploadRequest.url outside MCP.
3. All headers in uploadRequest.headers are part of the signed request, so send…
- **Resolve diff thread** (Action). Resolve or reopen a top-level comment thread on a Linear diff
- **Restore issue label** (Restore). Restore a retired Linear issue label, making it available for use on issues again. Restoring a label group also restores every child label, including any that were retired separately.
- **Restore project label** (Restore). Restore a retired Linear project label, making it available for use on projects again. Restoring a label group also restores every child label, including any that were retired separately.
- ...and 18 more tools. Call `tools/list` via the MCP endpoint, or see the full catalog via the API, for the complete set.
