Skip to content

feat: MCP passthrough deprecation -- parity map, warnings, CI canary (0.74.0, #478 phase 2) - #509

Merged
padak merged 1 commit into
mainfrom
feat/mcp-deprecation-phase2-390
Jul 21, 2026
Merged

feat: MCP passthrough deprecation -- parity map, warnings, CI canary (0.74.0, #478 phase 2)#509
padak merged 1 commit into
mainfrom
feat/mcp-deprecation-phase2-390

Conversation

@padak

@padak padak commented Jul 20, 2026

Copy link
Copy Markdown
Member

Summary

Phase 2 of the #478 plan — the MCP passthrough deprecation track (0.74.0). Stacked on #508 (phase 0+1); merge that first, this PR's base then retargets to main.

Nothing breaks: tool call / tool list / agent --type mcp_tool keep working through the deprecation window — they just tell you exactly what to use instead.

Parity map as code

src/keboola_agent_cli/mcp_parity.py — one entry per upstream tool (39/39 live catalog coverage, verified), including notes for the two intentional non-ports (query_dataworkspace query, validate_semantic_querysemantic-layer validate). Offline tests pin every entry to a registered CLI operation, so renaming a native command without updating the map fails regular CI.

Deprecation warnings (additive-only envelopes)

  • tool call NAME: per-tool message naming the exact replacement — stderr in human mode, additive deprecation key inside the data payload in --json (error envelopes untouched, test-pinned).
  • tool list: cli_equivalent column (human) / field (JSON) + a banner; unmapped tools get "".
  • agent create/update/test --type mcp_tool: warning pointing at --type cli_command; persisted agents.json and REST payloads byte-identical (test proves agent show carries no new key).
  • Serve: /mcp/tools* routes marked deprecated: true in OpenAPI (/mcp/server-status stays — embedded-server health, used by doctor/UI).

CI canary

.github/workflows/mcp-parity-canary.yml (weekly cron + manual) runs scripts/check_mcp_parity.py — stdlib-only (loads the map straight from the module file, no package import → bare python3, no dependency install), diffs the live keboola-mcp-server TOOLS.md against the map: new upstream tool → red run; removed upstream tool → warning. Local: make parity-check. Deliberately NOT in the PR-blocking test job (network).

Docs flipped CLI-first

Deprecation banner atop mcp-workflow.md; gotchas.md (since v0.74.0) section; CLAUDE.md, AGENT_CONTEXT, commands-reference.md, keboola-expert.md updated.

Verification

  • make check green: 4613 passed (16 new tests: 5 parity-map invariants + 11 warning/envelope tests).
  • Canary live run: catalog: 39 tools, parity map: 39 entries — OK.
  • Live smoke on a real project: tool call get_buckets returns data + the storage buckets hint in both modes (stderr / JSON key); tool list maps get_buckets→storage buckets, run_job→job run, docs_query→docs query, create_sql_transformation→transformation create.

Remaining phase 3 (tracked in #390/#478): passthrough removal + agents.json mcp_tool migration story, after a deprecation window.


Open in Devin Review

CI note: the CI workflow triggers only on PRs targeting main — it will run automatically once #508 merges and this PR's base retargets. Until then the local equivalent (make check, the CI mirror) is green: 4613 passed. Devin Review ran and passed with zero findings.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Open in Devin Review

Base automatically changed from feat/mcp-fail-closed-and-parity-390 to main July 21, 2026 19:23
…pic #390)

Parity map as code (mcp_parity.py, 39 entries incl. intentional
non-ports) with offline registry-pinning tests; per-tool deprecation
warnings in tool call (stderr + additive JSON 'deprecation' key),
cli_equivalent column in tool list, warnings on agent --type mcp_tool
(create/update/test; persisted agents.json and REST payloads untouched);
/mcp/tools* serve routes marked deprecated in OpenAPI; weekly
mcp-parity-canary workflow + make parity-check (stdlib-only script,
live-verified 39/39 catalog coverage); docs flipped CLI-first
(mcp-workflow banner, gotchas 0.74.0, CLAUDE.md, AGENT_CONTEXT,
commands-reference, keboola-expert). Version 0.74.0.
@padak
padak force-pushed the feat/mcp-deprecation-phase2-390 branch from 03f5fda to 11bec88 Compare July 21, 2026 19:28
@padak
padak merged commit 8bc3e46 into main Jul 21, 2026
4 checks passed
@padak
padak deleted the feat/mcp-deprecation-phase2-390 branch July 21, 2026 19:37
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