CC 2.1.128/129 Adoption — Group B: MCP hygiene

Five MCP-related upstream changes documented + one functional manifest restructure. Closes 8 cc-adoption issues (4 features × 2 dupe slugs each).

Issues closed 8 / 19+ in the milestone

PairFeatureCCCategory
#1637 + #1653workspace_reserved_mcp_name2.1.128breaking
#1640 + #1656mcp_shell_prefix_arg_corruption_fix2.1.128breaking
#1648 + #1667denied_mcp_wildcard_case_fix2.1.129breaking
#1662plugin_manifest_experimental_block2.1.129breaking
(no GH issue, gap=5)mcp_tool_count_display2.1.128new_field

The one real code change: monitors → experimental.monitors

Before — manifests/ork.json

{
  "name": "ork",
  "skills": "all",
  "agents": "all",
  "hooks": "all",
  "monitors": "./monitors/monitors.json",
  "userConfig": { ... }
}

After — manifests/ork.json

{
  "name": "ork",
  "skills": "all",
  "agents": "all",
  "hooks": "all",
  "experimental": {
    "monitors": "./monitors/monitors.json"
  },
  "userConfig": { ... }
}

CC 2.1.129+ expects monitors and themes under experimental. Top-level still works but claude plugin validate warns. scripts/build-plugins.sh updated to emit the new shape; the built plugins/ork/.claude-plugin/plugin.json already verifies clean against claude plugin validate.

Files changed

PathChange
manifests/ork.jsonMove monitors under experimental
scripts/build-plugins.shEmit experimental.monitors (line 314 of jq codegen)
src/skills/configure/references/mcp-config.mdNew section "CC 2.1.128/129 changes" — covers all 5 features
tests/security/test-mcp-deny-case.shNew regression: documentation contract for case-insensitive deny rules
tests/security/run-security-tests.shWire the new test into the suite
plugins/ork/...(mirrored by build) — verifies new shape lands

The 5 features in one screen

FeatureWhat changesAction
workspace_reserved_mcp_name Reserved name; existing servers named workspace silently skipped Audit: confirmed no workspace server in our manifests; doc'd reserved-names rule
mcp_shell_prefix_arg_corruption_fix CLAUDE_CODE_SHELL_PREFIX wrapping no longer corrupts MCP stdio argv Doc-only — note in mcp-config.md
denied_mcp_wildcard_case_fix deniedMcpServers matches hostnames case-insensitively (RFC-correct) Doc + regression test asserting we don't recommend defensive case enumeration
mcp_tool_count_display /mcp shows tool count and flags zero-tool servers Doc the new format; doctor checklist will use it for diagnostics
plugin_manifest_experimental_block monitors + themes belong under experimental Manifest restructure + build script + doc for plugin authors

Verification

Group C next: security-adjacent fixes — subprocess OTel isolation, OAuth scope tightening, bash glob allow-rule fix. Then D (config/permission), then E (new distribution surfaces).