Skip to content

feat: promote data-integration connectors (atlassian, azure-devops, github, gitlab, linear) - #107

Merged
monoxgas merged 1 commit into
mainfrom
promote/data-integrations
Jul 29, 2026
Merged

feat: promote data-integration connectors (atlassian, azure-devops, github, gitlab, linear)#107
monoxgas merged 1 commit into
mainfrom
promote/data-integrations

Conversation

@monoxgas

Copy link
Copy Markdown
Contributor

Promotes the five tracker / repo connectors from capabilities-internal after a formal reviewing-capabilities audit. 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.

Capability Upstream First-party Auth Read-only enforcement
atlassian Rovo MCP (mcp.atlassian.com/v1/mcp) OAuth (DCR) / API token credential only
azure-devops @azure-devops/mcp@2.8.1 ✅ Microsoft az login delegation credential only
github api.githubcopilot.com/mcp/ PAT server-side + PAT scopes
gitlab @zereight/mcp-gitlab@2.1.43 community (deliberate) PAT server-side, on by default
linear mcp.linear.app/mcp OAuth (DCR) / API key credential only

What 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's default toolset 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 via X-MCP-Toolsets58 tools, all four security tools present. Also adds an optional X-MCP-Readonly binding (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 behind USE_PIPELINE / USE_GITLAB_WIKI / USE_MILESTONE, unset here (62 read-only tools instead of 89). Now set, each overridable. Pin 2.1.182.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_team are 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 the pipelines domain so the advertised "inspect pipeline runs" is true (76 tools); test-plans and advanced-security stay opt-in.

atlassian — OAuth discovery was described wrong. Atlassian serves no RFC 9728 protected-resource document (those paths 404, and the 401 carries no resource_metadata); discovery resolves via authorization-server metadata naming cf.mcp.atlassian.com, not the cross-host auth.atlassian.com handshake 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. gitlab and github can enforce read-only server-side; linear, atlassian, and azure-devops are 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-existing checks: warns in web-security, 0 failed).
  • Manifests resolved through the SDK loader to confirm ${VAR} interpolation, optional-header dropping, and env defaults — verified that linear / atlassian send no Authorization header under OAuth (no empty-Bearer on the wire) and that X-MCP-Readonly appears only when the var is set.
  • Tool surfaces measured against live GitHub, GitLab, and Azure DevOps servers, both read-only and read-write.
  • Every tool name cited in skill prose checked against the live surface.

Version 0.1.01.0.0 and repository: retargeted to dreadnode/capabilities on all five.

🤖 Generated with Claude Code

…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>
@monoxgas
monoxgas merged commit 92f44f3 into main Jul 29, 2026
4 checks passed
@monoxgas
monoxgas deleted the promote/data-integrations branch July 29, 2026 03:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant