Linear Issue Tracker
STDIOMCP server implementation providing access to Linear's issue tracking system through standardized interface.
MCP server implementation providing access to Linear's issue tracking system through standardized interface.
A Model Context Protocol (MCP) server implementation that provides access to Linear's issue tracking system through a standardized interface.
LINEAR_API_KEY=your_api_key # Your Linear API token
git clone [repository-url] cd linear-mcp
bun install bun run build
Edit the appropriate configuration file:
macOS:
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
~/Library/Application Support/Claude/claude_desktop_config.json
Windows:
%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
%APPDATA%\Claude Desktop\claude_desktop_config.json
Linux:
~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
Add the following configuration under the mcpServers
object:
{ "mcpServers": { "linear": { "command": "node", "args": ["/absolute/path/to/linear-mcp/build/index.js"], "env": { "LINEAR_API_KEY": "your_api_key" } } } }
Within Cline's MCP settings, restart the MCP server. Restart Claude Desktop to load the new MCP server.
Run development server:
bun run dev
Build project:
bun run build
For detailed usage examples of all tools, see USAGE.md.
Create a new Linear issue or subissue.
Input Schema:
{ "teamId": "string", "title": "string", "description": "string", "parentId": "string", "status": "string", "priority": "number", "assigneeId": "string | 'me'", "labelIds": ["string"] }
Update an existing Linear issue.
Input Schema:
{ "issueId": "string", "title": "string", "description": "string", "status": "string", // Expects status NAME (e.g., "In Progress"). Must be valid for the issue's team. "priority": "number", // Expects 0 (None) to 4 (Low). "assigneeId": "string | 'me'", "labelIds": ["string"], "cycleId": "string" }
Get detailed information about a specific Linear issue with optional relationships.
Input Schema:
{ "issueId": "string", "includeRelationships": "boolean" }
Search for Linear issues using a query string and advanced filters. Supports Linear's powerful filtering capabilities.
Input Schema:
{ "query": "string", "includeRelationships": "boolean", "filter": { "title": { "contains": "string", "eq": "string", ... }, "description": { "contains": "string", "eq": "string", ... }, "priority": { "gte": "number", "lt": "number", ... }, "estimate": { "eq": "number", "in": ["number"], ... }, "dueDate": { "lt": "string", "gt": "string", ... }, "createdAt": { "gt": "P2W", "lt": "2024-01-01", ... }, "updatedAt": { "gt": "P1M", ... }, "completedAt": { "null": true, ... }, "assignee": { "id": { "eq": "string" }, "name": { "contains": "string" } }, "creator": { "id": { "eq": "string" }, "name": { "contains": "string" } }, "team": { "id": { "eq": "string" }, "key": { "eq": "string" } }, "state": { "type": { "eq": "started" }, "name": { "eq": "string" } }, "labels": { "name": { "in": ["string"] }, "every": { "name": { "eq": "string" } } }, "project": { "id": { "eq": "string" }, "name": { "contains": "string" } }, "and": [{ /* filters */ }], "or": [{ /* filters */ }], "assignedTo": "string | 'me'", "createdBy": "string | 'me'" }, "projectId": "string", "projectName": "string" }
Supported Comparators:
eq
, neq
, in
, nin
, contains
, startsWith
, endsWith
(plus case-insensitive variants)eq
, neq
, lt
, lte
, gt
, gte
, in
, nin
eq
, neq
, lt
, lte
, gt
, gte
(supports ISO 8601 durations)Get a list of Linear teams with optional name/key filtering.
Input Schema:
{ "nameFilter": "string" }
Delete an existing Linear issue.
Input Schema:
{ "issueId": "string" }
Create a new comment on a Linear issue.
Input Schema:
{ "issueId": "string", "body": "string" }
Get a list of Linear projects with optional name filtering and pagination.
Input Schema:
{ "nameFilter": "string", "includeArchived": "boolean", "first": "number", "after": "string" }
Get project updates for a given project ID with optional filtering parameters.
Input Schema:
{ "projectId": "string", "includeArchived": "boolean", "first": "number", "after": "string", "createdAfter": "string", "createdBefore": "string", "userId": "string | 'me'", "health": "string" }
Create a new update for a Linear project.
Input Schema:
{ "projectId": "string", "body": "string", "health": "onTrack | atRisk | offTrack", "isDiffHidden": "boolean" }
The server implements a comprehensive error handling strategy:
This project is licensed under the MIT License - see the LICENCE file for details.