Fixed
- Native filter tools crashed on dashboards whose
json_metadatais null (#11). Superset returnsjson_metadata: null(not"{}") for dashboards that never had metadata written, sosuperset_dashboard_filter_add/list/update/delete/resetraisedTypeError: the JSON object must be str, bytes or bytearray, not NoneTypebefore making any API call. Nulljson_metadataandposition_jsonare now read as empty objects everywhere. - List arguments were unusable when the client sent them JSON-encoded (#12). Some MCP clients serialise
dashboards=[31]as the string"[31]", which pydantic rejected withlist_type. All list parameters (dashboards,roles,owners,users,user_ids,role_ids,tables,permission_view_menu_ids,allowed_domains) now accept a native list, a JSON-encoded list, a bare value, or a comma-separated string.
Changed
- Superset error responses of the form
{"errors": [{"message": ..., "error_type": ..., "extra": {"issue_codes": [...]}}]}are unpacked into the raised error instead of being stringified, so a 500 carries the error type and issue codes rather than a bare "Fatal error".
Both fixes were reproduced and verified against a live Superset 6.0.1 instance, with regression tests running over the MCP layer. Thanks to @bymcs for the reports.