Files
superset2/docs/superpowers
Enzo MartellucciandClaude Sonnet 5 0c6c90de58 feat(dashboard-v2): add set_widget_control_values MCP write tool
Third and final sub-project from the control-panel architecture ask,
scoped down after discovering the assumed infrastructure doesn't exist:
Dashboard V2's node.props lives only in the frontend's in-memory
DashboardProvider (explicitly "No persistence"), and
Widget.validate_control_values has never had a real caller -- only its
own REST endpoint handler invokes it, and nothing in the traced human
edit flow does.

Adds a minimal MCP-process-local node store (node_store.py, mirroring
widgets/registry.py's plain-dict idiom) and one new tool that gives
validate_control_values its first real caller: shallow-merges provided
control values onto a node's current values (matching
DashboardProvider.updateProps's own merge semantics), validates the
candidate, and only commits (a single dict reassignment) on success --
so a validation failure is atomic by construction, not by explicit
rollback code. Registered in app.py (a tool exported from tool/__init__.py
but missing from app.py's import list is invisible to a real MCP client
despite passing every direct-call test -- caught this by adding a
Client(mcp)-based registration test, not just _impl calls).

Persistence, default-seeding, generated-value propagation, and the
broader value-precedence contract from the original ask are explicitly
out of scope -- documented as follow-ups in the accompanying spec.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-27 09:01:26 +02:00
..