{
  "name": "linear",
  "display_name": "Linear",
  "description": "Allows LLM to interact with Linear's API for project management, including searching, creating, and updating issues.",
  "repository": {
    "type": "git",
    "url": "https://github.com/jerhadf/linear-mcp-server"
  },
  "homepage": "https://github.com/jerhadf/linear-mcp-server",
  "author": {
    "name": "jerhadf"
  },
  "license": "MIT",
  "categories": [
    "Productivity"
  ],
  "tags": [
    "linear",
    "issue tracking",
    "LLM"
  ],
  "installations": {
    "npm": {
      "type": "npm",
      "command": "npx",
      "args": [
        "-y",
        "linear-mcp-server"
      ],
      "env": {
        "LINEAR_API_KEY": "${LINEAR_API_KEY}"
      }
    }
  },
  "examples": [
    {
      "title": "Show me all my high-priority issues",
      "description": "Execute the search_issues tool and/or linear-user:///{userId}/assigned to find issues assigned to the user with priority 1",
      "prompt": "Show me all my high-priority issues"
    },
    {
      "title": "Create a bug report",
      "description": "Use create_issue to create a new high-priority issue with appropriate details and status tracking.",
      "prompt": "Based on what I've told you about this bug already, make a bug report for the authentication system"
    },
    {
      "title": "Find all in-progress frontend tasks",
      "description": "Use search_issues to locate frontend-related issues with in progress status.",
      "prompt": "Find all in progress frontend tasks"
    },
    {
      "title": "Get summary of recent updates",
      "description": "Use search_issues to identify relevant issue(s) and fetch the issue details.",
      "prompt": "Give me a summary of recent updates on the issues for mobile app development"
    },
    {
      "title": "Analyze current workload for the mobile team",
      "description": "Combine linear-team:///{teamId}/issues and search_issues to analyze issue distribution and priorities across the mobile team.",
      "prompt": "What's the current workload for the mobile team?"
    }
  ],
  "arguments": {
    "LINEAR_API_KEY": {
      "description": "Your Linear API key to authenticate requests to the Linear API.",
      "required": true,
      "example": "your_api_key_here"
    }
  },
  "tools": [
    {
      "name": "linear_create_issue",
      "description": "Creates a new Linear issue with specified details. Use this to create tickets for tasks, bugs, or feature requests. Returns the created issue's identifier and URL. Required fields are title and teamId, with optional description, priority (0-4, where 0 is no priority and 1 is urgent), and status.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Issue title"
          },
          "teamId": {
            "type": "string",
            "description": "Team ID"
          },
          "description": {
            "type": "string",
            "description": "Issue description"
          },
          "priority": {
            "type": "number",
            "description": "Priority (0-4)"
          },
          "status": {
            "type": "string",
            "description": "Issue status"
          }
        },
        "required": [
          "title",
          "teamId"
        ]
      }
    },
    {
      "name": "linear_update_issue",
      "description": "Updates an existing Linear issue's properties. Use this to modify issue details like title, description, priority, or status. Requires the issue ID and accepts any combination of updatable fields. Returns the updated issue's identifier and URL.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Issue ID"
          },
          "title": {
            "type": "string",
            "description": "New title"
          },
          "description": {
            "type": "string",
            "description": "New description"
          },
          "priority": {
            "type": "number",
            "description": "New priority (0-4)"
          },
          "status": {
            "type": "string",
            "description": "New status"
          }
        },
        "required": [
          "id"
        ]
      }
    },
    {
      "name": "linear_search_issues",
      "description": "Searches Linear issues using flexible criteria. Supports filtering by any combination of: title/description text, team, status, assignee, labels, priority (1=urgent, 2=high, 3=normal, 4=low), and estimate. Returns up to 10 issues by default (configurable via limit).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Optional text to search in title and description"
          },
          "teamId": {
            "type": "string",
            "description": "Filter by team ID"
          },
          "status": {
            "type": "string",
            "description": "Filter by status name (e.g., 'In Progress', 'Done')"
          },
          "assigneeId": {
            "type": "string",
            "description": "Filter by assignee's user ID"
          },
          "labels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter by label names"
          },
          "priority": {
            "type": "number",
            "description": "Filter by priority (1=urgent, 2=high, 3=normal, 4=low)"
          },
          "estimate": {
            "type": "number",
            "description": "Filter by estimate points"
          },
          "includeArchived": {
            "type": "boolean",
            "description": "Include archived issues in results (default: false)"
          },
          "limit": {
            "type": "number",
            "description": "Max results to return (default: 10)"
          }
        }
      }
    },
    {
      "name": "linear_get_user_issues",
      "description": "Retrieves issues assigned to a specific user or the authenticated user if no userId is provided. Returns issues sorted by last updated, including priority, status, and other metadata. Useful for finding a user's workload or tracking assigned tasks.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "Optional user ID. If not provided, returns authenticated user's issues"
          },
          "includeArchived": {
            "type": "boolean",
            "description": "Include archived issues in results"
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of issues to return (default: 50)"
          }
        }
      }
    },
    {
      "name": "linear_add_comment",
      "description": "Adds a comment to an existing Linear issue. Supports markdown formatting in the comment body. Can optionally specify a custom user name and avatar for the comment. Returns the created comment's details including its URL.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "issueId": {
            "type": "string",
            "description": "ID of the issue to comment on"
          },
          "body": {
            "type": "string",
            "description": "Comment text in markdown format"
          },
          "createAsUser": {
            "type": "string",
            "description": "Optional custom username to show for the comment"
          },
          "displayIconUrl": {
            "type": "string",
            "description": "Optional avatar URL for the comment"
          }
        },
        "required": [
          "issueId",
          "body"
        ]
      }
    }
  ]
}