Add first-class Linear MCP tools - #57874
Conversation
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
|
✅ This PR looks great! Thanks to the Copilot agent for implementing Linear's first-class MCP tools integration. The contribution is comprehensive:
This is ready for review by maintainers. Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
To allow these domains, add them to the network:
allowed:
- defaults
- "github.com"See Network Configuration for more information.
|
|
Category: feature | Risk: medium | Score: 54 (impact 32 + urgency 10 + quality 12) | Action: batch_review | Batch: workflow-automation. New Linear MCP integration; draft and needs review before merge.
|
|
@copilot readonly is set to true by the compiler always |
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
|
@copilot review and finish feature as needed. The mcp should support a token field or a well known secret name. |
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Implemented in 792017b, with validation follow-ups in 7340d1a and 0eb420f. |
|
@copilot implement support for toolsets with compiler support for checking |
|
@copilot resolve the merge conflicts on this branch. |
|
@copilot Please resolve the merge conflicts on this branch by running
Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
To allow these domains, add them to the network:
allowed:
- defaults
- "github.com"See Network Configuration for more information.
|
There was a problem hiding this comment.
🟡 Changes recommended
MCP inspection cannot parse or authenticate the compiled Linear configuration, and the advertised contract is inconsistent.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Adds first-class, read-only Linear MCP integration across compilation, validation, inspection, schemas, and documentation.
Changes:
- Expands
tools.linearinto authenticated HTTP MCP configuration. - Adds Linear toolsets, filtering, networking, and validation.
- Updates tests, editor metadata, documentation, and release notes.
File summaries
| File | Description |
|---|---|
scripts/generate-schema-docs.test.js |
Tests Linear schema documentation. |
scripts/generate-schema-docs.js |
Improves array example and reference rendering. |
pkg/workflow/mcp_config_validation.go |
Registers Linear for MCP validation. |
pkg/workflow/linear_tool.go |
Expands and validates Linear configuration. |
pkg/workflow/linear_tool_test.go |
Tests expansion and compilation. |
pkg/workflow/compiler_orchestrator_tools.go |
Integrates Linear expansion. |
pkg/parser/schemas/main_workflow_schema.json |
Defines the Linear schema. |
pkg/parser/schema_errors.go |
Adds Linear toolset hints. |
pkg/parser/schema_errors_test.go |
Tests Linear validation hints. |
pkg/parser/mcp.go |
Adds Linear MCP inspection parsing. |
pkg/parser/mcp_linear_test.go |
Tests parsing and schema behavior. |
pkg/parser/linear_toolsets.go |
Defines and expands toolsets. |
pkg/parser/linear_toolsets_test.go |
Tests toolset validation. |
pkg/constants/tool_constants.go |
Defines Linear endpoint and token defaults. |
docs/src/content/docs/reference/tools.md |
Documents Linear tools. |
docs/src/content/docs/reference/frontmatter-full.md |
Adds generated schema reference. |
docs/public/editor/autocomplete-data.json |
Adds editor autocomplete metadata. |
.changeset/minor-add-linear-tools.md |
Records the new integration. |
Review details
- Files reviewed: 18/18 changed files
- Comments generated: 5
- Review effort level: Balanced
| if toolName == "linear" { | ||
| return buildLinearBuiltinConfig(toolValue) |
There was a problem hiding this comment.
Fixed in 715b3f0e77: MCP inspection now accepts the compiler-expanded Linear HTTP representation, including its type, URL, headers, allowed tools, and required setting.
| Headers: map[string]string{ | ||
| "Authorization": "Bearer " + token, | ||
| }, |
There was a problem hiding this comment.
Fixed in 715b3f0e77: available environment-backed secret values are substituted into HTTP headers immediately before inspection connects, without persisting or logging the credential.
| func validateLinearToolConfig(config map[string]any) (string, []string, error) { | ||
| knownFields := map[string]struct{}{ | ||
| "token": {}, "toolsets": {}, "allowed": {}, "required": {}, | ||
| } |
| # Optional Linear API key or OAuth access token secret reference. Defaults to ${{ | ||
| # secrets.LINEAR_API_KEY }}. | ||
| # (optional) | ||
| token: "example-value" |
There was a problem hiding this comment.
Fixed in 715b3f0e77: the generated Linear token example now uses ${{ secrets.LINEAR_API_KEY }}.
| # List of allowed Linear MCP tool names or wildcard patterns. When toolsets are | ||
| # set, every pattern must match a tool in those toolsets. | ||
| # (optional) | ||
| allowed: [] | ||
| # Array of strings |
There was a problem hiding this comment.
Fixed in 715b3f0e77: the generated Linear allowed example is now non-empty (["*"]) and valid against the schema.
…ls-linear-integration # Conflicts: # docs/public/editor/autocomplete-data.json # docs/src/content/docs/reference/frontmatter-full.md # docs/src/content/docs/reference/tools.md # pkg/parser/schemas/main_workflow_schema.json Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
|
@copilot Please resolve the merge conflicts on this branch by running
|
Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
Ran the requested main-branch merge and resolved all conflicts in merge commit
Resolved the merge conflicts by merging |
Refreshed |
|
@copilot Please review the current PR state, confirm whether the latest Linear follow-ups fully address review feedback, and run the
Warning Firewall blocked 1 domainThe following domain was blocked by the firewall during workflow execution:
To allow these domains, add them to the network:
allowed:
- defaults
- "github.com"See Network Configuration for more information.
|
Reviewed the current head ( |
|
@copilot Please review the current PR state, address the remaining Linear follow-up, refresh the branch if needed, and run the
|
…ls-linear-integration Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
Refreshed the branch from latest |
|
🎉 This pull request is included in a new release. Release: |
Adds
tools.linearintegration for Linear’s hosted MCP server using Streamable HTTP and secret-safe bearer authentication. Read-only access is enforced by default through Linear’s/readonlyendpoint.Changes
tools.linearinto the generic remote HTTP MCP configuration.token,read-only,allowed, andrequired.mcp.linear.app.tools.cli-proxy.Warning
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
github.comTo allow these domains, add them to the
network.allowedlist in your workflow frontmatter:See Network Configuration for more information.
Run reference: https://github.com/github/gh-aw/actions/runs/33648331948
Warning
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
github.comTo allow these domains, add them to the
network.allowedlist in your workflow frontmatter:See Network Configuration for more information.