mcp-linear
Provides tools for interacting with Linear's API, enabling AI agents to manage issues, comments, teams, workflow states, labels, and users programmatically through the Linear platform.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-linearShow me my open issues in the Engineering team"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-linear
MCP server exposing Linear issue operations. Standalone — no dependency on the built-in Claude Linear MCP.
Issues are addressed by their human identifier (GOV-123). States, teams,
labels, and assignees are given by name; the server resolves them to Linear
UUIDs and returns an error listing valid options when a name does not match.
Tools
Tool | Description |
| Fetch an issue by identifier |
| Issues assigned to the API key's owner |
| Full-text search with team/state/assignee filters |
| Create an issue on a team |
| Update fields on an existing issue |
| Comments on an issue |
| Post a comment |
| Team keys and names |
| Workflow states for a team |
| Labels on a team plus workspace labels (team optional) |
| Active users |
Setup
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
cp .env.example .env
# Edit .env — set LINEAR_API_KEYGet an API key: Linear → Settings → Security & access → Personal API keys. Write operations need a key with write access.
Add to Claude Code
{
"mcpServers": {
"linear": {
"command": "/Users/piuschungath/Workspace/mcp-linear/.venv/bin/mcp-linear",
"env": { "LINEAR_API_KEY": "lin_api_..." }
}
}
}Tests
.venv/bin/pytestAll HTTP is mocked with respx. No API key and no network access are needed.
With mcp-pr-assistant
The two servers compose without importing each other: fetch a ticket with
get_issue, pass its fields to create_pr_from_ticket, then post the PR URL
back with add_comment.
Schema verification
The GraphQL field names in src/mcp_linear/queries.py were verified against
the live Linear API on 2026-08-21, by running the tools' actual query strings
(not copies of them) against a real workspace.
Verified correct:
the
Float!issue-number comparatorteam-scoped labels via
team { labels }the root
issueLabelsconnectionviewer.assignedIssues(orderBy: updatedAt)every field the three mutations send —
IssueCreateInput,IssueUpdateInputandCommentCreateInputall acceptteamId,title,description,stateId,assigneeId,priority,labelIds,issueIdandbodyas used
One divergence was found and fixed:
Full-text search.
issueSearchrejects itsqueryargument as deprecated. Search now usessearchIssues(term: ...), which returnsIssueSearchPayloadwhose nodes areIssueSearchResult, notIssue— so it cannot spread theIssueFieldsfragment.queries.pydeclares a second fragment,SearchFields, with the identical selection on that type. Introspection confirmedIssueSearchResultcarries every fieldIssueFieldsselects. If you change one fragment, change the other.
One thing remains unconfirmed:
Workspace labels. The root
issueLabelsconnection resolves, but whether it returns workspace-wide labels only — or also team-scoped labels belonging to other teams — was not established. Label resolution consults a team's own labels first, so a team label always wins over a same-named workspace one.
To re-verify after a Linear schema change:
LINEAR_API_KEY=lin_api_... .venv/bin/python scripts/probe_schema.py <team-key> <issue-number> <issue-uuid>It takes a team key, an existing issue number on that team, and that issue's UUID (and prompts once, interactively, for a team UUID printed by its first probe). The probe is read-only: the mutations are checked by introspecting their input types, never by writing to your tracker.
Notes
Linear personal API keys are sent as
Authorization: <key>with noBearerprefix.Linear reports most failures as HTTP 200 with a top-level
errorsarray, so the client checks the response body rather than the status code.Team, state, label, and user metadata is cached for the lifetime of the server process. Restart the server after changing a team's workflow states or labels.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Shortcut project management. Create, update, search stories and manage workflows.
Connect to Atlassian Jira, Confluence, and Compass to search, create, and manage your work.
Manage projects, tasks, time tracking, and team collaboration through natural language.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pius-grainger/mcp-linear'
If you have feedback or need assistance with the MCP directory API, please join our Discord server