How to Use Linear MCP in Cursor
Connect Cursor’s agent to Linear through Linear’s hosted MCP server: the one-click install or an mcp.json entry, the browser sign-in, a read-only connection, which tools to allowlist, and how it differs from Cursor’s own Linear integration.
6 min read
To use Linear in Cursor, add Linear’s hosted MCP server, https://mcp.linear.app/mcp. Linear’s documentation has a one-click link that installs it in Cursor, or you can add the URL yourself to .cursor/mcp.json. Cursor then signs you in to Linear in your browser with OAuth, so there is no key to paste, and its agent can find, create and update issues, projects and comments with your Linear permissions. If you want the agent to read but never write, use https://mcp.linear.app/mcp/readonly instead. Cursor asks before each MCP tool call by default; the rest of the setup is deciding which calls may skip that question.
This guide is about the connection in Cursor. For what the server’s tools cover and where the gaps are, see what the Linear MCP server does; the same setup in the terminal is Linear MCP with Claude Code.
MCP or Cursor’s Linear integration?
Cursor has two different things with Linear in the name, and they are easy to confuse. The MCP server brings Linear into your editor: the agent you are chatting with reads and changes Linear while it works on your code. Cursor’s Linear integration (opens in a new tab) works the other way round: from inside Linear you assign an issue to Cursor or mention @Cursor in a comment, and a Cloud Agent picks it up, works on a repository and reports back in Linear. It is installed by an admin from Cursor’s dashboard. This guide is about the first; the two can be used side by side.
Option 1: the one-click install
- Open Linear’s MCP documentation (opens in a new tab) and follow its Cursor install link, or search for Linear from Cursor’s MCP tools page.
- Cursor opens and prompts you to install the server. Accept.
- Open Customize in Cursor’s sidebar, find Linear under MCPs and follow the sign-in prompt.
- Your browser opens on Linear. Sign in, check which workspace you are authorising and what access is asked for, and approve.
The install link is a Cursor deeplink that carries the same one-line configuration shown below, under the name Linear, so both options end in the same place. The link is quickest for one person; for a team that wants the setup in the repository, use the file.
Option 2: an entry in mcp.json
Cursor reads MCP servers (opens in a new tab) from .cursor/mcp.json in a project and from ~/.cursor/mcp.json in your home folder for every project. A remote server needs only a URL. This is the configuration Linear publishes:
{
"mcpServers": {
"linear": {
"url": "https://mcp.linear.app/mcp"
}
}
}The key, linear, is the server’s name in Cursor and reappears in approval rules, so choose it once. Save the file, open Customize, switch the server on under MCPs and sign in. A project file can be committed; each person still signs in with their own Linear account. If you copied an older setup that uses https://mcp.linear.app/sse, change it: Linear describes the SSE endpoint as a deprecated fallback for clients without streamable HTTP, and Cursor does not need it.
A read-only connection
Linear offers two ways to keep the agent read-only: a separate endpoint that exposes only read tools, or the standard endpoint with only the read OAuth scope granted. In Cursor the endpoint is the simpler of the two, and nothing stops you having both side by side under different names:
{
"mcpServers": {
"linear-readonly": {
"url": "https://mcp.linear.app/mcp/readonly"
},
"linear": {
"url": "https://mcp.linear.app/mcp"
}
}
}Keep linear switched off in Customize most of the time and switch it on when you want the agent to file or update issues. Starting read-only for a week is a sensible default: the agent triages, summarises and drafts, and you make the changes. The wider reasoning is in MCP security best practices.
Approvals: what to let run
Cursor asks before using an MCP tool by default, and you can expand each request to see its arguments. MCP calls follow the same Run Modes (opens in a new tab) as terminal commands, set under Settings, Agents, Approvals & Execution: an allowlist, an auto-review mode where a classifier decides what needs you, or running everything. To pin the allowlist in a file, use permissions.json in ~/.cursor/ or in the project’s .cursor/ folder:
{
"mcpAllowlist": [
"linear-readonly:*"
]
}Entries are server:tool strings, and server:* matches every tool from one server. That wildcard is safe on the read-only server because it has only read tools. Do not use linear:* on the read-write server; list its read tools one by one instead, using the names Customize shows for your connection, since Linear adds tools over time. Cursor’s permissions reference (opens in a new tab) also warns that a list in permissions.json overrides the one in Settings and makes the in-app editor read-only for that list, so keep everything in the file once you start.
Using an API key instead
For machines without a browser, Linear accepts an API key or OAuth token in an Authorization: Bearer header. Linear suggests a key with only the Read permission for restricted access. Cursor can read the value from an environment variable, which keeps it out of the file:
{
"mcpServers": {
"linear": {
"url": "https://mcp.linear.app/mcp",
"headers": {
"Authorization": "Bearer ${env:LINEAR_API_KEY}"
}
}
}
}Set the variable in your shell profile and restart Cursor so it sees it. Never put the key itself in a project mcp.json.
Prompts that fit Cursor
- “Read ENG-231 and its comments, find the code involved, and propose a fix. Do not change the issue yet.”
- “Which of my issues in the current cycle touch files under
src/billing?” - “Create an issue in the Platform team for each TODO in this file, with the file and line in the description.”
- “I fixed ENG-231 in the last commit. Comment with the hash and a one-line summary, and move it to Done.”
Pasting a Linear link into the chat works too: the server can load a Linear resource from its URL. The last two prompts are writes, so they need the read-write server and your approval unless you have allowlisted them.
When something goes wrong
- Open the Output panel and choose MCP Logs from the list. Connection and sign-in errors show there.
- Two Linear workspaces: Linear says each workspace needs its own authentication context. Plan one connection per workspace rather than expecting one sign-in to reach both.
- If you connect through the
mcp-remotebridge rather than Cursor’s own remote support, Linear’s fix for stale sign-ins is to delete~/.mcp-authand connect again. - Answers look thin: ask for narrower queries, such as one team or one cycle, rather than a whole workspace at once.
If the board is what you are after
Linear through MCP lets Cursor’s agent work with your whole Linear account. If your team wants a smaller board the agent joins as a member instead, fenbs connects to Cursor the same way, with one URL in mcp.json and a browser sign-in. The agent holds your role narrowed by the scopes you tick, works across four lanes, To Do, Next Up, In Progress and Completed, and each change it makes is signed as Cursor via your name. See connecting Cursor to fenbs and fenbs vs Linear.
Related
What the tools cover: what the Linear MCP server does. The same client with another tracker: Jira MCP in Cursor. Keeping the agent on task: Cursor rules for AI projects.