Skip to main content
Glama
camillodev

linear-mcp-server

by camillodev
README.md
# linear-mcp-server

MCP server for **Linear** — full CRUD for issues, projects, cycles, teams, labels, and workflow states.

## Prerequisites

- Node.js >= 18
- Linear API key ([Settings > API > Personal API keys](https://linear.app/settings/api))

## Install & Build

```bash
git clone https://github.com/camillodev/linear-mcp-server.git
cd linear-mcp-server
npm install
npm run build
```

## Configure in Claude Code / Cowork

Add to your MCP config (`~/.claude/claude_desktop_config.json` or project `.mcp.json`):

```json
{
  "mcpServers": {
    "linear": {
      "command": "node",
      "args": ["/FULL/PATH/TO/linear-mcp-server/dist/index.js"],
      "env": {
        "LINEAR_API_KEY": "lin_api_YOUR_KEY_HERE"
      }
    }
  }
}
```

## Available Tools (15 total)

### Read (9)
| Tool | Description |
|------|-------------|
| `linear_list_teams` | List all teams (get team IDs first) |
| `linear_list_issues` | List issues with filters (state, assignee, label) |
| `linear_get_issue` | Full issue detail by identifier or UUID |
| `linear_search_issues` | Full-text search across issues |
| `linear_list_projects` | List projects, optionally by team |
| `linear_list_cycles` | List cycles/sprints for a team |
| `linear_list_workflow_states` | List valid states for a team |
| `linear_list_labels` | List all issue labels |
| `linear_list_users` | List workspace members |

### Write (6)
| Tool | Description |
|------|-------------|
| `linear_create_issue` | Create issue (with optional sub-issue, cycle, project) |
| `linear_update_issue` | Update any issue field |
| `linear_create_project` | Create project with team association |
| `linear_create_cycle` | Create cycle/sprint |
| `linear_add_comment` | Add comment to an issue |

## Usage Examples

```
"List all my teams" → linear_list_teams
"Show in-progress issues for team X" → linear_list_issues(team_id, state_name="In Progress")
"Create a bug ticket" → linear_create_issue(team_id, title, priority=2)
"Move issue to sprint" → linear_update_issue(issue_id, cycle_id)
"Search for auth issues" → linear_search_issues(query="authentication")
```

## License

MIT