feat: promote data-integration connectors (atlassian, azure-devops, github, gitlab, linear) - #107
Merged
Merged
Conversation
…ithub, gitlab, linear) Promotes the five tracker/repo connectors from capabilities-internal after a formal reviewing-capabilities audit. Each is a pure connector — manifest plus one skill, no bespoke tool code — wrapping an upstream MCP server (first-party for four of five; gitlab wraps a community server by deliberate choice). The audit booted every server and diffed the real tool surface against the prose. Three of five shipped a surface that didn't match what they advertised; those are fixed here rather than in a separate pass. Surface fixes (all measured against live servers): * github — the manifest advertised Dependabot, code scanning, and Actions, but GitHub's "default" toolset registers none of them, so those tools were simply absent (47 tools). Now requests default+actions+code_security+ dependabot+secret_protection via X-MCP-Toolsets: 58 tools with all four security tools present. Adds an optional X-MCP-Readonly binding (GITHUB_READ_ONLY_MODE) — the skill previously claimed no in-band read-only toggle existed, which was wrong; it drops the surface to 38. * gitlab — pipelines, wikis, and milestones were advertised but never registered, because the upstream gates them behind USE_PIPELINE / USE_GITLAB_WIKI / USE_MILESTONE (62 tools read-only instead of 89). Now set, each overridable via GITLAB_USE_*. Pin moved 2.1.18 -> 2.1.43. Dropped the "snippets" claim: no snippet tools exist in this server at any version. * azure-devops — pin moved 2.7.0 -> 2.8.1. The ado_mcp_project / ado_mcp_team env defaults were inert on 2.7.x (added upstream in 2.8.0), so the documented "skip the selection prompt" behaviour never happened. Added the pipelines domain so the advertised "inspect pipeline runs" is true (76 tools); test-plans and advanced-security stay opt-in. Accuracy fixes: * atlassian — corrected the OAuth discovery description. Atlassian serves no RFC 9728 protected-resource document (those paths 404); discovery resolves through authorization-server metadata naming cf.mcp.atlassian.com, not the cross-host auth.atlassian.com handshake previously described. * All five skills told the agent to load `dreadnode/finding-triage`, which exists in neither repo nor the registry. Replaced with an explicit out-of-scope statement. * Corrected stale GitLab tier gating: the first-party OAuth MCP moved from Premium to Free in 19.2 and is beta since 18.6, so the community-server default is now justified on surface and GA status, not tier. * Documented the read/write posture across the set — gitlab and github can enforce read-only server-side; linear, atlassian, and azure-devops are credential-scoped only. Each README cross-links the others. Promotion mechanics: version 0.1.0 -> 1.0.0 and repository field retargeted to dreadnode/capabilities on all five. Verified: `dn capability validate --strict` passes on all five; manifests resolved through the SDK loader to confirm interpolation, optional-header dropping, and env defaults; tool surfaces confirmed against live GitHub, GitLab, and Azure DevOps servers. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Promotes the five tracker / repo connectors from
capabilities-internalafter a formalreviewing-capabilitiesaudit. Paired with the removal PR in the internal repo — no duplicates across repos.Shape
All five are pure connectors:
capability.yaml+ one skill, zero bespoke tool code, wrapping an upstream MCP server. Four of five wrap the first-party server. There is no bespoke-MCP duplication anywhere in the set.atlassianmcp.atlassian.com/v1/mcp)azure-devops@azure-devops/mcp@2.8.1az logindelegationgithubapi.githubcopilot.com/mcp/gitlab@zereight/mcp-gitlab@2.1.43linearmcp.linear.app/mcpWhat the audit changed
The audit booted every server and diffed the real tool surface against the prose. Three of five shipped a surface that didn't match what they advertised. Those are fixed here rather than in a separate pass.
github— advertised security tools were absent. GitHub'sdefaulttoolset registers no Dependabot, code-scanning, or Actions tools, so the manifest's headline features simply weren't there (47 tools, zero Dependabot). Now requests them explicitly viaX-MCP-Toolsets→ 58 tools, all four security tools present. Also adds an optionalX-MCP-Readonlybinding (GITHUB_READ_ONLY_MODE) → 38 tools; the skill had claimed no in-band read-only toggle existed, which was wrong.gitlab— pipelines, wikis, milestones were advertised but never registered. The upstream gates them behindUSE_PIPELINE/USE_GITLAB_WIKI/USE_MILESTONE, unset here (62 read-only tools instead of 89). Now set, each overridable. Pin2.1.18→2.1.43. Dropped the snippets claim — no snippet tools exist in this server at any version.azure-devops— env plumbing was inert.ado_mcp_project/ado_mcp_teamare read only as of upstream 2.8.0; the pin was 2.7.0, so the documented "skip the selection prompt" behaviour never happened. Pin →2.8.1. Added thepipelinesdomain so the advertised "inspect pipeline runs" is true (76 tools);test-plansandadvanced-securitystay opt-in.atlassian— OAuth discovery was described wrong. Atlassian serves no RFC 9728 protected-resource document (those paths 404, and the 401 carries noresource_metadata); discovery resolves via authorization-server metadata namingcf.mcp.atlassian.com, not the cross-hostauth.atlassian.comhandshake previously described. The flow works — the explanation didn't match it, which is worse than silence when someone is debugging a failed connect.All five — phantom capability reference. Every skill told the agent to load
dreadnode/finding-triage, which exists in neither repo nor the registry. Replaced with an explicit out-of-scope statement.gitlab— stale tier gating. The first-party OAuth MCP moved Premium → Free in 19.2 and is beta since 18.6. The community-server default is now justified on surface breadth and GA status rather than tier, and the first-party swap is presented as available to everyone.Read/write posture recorded.
gitlabandgithubcan enforce read-only server-side;linear,atlassian, andazure-devopsare credential-scoped only. Each README states its own posture and cross-links the others, since "read-only" means materially different things across the set.Verification
dn capability validate --strict— passes on all five (repo-wide: 21 ok, 3 pre-existingchecks:warns inweb-security, 0 failed).${VAR}interpolation, optional-header dropping, and env defaults — verified thatlinear/atlassiansend noAuthorizationheader under OAuth (no empty-Bearer on the wire) and thatX-MCP-Readonlyappears only when the var is set.Version
0.1.0→1.0.0andrepository:retargeted todreadnode/capabilitieson all five.🤖 Generated with Claude Code