Skip to content

Commit 21a518d

Browse files
authored
Add recent Linear API parity tools (#33)
1 parent 02b97a2 commit 21a518d

26 files changed

Lines changed: 4933 additions & 434 deletions

README.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@ A Model Context Protocol (MCP) server for the Linear GraphQL API, built for real
1717

1818
MCP Linear bridges AI assistants and Linear by implementing the MCP protocol. With it you can:
1919

20-
- Retrieve issues, projects, teams, cycles, milestones, roadmaps, and documents
20+
- Retrieve issues, projects, teams, cycles, milestones, roadmaps, customers, customer needs, and workspace/project/initiative/team/issue/release/cycle documents
2121
- Create and update issues, change status, assign, and comment
22-
- Manage projects, project updates, milestones, roadmaps, saved views, and favorites
22+
- Manage projects, full diff-aware project and initiative update lifecycles, milestones, roadmaps, saved views, and favorites
2323
- Work with templates, custom fields, webhooks, and attachments
24+
- Work with customer records, customer statuses/tiers, and customer needs linked to issues or projects
2425
- Read notifications, subscriptions, sessions, audits, and integrations without leaving MCP
2526
- Inspect rate-limit and server health before running heavy planning sessions
2627

@@ -44,6 +45,11 @@ Once connected, you can use prompts like:
4445
- "Show all open issues in this project grouped by milestone and cycle"
4546
- "Draft a weekly project update from the current Linear state"
4647
- "Find the newest documents related to a project and summarize the key decisions"
48+
- "Show the pinned documents and links on this team's home page"
49+
- "Create a document for ENG-123 with resource ordering metadata"
50+
- "Get the latest project update diff and archive an outdated update"
51+
- "Show customer needs for this project and mark the important ones"
52+
- "Create an initiative update and hide the generated diff from the update body"
4753

4854
## Installation
4955

TOOLS.md

Lines changed: 64 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ These are reusable MCP prompt templates exposed by the server for PM-oriented Li
7474
| Tool Name | Description | Status |
7575
| ---------------------- | ---------------------------------- | -------------- |
7676
| `linear_getProjects` | Get a list of projects from Linear | ✅ Implemented |
77+
| `linear_getProjectById` | Get details of a specific project | ✅ Implemented |
7778
| `linear_createProject` | Create a new project in Linear | ✅ Implemented |
7879

7980
### Milestone Tools
@@ -90,15 +91,21 @@ Linear exposes milestones as `ProjectMilestone` in the SDK/API. Archiving is imp
9091

9192
### Document Tools
9293

93-
Linear exposes workspace and project docs as `Document` in the SDK/API.
94+
Linear exposes workspace, project, initiative, team, issue, release, and cycle docs as `Document` in the API. Team home resource sections use a narrow GraphQL query so MCP responses include richer pinned document/link details than the generated SDK fragment.
9495

9596
| Tool Name | Description | Status |
9697
| ----------------------------------- | ------------------------------------------------ | -------------- |
9798
| `linear_getDocuments` | Get workspace documents with optional filters | ✅ Implemented |
9899
| `linear_getDocumentById` | Get details of a specific document | ✅ Implemented |
99100
| `linear_getProjectDocuments` | Get documents for a specific project | ✅ Implemented |
101+
| `linear_getInitiativeDocuments` | Get documents for a specific initiative | ✅ Implemented |
102+
| `linear_getTeamDocuments` | Get documents associated with a specific team | ✅ Implemented |
103+
| `linear_getIssueDocuments` | Get documents associated with a specific issue | ✅ Implemented |
104+
| `linear_getReleaseDocuments` | Get documents associated with a specific release | ✅ Implemented |
105+
| `linear_getCycleDocuments` | Get documents associated with a specific cycle | ✅ Implemented |
106+
| `linear_getTeamResources` | Get team home sections and pinned docs/links | ✅ Implemented |
100107
| `linear_searchDocuments` | Search Linear documents by term | ✅ Implemented |
101-
| `linear_getDocumentContentHistory` | Get content history entries for a document | ✅ Implemented |
108+
| `linear_getDocumentContentHistory` | Get content history entries and metadata | ✅ Implemented |
102109
| `linear_createDocument` | Create a new Linear document | ✅ Implemented |
103110
| `linear_updateDocument` | Update an existing Linear document | ✅ Implemented |
104111
| `linear_archiveDocument` | Archive (trash) a document | ✅ Implemented |
@@ -122,7 +129,7 @@ These are MCP-server observability helpers for tool-only clients.
122129
| `linear_searchIssues` | Search for issues with various filters | ✅ Implemented |
123130
| `linear_createIssue` | Create a new issue in Linear | ✅ Implemented |
124131
| `linear_updateIssue` | Update an existing issue in Linear | ✅ Implemented |
125-
| `linear_createComment` | Add a comment to an issue in Linear | ✅ Implemented |
132+
| `linear_createComment` | Add a comment to an issue, project, initiative, update, document content, post, or thread | ✅ Implemented |
126133
| `linear_updateComment` | Update an existing comment in Linear | ✅ Implemented |
127134
| `linear_deleteComment` | Delete a comment in Linear | ✅ Implemented |
128135
| `linear_addIssueLabel` | Add a label to an issue | ✅ Implemented |
@@ -136,6 +143,7 @@ These are MCP-server observability helpers for tool-only clients.
136143
| `linear_subscribeToIssue` | Subscribe to issue updates | ✅ Implemented |
137144
| `linear_convertIssueToSubtask` | Convert an issue to a subtask | ✅ Implemented |
138145
| `linear_createIssueRelation` | Create relations between issues (blocks, is blocked by, etc.) | ✅ Implemented |
146+
| `linear_deleteIssueRelation` | Delete an issue relation | ✅ Implemented |
139147
| `linear_archiveIssue` | Archive an issue | ✅ Implemented |
140148
| `linear_setIssuePriority` | Set the priority of an issue | ✅ Implemented |
141149
| `linear_transferIssue` | Transfer an issue to another team | ✅ Implemented |
@@ -154,16 +162,20 @@ These are MCP-server observability helpers for tool-only clients.
154162

155163
| Tool Name | Description | Status |
156164
| -------------------- | ----------------------------- | -------------- |
157-
| `linear_getComments` | Get all comments for an issue | ✅ Implemented |
165+
| `linear_getComments` | Get comments for an issue, project, initiative, update, document content, or post with pagination | ✅ Implemented |
158166

159167
### Project Management Tools
160168

161169
| Tool Name | Description | Status |
162170
| ------------------------------- | ----------------------------------------- | -------------- |
163-
| `linear_updateProject` | Update an existing project | ✅ Implemented |
164-
| `linear_createProjectUpdate` | Create a new update for a project | ✅ Implemented |
165-
| `linear_updateProjectUpdate` | Update an existing project update | ✅ Implemented |
166-
| `linear_getProjectUpdates` | Get updates for a project | ✅ Implemented |
171+
| `linear_updateProject` | Update an existing project, including status, dates, members, lead, icon, and color | ✅ Implemented |
172+
| `linear_createProjectUpdate` | Create a new update for a project with diff controls and fields in the response | ✅ Implemented |
173+
| `linear_updateProjectUpdate` | Update an existing project update with diff controls and fields in the response | ✅ Implemented |
174+
| `linear_getProjectUpdateById` | Get a specific project update, including diff metadata | ✅ Implemented |
175+
| `linear_getProjectUpdates` | Get updates for a project, including Linear diff metadata | ✅ Implemented |
176+
| `linear_archiveProjectUpdate` | Archive a project update | ✅ Implemented |
177+
| `linear_unarchiveProjectUpdate` | Restore an archived project update | ✅ Implemented |
178+
| `linear_deleteProjectUpdate` | Delete a project update | ✅ Implemented |
167179
| `linear_archiveProject` | Archive a project | ✅ Implemented |
168180
| `linear_addIssueToProject` | Add an existing issue to a project | ✅ Implemented |
169181
| `linear_removeIssueFromProject` | Remove an existing issue from a project | ✅ Implemented |
@@ -174,7 +186,7 @@ These are MCP-server observability helpers for tool-only clients.
174186

175187
### Release Management Tools
176188

177-
This batch uses raw GraphQL instead of the installed SDK because the current public release schema is available but the local `@linear/sdk` package does not expose first-class release models yet. It now covers both the release/read note flows and the release pipeline/stage admin mutations exposed in the public alpha schema.
189+
Release and release pipeline tools use focused GraphQL where this server needs custom response shaping for release notes, pipeline stages, and admin mutations. The package now targets the current `@linear/sdk` baseline.
178190

179191
| Tool Name | Description | Status |
180192
| -------------------------------- | ------------------------------------------------------------------------ | -------------- |
@@ -247,6 +259,34 @@ This batch uses raw GraphQL instead of the installed SDK because the current pub
247259
| `linear_getInitiativeProjects` | Get all projects in an initiative | ✅ Implemented |
248260
| `linear_addProjectToInitiative` | Add a project to an initiative | ✅ Implemented |
249261
| `linear_removeProjectFromInitiative` | Remove a project from an initiative | ✅ Implemented |
262+
| `linear_getInitiativeUpdateById` | Get a specific initiative update, including diff metadata | ✅ Implemented |
263+
| `linear_getInitiativeUpdates` | Get updates for an initiative, including Linear diff metadata | ✅ Implemented |
264+
| `linear_createInitiativeUpdate` | Create a new initiative update | ✅ Implemented |
265+
| `linear_updateInitiativeUpdate` | Update an existing initiative update | ✅ Implemented |
266+
| `linear_archiveInitiativeUpdate` | Archive an initiative update | ✅ Implemented |
267+
| `linear_unarchiveInitiativeUpdate` | Restore an archived initiative update | ✅ Implemented |
268+
269+
### Customer Tools
270+
271+
Linear exposes customer data and customer requests/needs through the SDK. Customer needs can be linked to issues or projects.
272+
273+
| Tool Name | Description | Status |
274+
| ---------------------------------------------- | ------------------------------------------------ | -------------- |
275+
| `linear_getCustomers` | Get customers with optional filters | ✅ Implemented |
276+
| `linear_getCustomerById` | Get details of a specific customer | ✅ Implemented |
277+
| `linear_createCustomer` | Create a customer | ✅ Implemented |
278+
| `linear_updateCustomer` | Update a customer | ✅ Implemented |
279+
| `linear_deleteCustomer` | Delete a customer | ✅ Implemented |
280+
| `linear_getCustomerNeeds` | Get customer needs with optional filters | ✅ Implemented |
281+
| `linear_getCustomerNeedById` | Get details of a specific customer need | ✅ Implemented |
282+
| `linear_createCustomerNeed` | Create a customer need linked to an issue or project | ✅ Implemented |
283+
| `linear_createCustomerNeedFromAttachment` | Create a customer need from an attachment | ✅ Implemented |
284+
| `linear_updateCustomerNeed` | Update a customer need | ✅ Implemented |
285+
| `linear_archiveCustomerNeed` | Archive a customer need | ✅ Implemented |
286+
| `linear_unarchiveCustomerNeed` | Restore an archived customer need | ✅ Implemented |
287+
| `linear_deleteCustomerNeed` | Delete a customer need | ✅ Implemented |
288+
| `linear_getCustomerStatuses` | Get customer statuses | ✅ Implemented |
289+
| `linear_getCustomerTiers` | Get customer tiers | ✅ Implemented |
250290

251291
### Views and Filters
252292

@@ -312,6 +352,17 @@ The following tools are recommended for future implementation based on the curre
312352

313353
Items that looked conceptually mismatched with the current SDK or too speculative for this repo have been removed or moved to lower-priority sections.
314354

355+
### Recent Linear Surfaces Without Stable Tool Parity
356+
357+
These were reviewed against the current SDK/changelog but are intentionally not exposed as MCP tools yet because they do not have a stable SDK-backed request/response shape in this repo.
358+
359+
| Surface | Current Status |
360+
| ------- | -------------- |
361+
| Linear Diffs review operations | Product feature is available in Linear, but review/diff mutations are not exposed as stable SDK primitives for this MCP surface |
362+
| Shared Linear Agent skills / `AgentSkill` migration | GraphQL types exist, but this repo does not yet expose an SDK-backed skills management surface |
363+
| Team resource section/pin writes | Team resource reads are implemented; section/pin creation and reordering remain SDK/schema-gap candidates |
364+
| GraphQL subscriptions and realtime updates | Supported by Linear's API, but not a good fit for this server's current stateless request/response tool model |
365+
315366
### Comment Management
316367

317368
Comment CRUD is now covered.
@@ -352,6 +403,10 @@ Linear milestones currently appear to belong to a single project in the SDK. Rea
352403

353404
Team settings, memberships, and team label management are now covered.
354405

406+
### Customers and Customer Needs
407+
408+
Customer records, customer statuses/tiers, and customer needs linked to issues or projects are now covered.
409+
355410
### Custom Fields
356411

357412
The repo already supports custom field discovery and issue value reads/updates. Admin CRUD appears to require the same kind of schema-driven GraphQL work used by the existing custom field support.

package-lock.json

Lines changed: 9 additions & 71 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)