Linear MCP connector
OAuth 2.1/DCRProject ManagementDeveloper ToolsConnect to Linear's hosted MCP server to manage issues, projects, cycles, and comments directly from your AI workflows.
Linear MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'linearmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Linear MCP:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'linearmcp_list_comments',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "linearmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Linear MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="linearmcp_list_comments",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Search documentation — Search Linear’s documentation to learn about features and usage
- Update save status — Create or update a project/initiative status update
- Project save — Create or update a Linear project
- Milestone save — Create or update a milestone in a Linear project
- Issue save — Create or update a Linear issue
- Document save — Create or update a Linear document
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
linearmcp_create_attachment#Deprecated fallback for tiny files only. Accepts base64 file content and uploads it through the MCP worker. Prefer prepare_attachment_upload plus direct PUT plus create_attachment_from_upload.6 params
Deprecated fallback for tiny files only. Accepts base64 file content and uploads it through the MCP worker. Prefer prepare_attachment_upload plus direct PUT plus create_attachment_from_upload.
base64ContentstringrequiredDeprecated base64-encoded file content to uploadcontentTypestringrequiredMIME type for the upload (e.g., 'image/png', 'application/pdf')filenamestringrequiredFilename for the upload (e.g., 'screenshot.png')issuestringrequiredIssue ID or identifier (e.g., LIN-123)subtitlestringoptionalOptional subtitle for the attachmenttitlestringoptionalOptional title for the attachmentlinearmcp_create_attachment_from_upload#Link an already-uploaded Linear assetUrl to an existing issue as an attachment.4 params
Link an already-uploaded Linear assetUrl to an existing issue as an attachment.
assetUrlstringrequiredLinear upload assetUrl returned by prepare_attachment_uploadissuestringrequiredIssue ID or identifier (e.g., LIN-123)subtitlestringoptionalOptional attachment subtitletitlestringoptionalAttachment title. Defaults to filename or asset URLlinearmcp_create_issue_label#Create a new Linear issue label6 params
Create a new Linear issue label
namestringrequiredLabel namecolorstringoptionalHex color code for the labeldescriptionstringoptionalLabel descriptionisGroupbooleanoptionalWhether this label is a group (container for other labels)parentstringoptionalParent label group nameteamIdstringoptionalTeam UUID to scope the label. Omit for workspace-level label.linearmcp_delete_attachment#Delete an attachment by ID1 param
Delete an attachment by ID
idstringrequiredAttachment IDlinearmcp_delete_comment#Delete a Linear comment.1 param
Delete a Linear comment.
idstringrequiredComment IDlinearmcp_delete_status_update#Delete (archive) a project or initiative status update.2 params
Delete (archive) a project or initiative status update.
idstringrequiredStatus update ID to deletetypestringrequiredType of status update — project or initiativelinearmcp_extract_images#Extract and fetch images from markdown content. Use this to view screenshots, diagrams, or other images embedded in Linear issues, comments, or documents.1 param
Extract and fetch images from markdown content. Use this to view screenshots, diagrams, or other images embedded in Linear issues, comments, or documents.
markdownstringrequiredMarkdown content containing image referenceslinearmcp_get_attachment#Retrieve an attachment's content by ID.1 param
Retrieve an attachment's content by ID.
idstringrequiredAttachment IDlinearmcp_get_diff#Exact lookup for a Linear diff. Use with review URLs, GitHub PR URLs, Linear full identifiers, UUIDs, or slugs.1 param
Exact lookup for a Linear diff. Use with review URLs, GitHub PR URLs, Linear full identifiers, UUIDs, or slugs.
urlOrIdstringrequiredLinear review URL, diff slug, pull request ID, Linear full identifier, or GitHub PR URLlinearmcp_get_diff_threads#Exact lookup for diff threads. Use with review URLs, GitHub PR URLs, Linear full identifiers, UUIDs, or slugs.4 params
Exact lookup for diff threads. Use with review URLs, GitHub PR URLs, Linear full identifiers, UUIDs, or slugs.
urlOrIdstringrequiredLinear review URL, diff slug, pull request ID, Linear full identifier, or GitHub PR URLorderBystringoptionalSort: createdAt | updatedAtresolvedbooleanoptionalFilter returned threads by resolved statethreadIdstringoptionalOptional top-level thread/comment ID to returnlinearmcp_get_document#Retrieve a Linear document by ID or slug1 param
Retrieve a Linear document by ID or slug
idstringrequiredDocument ID or sluglinearmcp_get_issue#Retrieve detailed information about an issue by ID, including attachments and git branch name4 params
Retrieve detailed information about an issue by ID, including attachments and git branch name
idstringrequiredIssue ID or identifier (e.g., LIN-123)includeCustomerNeedsbooleanoptionalInclude associated customer needsincludeRelationsbooleanoptionalInclude blocking/related/duplicate relationsincludeReleasesbooleanoptionalInclude associated releaseslinearmcp_get_issue_status#Retrieve detailed information about an issue status in Linear by name or ID3 params
Retrieve detailed information about an issue status in Linear by name or ID
idstringrequiredStatus IDnamestringrequiredStatus nameteamstringrequiredTeam name or IDlinearmcp_get_milestone#Retrieve details of a specific milestone by ID or name2 params
Retrieve details of a specific milestone by ID or name
projectstringrequiredProject name, ID, or slugquerystringrequiredMilestone name or IDlinearmcp_get_project#Retrieve details of a specific project in Linear4 params
Retrieve details of a specific project in Linear
querystringrequiredProject name, ID, or slugincludeMembersbooleanoptionalInclude members in the responseincludeMilestonesbooleanoptionalInclude milestones in the responseincludeResourcesbooleanoptionalInclude resources (documents, links, attachments)linearmcp_get_status_updates#List or get project/initiative status updates. Pass id to get a specific update, or filter to list.11 params
List or get project/initiative status updates. Pass id to get a specific update, or filter to list.
typestringrequiredType of status update — project or initiativecreatedAtstringoptionalReturn updates created after this ISO-8601 duration (e.g. P7D for last 7 days)cursorstringoptionalPagination cursor from the previous responseidstringoptionalStatus update ID — returns the specific update if providedincludeArchivedbooleanoptionalInclude archived status updatesinitiativestringoptionalInitiative name or ID to filter bylimitnumberoptionalMaximum number of status updates to returnorderBystringoptionalField to order results byprojectstringoptionalProject name, ID, or slug to filter byupdatedAtstringoptionalReturn updates modified after this ISO-8601 duration (e.g. P7D for last 7 days)userstringoptionalUser ID, name, email, or 'me' to filter by authorlinearmcp_get_team#Retrieve details of a specific Linear team1 param
Retrieve details of a specific Linear team
querystringrequiredTeam UUID, key, or namelinearmcp_get_user#Retrieve details of a specific Linear user1 param
Retrieve details of a specific Linear user
querystringrequiredUser ID, name, email, or 'me' for the authenticated userlinearmcp_list_comments#List comments on a Linear issue, project, initiative, document, or project milestone. Provide exactly one of issueId, projectId, initiativeId, documentId, or milestoneId.8 params
List comments on a Linear issue, project, initiative, document, or project milestone. Provide exactly one of issueId, projectId, initiativeId, documentId, or milestoneId.
cursorstringoptionalNext page cursordocumentIdstringoptionalDocument ID or slug (provide exactly one parent)initiativeIdstringoptionalInitiative name or ID (provide exactly one parent)issueIdstringoptionalIssue ID or identifier (e.g., LIN-123) (provide exactly one parent)limitnumberoptionalMax results (default 50, max 250)milestoneIdstringoptionalMilestone UUID (provide exactly one parent)orderBystringoptionalSort: createdAt | updatedAtprojectIdstringoptionalProject name, ID, or slug (provide exactly one parent)linearmcp_list_cycles#Retrieve cycles for a specific Linear team2 params
Retrieve cycles for a specific Linear team
teamIdstringrequiredTeam IDtypestringoptionalFilter: current, previous, next, or alllinearmcp_list_diffs#List Linear diff pull requests visible to the authenticated user7 params
List Linear diff pull requests visible to the authenticated user
cursorstringoptionalNext page cursorlimitnumberoptionalMax results (default 50, max 250)orderBystringoptionalSort: createdAt | updatedAtownerstringoptionalFilter by repository ownerquerystringoptionalBroad search by title, branch, PR number, or bare slugrepostringoptionalFilter by repository namestatusstringoptionalFilter by pull request statuslinearmcp_list_documents#List documents in the user's Linear workspace11 params
List documents in the user's Linear workspace
createdAtstringoptionalCreated after: ISO-8601 date/duration (e.g., -P1D)creatorIdstringoptionalFilter by creator user IDcursorstringoptionalNext page cursorincludeArchivedbooleanoptionalInclude archived documentsinitiativeIdstringoptionalFilter by initiative IDlimitnumberoptionalMax results (default 50, max 250)orderBystringoptionalSort: createdAt | updatedAtprojectIdstringoptionalFilter by project IDquerystringoptionalSearch document title or contentteamIdstringoptionalFilter by team IDupdatedAtstringoptionalUpdated after: ISO-8601 date/duration (e.g., -P1D)linearmcp_list_issue_labels#List available issue labels in a Linear workspace or team5 params
List available issue labels in a Linear workspace or team
cursorstringoptionalNext page cursorlimitnumberoptionalMax results (default 50, max 250)namestringoptionalFilter labels by nameorderBystringoptionalSort: createdAt | updatedAtteamstringoptionalTeam name or IDlinearmcp_list_issue_statuses#List available issue statuses in a Linear team1 param
List available issue statuses in a Linear team
teamstringrequiredTeam name or IDlinearmcp_list_issues#List issues in the user's Linear workspace. For my issues, use "me" as the assignee. Use "null" for no assignee.16 params
List issues in the user's Linear workspace. For my issues, use "me" as the assignee. Use "null" for no assignee.
assigneestringoptionalUser ID, name, email, or "me"createdAtstringoptionalCreated after: ISO-8601 date/duration (e.g., -P1D)cursorstringoptionalNext page cursorcyclestringoptionalCycle name, number, or IDdelegatestringoptionalAgent name or IDincludeArchivedbooleanoptionalInclude archived itemslabelstringoptionalLabel name or IDlimitnumberoptionalMax results (default 50, max 250)orderBystringoptionalSort: createdAt | updatedAtparentIdstringoptionalParent issue ID or identifier (e.g., LIN-123)prioritynumberoptional0=None, 1=Urgent, 2=High, 3=Medium, 4=LowprojectstringoptionalProject name, ID, or slugquerystringoptionalSearch issue title or descriptionstatestringoptionalState type, name, or IDteamstringoptionalTeam name or IDupdatedAtstringoptionalUpdated after: ISO-8601 date/duration (e.g., -P1D)linearmcp_list_milestones#List all milestones in a Linear project1 param
List all milestones in a Linear project
projectstringrequiredProject name, ID, or sluglinearmcp_list_project_labels#List available project labels in the Linear workspace4 params
List available project labels in the Linear workspace
cursorstringoptionalNext page cursorlimitnumberoptionalMax results (default 50, max 250)namestringoptionalFilter by nameorderBystringoptionalSort: createdAt | updatedAtlinearmcp_list_projects#List projects in the user's Linear workspace14 params
List projects in the user's Linear workspace
createdAtstringoptionalCreated after: ISO-8601 date/duration (e.g., -P1D)cursorstringoptionalNext page cursorincludeArchivedbooleanoptionalInclude archived projectsincludeMembersbooleanoptionalInclude project members in resultsincludeMilestonesbooleanoptionalInclude project milestones in resultsinitiativestringoptionalFilter by initiative name or IDlabelstringoptionalFilter by label name or IDlimitnumberoptionalMax results (default 50, max 50)memberstringoptionalFilter by member: user ID, name, email, or 'me'orderBystringoptionalSort: createdAt | updatedAtquerystringoptionalSearch project namestatestringoptionalFilter by project stateteamstringoptionalFilter by team name or IDupdatedAtstringoptionalUpdated after: ISO-8601 date/duration (e.g., -P1D)linearmcp_list_teams#List teams in the user's Linear workspace7 params
List teams in the user's Linear workspace
createdAtstringoptionalCreated after ISO-8601cursorstringoptionalNext page cursorincludeArchivedbooleanoptionalInclude archived teamslimitnumberoptionalMax results (default 50, max 250)orderBystringoptionalSort: createdAt | updatedAtquerystringoptionalSearch queryupdatedAtstringoptionalUpdated after ISO-8601linearmcp_list_users#Retrieve users in the Linear workspace5 params
Retrieve users in the Linear workspace
cursorstringoptionalPagination cursor from the previous responselimitnumberoptionalMaximum number of users to returnorderBystringoptionalField to order results byquerystringoptionalFilter by name or emailteamstringoptionalTeam name or ID to filter userslinearmcp_prepare_attachment_upload#Prepare a direct Linear file upload for an existing issue. Workflow: 1. Call this with issue, filename, contentType, and size. 2. Upload raw bytes with PUT to uploadRequest.url. 3. After PUT succeeds, call create_attachment_from_upload with assetUrl.6 params
Prepare a direct Linear file upload for an existing issue. Workflow: 1. Call this with issue, filename, contentType, and size. 2. Upload raw bytes with PUT to uploadRequest.url. 3. After PUT succeeds, call create_attachment_from_upload with assetUrl.
contentTypestringrequiredMIME type, e.g. image/png or application/pdffilenamestringrequiredFilename for the upload, e.g. screenshot.pngissuestringrequiredIssue ID or identifier (e.g., LIN-123)sizeintegerrequiredExact file size in bytes. Must be smaller than 2 GB.subtitlestringoptionalSuggested attachment subtitle for the finalize steptitlestringoptionalSuggested attachment title for the finalize steplinearmcp_save_comment#Create or update a comment on a Linear issue, project, initiative, document, or project milestone. If id is provided, updates the existing comment; otherwise creates a new one.8 params
Create or update a comment on a Linear issue, project, initiative, document, or project milestone. If id is provided, updates the existing comment; otherwise creates a new one.
bodystringrequiredContent as Markdown. Use literal newlines and special characters.documentIdstringoptionalDocument ID or slug (provide exactly one parent)idstringoptionalComment ID. If provided, updates the existing commentinitiativeIdstringoptionalInitiative name or ID (provide exactly one parent)issueIdstringoptionalIssue ID or identifier (e.g., LIN-123) (provide exactly one parent)milestoneIdstringoptionalMilestone UUID (provide exactly one parent)parentIdstringoptionalParent comment ID (for replies)projectIdstringoptionalProject name, ID, or slug (provide exactly one parent)linearmcp_save_document#Create or update a Linear document. If id is provided, updates the existing document; otherwise creates a new one. When creating, title is required and exactly one parent (project, issue, initiative, cycle, or team) must be specified.10 params
Create or update a Linear document. If id is provided, updates the existing document; otherwise creates a new one. When creating, title is required and exactly one parent (project, issue, initiative, cycle, or team) must be specified.
colorstringoptionalHex color for the documentcontentstringoptionalDocument content as MarkdowncyclestringoptionalCycle name, number, or ID to attach the document toiconstringoptionalIcon name or emoji code for the documentidstringoptionalDocument ID or slug to update. Omit to create.initiativestringoptionalInitiative name or ID to attach the document toissuestringoptionalIssue ID or identifier to attach the document to (e.g. LIN-123)projectstringoptionalProject name or ID to attach the document toteamstringoptionalTeam name or ID to attach the document totitlestringoptionalDocument title (required when creating)linearmcp_save_issue#Create or update a Linear issue. If id is provided, updates the existing issue; otherwise creates a new one. When creating, title and team are required.23 params
Create or update a Linear issue. If id is provided, updates the existing issue; otherwise creates a new one. When creating, title and team are required.
assigneestringoptionalUser ID, name, email, or 'me'. Pass null to remove assignee.blockedByarrayoptionalIssue IDs that are blocking this issueblocksarrayoptionalIssue IDs this issue blockscyclestringoptionalCycle name, number, or ID. Pass null to remove from cycle.delegatestringoptionalAgent name or ID. Pass null to remove delegate.descriptionstringoptionalIssue description as MarkdowndueDatestringoptionalDue date in ISO formatduplicateOfstringoptionalIssue ID this is a duplicate of. Pass null to remove.estimatenumberoptionalIssue estimate valueidstringoptionalOnly for updating. Issue ID or identifier (e.g., LIN-123). Do NOT pass when creating.labelsarrayoptionalLabel names or IDs to apply to the issuelinksarrayoptionalLink attachments to add to the issue [{url, title}]milestonestringoptionalMilestone name or IDparentIdstringoptionalParent issue ID or identifier. Pass null to remove parent.prioritynumberoptional0=None, 1=Urgent, 2=High, 3=Medium, 4=LowprojectstringoptionalProject name, ID, or slugrelatedToarrayoptionalRelated issue IDsremoveBlockedByarrayoptionalBlocker issue IDs to removeremoveBlocksarrayoptionalIssue IDs to stop blockingremoveRelatedToarrayoptionalRelated issue IDs to removestatestringoptionalState type, name, or IDteamstringoptionalTeam name or ID (required when creating)titlestringoptionalIssue title (required when creating)linearmcp_save_milestone#Create or update a milestone in a Linear project. If id is provided, updates the existing milestone; otherwise creates a new one. When creating, name is required.5 params
Create or update a milestone in a Linear project. If id is provided, updates the existing milestone; otherwise creates a new one. When creating, name is required.
projectstringrequiredProject name, ID, or slugdescriptionstringoptionalMilestone descriptionidstringoptionalMilestone name or ID. If provided, updates existingnamestringoptionalMilestone name (required when creating)targetDatestringoptionalTarget completion date (ISO format, null to remove)linearmcp_save_project#Create or update a Linear project. If id is provided, updates the existing project; otherwise creates a new one. When creating, name and at least one team are required.20 params
Create or update a Linear project. If id is provided, updates the existing project; otherwise creates a new one. When creating, name and at least one team are required.
addInitiativesarrayoptionalInitiative names/IDs to addaddTeamsarrayoptionalTeam name or ID to addcolorstringoptionalHex colordescriptionstringoptionalContent as MarkdowniconstringoptionalIcon name or emoji codeidstringoptionalProject ID. If provided, updates existinglabelsarrayoptionalLabel names or IDsleadstringoptionalUser ID, name, email, or 'me'. Null to removenamestringoptionalProject name (required when creating)priorityintegeroptional0=None, 1=Urgent, 2=High, 3=Medium, 4=LowremoveInitiativesarrayoptionalInitiative names/IDs to removeremoveTeamsarrayoptionalTeam name or ID to removesetInitiativesarrayoptionalReplace all initiatives with thesesetTeamsarrayoptionalReplace all teams with thesestartDatestringoptionalStart date (ISO format)startDateResolutionstringoptionalStart date resolutionstatestringoptionalProject statesummarystringoptionalShort summary (max 255 chars)targetDatestringoptionalTarget date (ISO format)targetDateResolutionstringoptionalTarget date resolutionlinearmcp_save_status_update#Create or update a project/initiative status update. Omit id to create, provide id to update.7 params
Create or update a project/initiative status update. Omit id to create, provide id to update.
typestringrequiredType of status update — project or initiativebodystringoptionalContent of the status update as MarkdownhealthstringoptionalHealth status of the project or initiativeidstringoptionalStatus update ID — if provided, updates this existing update instead of creating a new oneinitiativestringoptionalInitiative name or IDisDiffHiddenbooleanoptionalDeprecated. Hide the diff with the previous updateprojectstringoptionalProject name, ID, or sluglinearmcp_search_documentation#Search Linear's documentation to learn about features and usage2 params
Search Linear's documentation to learn about features and usage
querystringrequiredSearch query to find relevant documentationpagenumberoptionalPage number for paginated results