# Reported issues for MCP Superset

Pod holds 6 of 6 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to [MCP Superset](/mcp/mcp-superset).

## Most discussed

### Bug: filter_add returns 500 Fatal error on Superset 6.0.1 when dashboard has position_json set

## Description

`superset_dashboard_filter_add` (and other filter write tools) always return a 500 Fatal error when the target dashboard has `position_json` set — regardless of what the filter configuration contains.

## Steps to Reproduce

1. Create a dashboard with `position_json` (either during create or via `dashboard_update`)
2. Call `superset_dashboard_filter_add` on that dashboard
3. Tool fails with 500

## Error

```
Error calling tool 'superset_dashboard_filter_add': Superset API PUT /a

[Read the thread](https://github.com/bintocher/mcp-superset/issues/13) · 2026-07-02 · closed · external user · 3 comments

### Bug: chart_update dashboards parameter fails with pydantic validation error

## Description

Calling `superset_chart_update` with a `dashboards` list always fails with a pydantic input validation error. The tool never executes.

## Steps to Reproduce

```
superset_chart_update(chart_id=65, dashboards=[31])
```

## Error

```
Input validation error: Invalid arguments for tool superset_chart_update: [
  {
    "code": "list_type",
    "expected": "list[int]",
    "received": "string",
    "input": "[31]"
  }
]
```

The MCP framework serializes the integer array `[31]` as th

[Read the thread](https://github.com/bintocher/mcp-superset/issues/12) · 2026-07-02 · closed · external user · 1 comment

### Bug: filter_add/filter_list/filter_update/filter_delete crash with TypeError when dashboard json_metadata is null

## Description

When calling any native filter tool on a dashboard where `json_metadata` is `null` in the Superset API response, the tool crashes with:

```
TypeError: the JSON object must be str, bytes or bytearray, not NoneType
```

## Steps to Reproduce

1. Create a dashboard (Superset may return `json_metadata: null` for it via GET)
2. Call any of the following tools on that dashboard:
   - `superset_dashboard_filter_add`
   - `superset_dashboard_filter_list`
   - `superset_dashboard_filter_

[Read the thread](https://github.com/bintocher/mcp-superset/issues/11) · 2026-07-02 · closed · external user · 1 comment

### Bug: filter_add/filter_list/filter_update/filter_delete crash with TypeError when dashboard json_metadata is null

## Description

All native filter tools crash with `TypeError: the JSON object must be str, bytes or bytearray, not NoneType` when a dashboard's `json_metadata` field is `null` in the Superset API response.

## Root Cause

All affected functions use:
```python
metadata = json.loads(result.get("json_metadata", "{}"))
```

`dict.get(key, default)` only returns the default when the **key is missing**. If the key exists but its value is `None` (which Superset returns for dashboards created without m

[Read the thread](https://github.com/bintocher/mcp-superset/issues/10) · 2026-07-02 · closed · external user · 0 comments

### BUG: position_json merge bloqueado — validação roda antes do merge

## Descrição
`superset_dashboard_update` com `position_json` parcial é rejeitado porque `_validate_position_json_structure` roda no input ANTES do merge com o `current_pos`.

## Evidência
```
PUT com {"CHART-938": {"meta": {"width": 8}}}
→ REJECTED: node 'CHART-938' missing 'type' field
```

## Causa
Ordem em `superset_dashboard_update()`: validar pos → GET current → merge. Deveria ser: GET current → merge → validar merged.

## Arquivo
`src/mcp_superset/tools/dashboards.py` — função `superset_da

[Read the thread](https://github.com/bintocher/mcp-superset/issues/9) · 2026-06-26 · closed · external user · 1 comment

### --version flag reports 0.2.4 instead of actual 0.2.6

## Bug

`--version` CLI flag reports hard-coded `0.2.4` even though the installed package is `0.2.6`.

## Reproduction

$ uvx --from "mcp-superset==0.2.6" python -c "import mcp_superset; print(mcp_superset.version)"
0.2.6
$ uvx --from "mcp-superset==0.2.6" mcp-superset --version
mcp-superset 0.2.4

## Cause

`src/mcp_superset/__main__.py:62` hard-codes the version string in the argparse `version=` argument:

```python
parser.add_argument(
    "--version",
    action="version",
    version="%(pro

[Read the thread](https://github.com/bintocher/mcp-superset/issues/6) · 2026-06-12 · closed · external user · 0 comments

## Most recent

The remaining reports are on [the project's issue tracker](https://github.com/bintocher/mcp-superset/issues).
