Linear MCP for AI Agents

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Linear MCP or direct API to create, update, assign, and comment on issues through natural language.

Linear logoLinear
Oauth2Api Key

Linear is a modern issue tracking and project planning tool for fast-moving teams. It helps streamline workflows, organize projects, and boost productivity.

32 Tools3 Triggers

Try Linear now

Type what you want done — sign in and watch it run live in the Tool Router playground.

TOOL ROUTER PLAYGROUND
Linear
Try asking
TOOLS & TRIGGERS

Supported Tools and Triggers

Every Linear action and event your agent gets out of the box.

Create attachment

Creates a new attachment and associates it with a specific, existing Linear issue.

Add reaction to comment

Tool to add a reaction to an existing Linear comment.

Create a comment

Creates a new comment on a specified Linear issue.

Create linear issue

Creates a new issue in a specified Linear project and team, requiring team_id and title, and allowing optional properties like description, assignee, state, priority, cycle, and due date.

Create issue relation

Create a relationship between two Linear issues using the issueRelationCreate mutation.

Create a label

Creates a new label in Linear for a specified team, used to categorize and organize issues.

Create Project

Creates a new Linear project with specified name and team associations.

Create Project Milestone

Tool to create a project milestone in Linear with a name and optional target date and sort order.

Create Project Update

Tool to create a project status update post for a Linear project.

Delete issue

Archives an existing Linear issue by its ID, which is Linear's standard way of deleting issues; the operation is idempotent.

Download issue attachments

Downloads a specific attachment from a Linear issue; the `file_name` must include the correct file extension.

Get current user

Gets the currently authenticated user's ID, name, email, and other profile information — this is the account behind the API token, which may be a bot or service account rather than a human user.

Get cycles by team ID

Retrieves all cycles for a specified Linear team ID; cycles are time-boxed work periods (like sprints).

Get create issue default params

Fetches a Linear team's default issue estimate and state, useful for pre-filling new issue forms.

Get Linear issue

Retrieves an existing Linear issue's comprehensive details, including id, identifier, title, description, timestamps, state, team, creator, attachments, comments (with user info and timestamps, use issue.

Get Linear project

Retrieves a single Linear project by its unique identifier.

List issue drafts

Tool to list issue drafts.

List issues by team ID

Tool to list all issues for a specific Linear team, scoped by team ID.

Get all cycles

Retrieves all cycles (time-boxed sprint iterations) org-wide from the Linear account; no filters applied.

List Linear issues

Lists non-archived Linear issues; if project_id is not specified, issues from all accessible projects are returned.

Get labels

Retrieves labels from Linear.

List linear projects

Retrieves all projects from the Linear account.

List Linear states

Retrieves all workflow states for a specified team in Linear, representing the stages an issue progresses through in that team's workflow.

Get teams

Retrieves all teams with their members and projects.

List Linear users

Lists all workspace users (not team-scoped) with their IDs, names, emails, and active status.

Remove label from Linear issue

Removes a specified label from an existing Linear issue using their IDs; successful even if the label isn't on the issue.

Remove reaction from comment

Tool to remove a reaction on a comment.

Run Query or Mutation

Execute any GraphQL query or mutation against Linear's API.

Search Linear issues

Search Linear issues using full-text search across identifier, title, and description.

Update issue

Updates an existing Linear issue using its `issue_id`; requires at least one other attribute for modification, and all provided entity IDs (for state, assignee, labels, etc.

Update a comment

Tool to update an existing Linear comment's body text.

Update Project

Tool to update an existing Linear project.

SETUP GUIDE

Connect Linear MCP Tool with your Agent

1

Install Composio

typescript
npm install @composio/core ai @ai-sdk/openai @ai-sdk/mcp
Install the Composio SDK and Claude Agent SDK
2

Create Tool Router Session

typescript
import { Composio } from '@composio/core';

const composio = new Composio({ apiKey: 'your-api-key' });

console.log("Creating Tool Router session...");
const { mcp } = await composio.create('your-user-id');
console.log(`Tool Router session created: ${mcp.url}`);
Initialize the Composio client and create a Tool Router session
3

Connect to AI Agent

typescript
import { openai } from '@ai-sdk/openai';
import { experimental_createMCPClient as createMCPClient } from '@ai-sdk/mcp';
import { generateText, stepCountIs } from 'ai';

const client = await createMCPClient({
  transport: {
    type: 'http',
    url: mcp.url,
    headers: { 'x-api-key': 'your-composio-api-key' }
  }
});

const tools = await client.tools();

const { text } = await generateText({
  model: openai('gpt-4o'),
  tools,
  messages: [{ role: 'user', content: 'Create a new Linear issue titled "Bug: Login page fails on submit" in the Web team project' }],
  stopWhen: stepCountIs(5)
});

console.log(`Agent: ${text}`);
Use the MCP server with your AI agent
SETUP GUIDE

Connect Linear API Tool with your Agent

1

Install Composio

typescript
npm install @composio/openai
Install the Composio SDK
2

Initialize Composio and Create Tool Router Session

typescript
import OpenAI from 'openai';
import { Composio } from '@composio/core';
import { OpenAIResponsesProvider } from '@composio/openai';

const composio = new Composio({
  provider: new OpenAIResponsesProvider(),
});
const openai = new OpenAI({});
const session = await composio.create('your-user-id');
Import and initialize Composio client, then create a Tool Router session
3

Execute Linear Tools via Tool Router with Your Agent

typescript
const tools = session.tools;
const response = await openai.responses.create({
  model: 'gpt-4.1',
  tools: tools,
  input: [{
    role: 'user',
    content: 'List all open Linear issues assigned to me this week'
  }],
});
const result = await composio.provider.handleToolCalls(
  'your-user-id',
  response.output
);
console.log(result);
Get tools from Tool Router session and execute Linear actions with your Agent

Why Use Composio?

AI Native Linear Integration

  • Supports both Linear MCP and direct API based integrations
  • Structured, LLM-friendly schemas for reliable tool execution
  • Rich coverage for reading, writing, and querying your Linear data

Managed Auth

  • Built-in OAuth handling with automatic token refresh and rotation
  • Central place to manage, scope, and revoke Linear access
  • Per user and per environment credentials instead of hard-coded keys

Agent Optimized Design

  • Tools are tuned using real error and success rates to improve reliability over time
  • Comprehensive execution logs so you always know what ran, when, and on whose behalf

Enterprise Grade Security

  • Fine-grained RBAC so you control which agents and users can access Linear
  • Scoped, least privilege access to Linear resources
  • Full audit trail of agent actions to support review and compliance
FAQ

Frequently asked questions

No, you can get started immediately using Composio's built-in Linear app. For production, we recommend configuring your own OAuth credentials.

Yes! Composio's Tool Router enables agents to use multiple toolkits. Learn more.

Composio is SOC 2 and ISO 27001 compliant with all data encrypted in transit and at rest. Learn more.

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

Start with Linear.It takes 30 seconds.

Managed auth, hosted MCP servers, and every Linear tool your agent needs.Free to start.

Start building