--- name: linear-automation description: "Automate Linear tasks via Rube MCP (Composio): issues, projects, cycles, teams, labels. Always search tools first for current schemas." requires: mcp: [rube] --- # Linear Automation via Rube MCP Automate Linear operations through Composio's Linear toolkit via Rube MCP. ## Prerequisites - Rube MCP must be connected (RUBE_SEARCH_TOOLS available) - Active Linear connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `linear` - Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas ## Setup **Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works. 1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds 2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `linear` 3. If connection is not ACTIVE, follow the returned auth link to complete Linear OAuth 4. Confirm connection status shows ACTIVE before running any workflows ## Core Workflows ### 1. Manage Issues **When to use**: User wants to create, search, update, or list Linear issues **Tool sequence**: 1. `LINEAR_GET_ALL_LINEAR_TEAMS` - Get team IDs [Prerequisite] 2. `LINEAR_LIST_LINEAR_STATES` - Get workflow states for a team [Prerequisite] 3. `LINEAR_CREATE_LINEAR_ISSUE` - Create a new issue [Optional] 4. `LINEAR_SEARCH_ISSUES` / `LINEAR_LIST_LINEAR_ISSUES` - Find issues [Optional] 5. `LINEAR_GET_LINEAR_ISSUE` - Get issue details [Optional] 6. `LINEAR_UPDATE_ISSUE` - Update issue properties [Optional] **Key parameters**: - `team_id`: Team ID (required for creation) - `title`: Issue title - `description`: Issue description (Markdown supported) - `state_id`: Workflow state ID - `assignee_id`: Assignee user ID - `priority`: 0 (none), 1 (urgent), 2 (high), 3 (medium), 4 (low) - `label_ids`: Array of label IDs **Pitfalls**: - Team ID is required when creating issues; use GET_ALL_LINEAR_TEAMS first - State IDs are team-specific; use LIST_LINEAR_STATES with the correct team - Priority uses integer values 0-4, not string names ### 2. Manage Projects **When to use**: User wants to create or update Linear projects **Tool sequence**: 1. `LINEAR_LIST_LINEAR_PROJECTS` - List existing projects [Optional] 2. `LINEAR_CREATE_LINEAR_PROJECT` - Create a new project [Optional] 3. `LINEAR_UPDATE_LINEAR_PROJECT` - Update project details [Optional] **Key parameters**: - `name`: Project name - `description`: Project description - `team_ids`: Array of team IDs associated with the project - `state`: Project state (e.g., 'planned', 'started', 'completed') **Pitfalls**: - Projects span teams; they can be associated with multiple teams ### 3. Manage Cycles **When to use**: User wants to work with Linear cycles (sprints) **Tool sequence**: 1. `LINEAR_GET_ALL_LINEAR_TEAMS` - Get team ID [Prerequisite] 2. `LINEAR_GET_CYCLES_BY_TEAM_ID` / `LINEAR_LIST_LINEAR_CYCLES` - List cycles [Required] **Key parameters**: - `team_id`: Team ID for cycle operations - `number`: Cycle number **Pitfalls**: - Cycles are team-specific; always scope by team_id ### 4. Manage Labels and Comments **When to use**: User wants to create labels or comment on issues **Tool sequence**: 1. `LINEAR_CREATE_LINEAR_LABEL` - Create a new label [Optional] 2. `LINEAR_CREATE_LINEAR_COMMENT` - Comment on an issue [Optional] 3. `LINEAR_UPDATE_LINEAR_COMMENT` - Edit a comment [Optional] **Key parameters**: - `name`: Label name - `color`: Label color (hex) - `issue_id`: Issue ID for comments - `body`: Comment body (Markdown) **Pitfalls**: - Labels can be team-scoped or workspace-scoped - Comment body supports Markdown formatting ### 5. Custom GraphQL Queries **When to use**: User needs advanced queries not covered by standard tools **Tool sequence**: 1. `LINEAR_RUN_QUERY_OR_MUTATION` - Execute custom GraphQL [Required] **Key parameters**: - `query`: GraphQL query or mutation string - `variables`: Variables for the query **Pitfalls**: - Requires knowledge of Linear's GraphQL schema - Rate limits apply to GraphQL queries ## Common Patterns ### ID Resolution **Team name -> Team ID**: ``` 1. Call LINEAR_GET_ALL_LINEAR_TEAMS 2. Find team by name in response 3. Extract id field ``` **State name -> State ID**: ``` 1. Call LINEAR_LIST_LINEAR_STATES with team_id 2. Find state by name 3. Extract id field ``` ### Pagination - Linear tools return paginated results - Check for pagination cursors in responses - Pass cursor to next request for additional pages ## Known Pitfalls **Team Scoping**: - Issues, states, and cycles are team-specific - Always resolve team_id before creating issues **Priority Values**: - 0 = No priority, 1 = Urgent, 2 = High, 3 = Medium, 4 = Low - Use integer values, not string names ## Quick Reference | Task | Tool Slug | Key Params | |------|-----------|------------| | List teams | LINEAR_GET_ALL_LINEAR_TEAMS | (none) | | Create issue | LINEAR_CREATE_LINEAR_ISSUE | team_id, title, description | | Search issues | LINEAR_SEARCH_ISSUES | query | | List issues | LINEAR_LIST_LINEAR_ISSUES | team_id, filters | | Get issue | LINEAR_GET_LINEAR_ISSUE | issue_id | | Update issue | LINEAR_UPDATE_ISSUE | issue_id, fields | | List states | LINEAR_LIST_LINEAR_STATES | team_id | | List projects | LINEAR_LIST_LINEAR_PROJECTS | (none) | | Create project | LINEAR_CREATE_LINEAR_PROJECT | name, team_ids | | Update project | LINEAR_UPDATE_LINEAR_PROJECT | project_id, fields | | List cycles | LINEAR_LIST_LINEAR_CYCLES | team_id | | Get cycles | LINEAR_GET_CYCLES_BY_TEAM_ID | team_id | | Create label | LINEAR_CREATE_LINEAR_LABEL | name, color | | Create comment | LINEAR_CREATE_LINEAR_COMMENT | issue_id, body | | Update comment | LINEAR_UPDATE_LINEAR_COMMENT | comment_id, body | | List users | LINEAR_LIST_LINEAR_USERS | (none) | | Current user | LINEAR_GET_CURRENT_USER | (none) | | Run GraphQL | LINEAR_RUN_QUERY_OR_MUTATION | query, variables |