linear-flow

consigcody94/linear-flow

3.2

If you are the rightful owner of linear-flow and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

Linear Flow is an AI-powered project management tool that integrates with Linear to streamline issue management, project tracking, and workflow automation directly from your editor.

Tools
6
Resources
0
Prompts
0

📋 Linear Flow

AI-powered Linear project management - create issues, manage projects, track cycles, and automate your workflow

TypeScript License: MIT MCP Node.js Linear


🤔 The Project Management Challenge

"Context switching to Linear breaks my flow"

Every time you need to create an issue, update a status, or check sprint progress, you're switching contexts and losing momentum.

  • 🖱️ Clicking through UI forms
  • 🔍 Searching for team and state IDs
  • 📊 Checking cycle progress manually
  • 🏷️ Managing labels across projects

Linear Flow keeps you in the zone - manage your entire Linear workflow through natural language without leaving your editor.


✨ Features

FeatureDescription
🎫 Issue ManagementCreate and update issues with full field control
👥 Team InformationRetrieve team details and workflow states
🔄 Cycle TrackingGet active cycle progress and metrics
📁 Project CreationCreate projects with team associations
🏷️ Label ManagementCreate custom labels with colors

🚀 Quick Start

Prerequisites

  • Node.js 18+
  • Linear account with API key
  • Claude Desktop

Installation

git clone https://github.com/consigcody94/linear-flow.git
cd linear-flow
npm install
npm run build

Get Your API Key

  1. Go to Linear Settings
  2. Click "Create key" under "Personal API keys"
  3. Give it a label (e.g., "MCP Server")
  4. Copy the generated key (starts with lin_api_)

Configure Claude Desktop

Add to your config file:

PlatformPath
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json
Linux~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "linear-flow": {
      "command": "node",
      "args": ["/absolute/path/to/linear-flow/build/index.js"],
      "env": {
        "LINEAR_API_KEY": "lin_api_your_key_here"
      }
    }
  }
}

Restart Claude Desktop

Completely quit and reopen Claude Desktop to load the MCP server.


💬 Usage Examples

Create Issues

"Create a high-priority bug for the authentication team"
→ Creates issue with priority 2 (High) assigned to ENG team

"Add a feature request for implementing OAuth2 with detailed requirements"
→ Creates issue with markdown description and proper labeling

Track Progress

"What's in the current sprint?"
→ Returns cycle info with issue count, completion %, and dates

"Show me the ENG team's workflow states"
→ Lists all states with IDs for transitions

Manage Workflow

"Move FEAT-123 to In Progress"
→ Updates issue state to in_progress

"Create a new project for Q1 platform improvements"
→ Creates project linked to specified teams

Organize with Labels

"Create a tech-debt label with red color for the ENG team"
→ Creates label with hex color #FF6B6B

"Add the urgent label to the login bug"
→ Updates issue with new label

🛠️ Available Tools

ToolDescription
create_issueCreate a new issue in Linear
update_issueUpdate an existing issue
get_teamGet team information including workflow states
get_cycleGet cycle (sprint) information
create_projectCreate a new project
add_labelCreate a new label for a team

📊 Tool Details

create_issue

Create a new issue in Linear.

ParameterTypeRequiredDescription
titlestringYesIssue title
teamIdstringYesTeam ID or key (e.g., "ENG")
descriptionstringNoIssue description (markdown)
prioritynumberNo0=None, 1=Urgent, 2=High, 3=Medium, 4=Low
assigneeIdstringNoUser ID to assign
labelIdsstring[]NoArray of label IDs

update_issue

Update an existing issue.

ParameterTypeRequiredDescription
issueIdstringYesIssue ID to update
titlestringNoNew title
descriptionstringNoNew description
prioritynumberNoNew priority
stateIdstringNoNew state ID
assigneeIdstringNoNew assignee ID

get_team

Get team information including workflow states.

ParameterTypeRequiredDescription
teamIdstringYesTeam ID or key (e.g., "ENG")

Response includes:

  • Team ID, key, and name
  • Workflow states with IDs, names, types, and colors

get_cycle

Get cycle (sprint) information.

ParameterTypeRequiredDescription
teamIdstringYesTeam ID
cycleIdstringNoSpecific cycle (default: active)

Response includes:

  • Cycle ID and number
  • Start and end dates
  • Issue count and completed count
  • Progress percentage

create_project

Create a new project.

ParameterTypeRequiredDescription
namestringYesProject name
teamIdsstring[]YesAssociated team IDs
descriptionstringNoProject description
targetDatestringNoTarget date (ISO 8601)
statestringNoplanned, started, paused, completed, canceled

add_label

Create a new label for a team.

ParameterTypeRequiredDescription
namestringYesLabel name
teamIdstringYesTeam ID
colorstringNoHex color (e.g., "#FF6B6B")
descriptionstringNoLabel description

🔑 Finding IDs

ID TypeHow to Find
Team IDUse team key directly (e.g., "ENG") or find in URL: linear.app/team/TEAM_KEY
State IDsUse get_team to list all states with their IDs
User IDsFind in Linear settings or API
Label IDsCreated labels return their ID

🎯 Workflow Examples

Bug Triage Workflow

  1. Create the bug:

    create_issue with title: "Login fails on Safari", teamId: "ENG", priority: 2
    
  2. Get team states:

    get_team with teamId: "ENG"
    
  3. Update to triage state:

    update_issue with issueId: "...", stateId: "state_triage"
    

Sprint Planning

  1. Check current cycle:

    get_cycle with teamId: "ENG"
    
  2. Create sprint issues:

    create_issue with title: "...", teamId: "ENG", ...
    
  3. Create organizing project:

    create_project with name: "Sprint 5 Goals", teamIds: ["ENG"]
    

🔒 Security Notes

PrincipleDescription
Never commit keysKeep API keys out of version control
Full accessAPI keys have full workspace access
Rotate regularlyChange keys periodically
Separate keysUse different keys for different apps

🐛 Troubleshooting

IssueSolution
"LINEAR_API_KEY required"Set the API key in Claude Desktop config
"Team not found"Verify team key/ID and API key permissions
Issue creation failsCheck teamId is valid, required fields provided
State transition failsGet valid state IDs with get_team

📋 Requirements

  • Node.js 18 or higher
  • Linear API key
  • Active Linear workspace

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.


📄 License

MIT License - see file for details.


👤 Author

consigcody94


Stay in flow while managing your workflow.