Amin Ghadersohi
06276e76c5
fix(mcp): resolve ruff E501 and formatting issues to pass pre-commit
...
- Split long string literal in schema_validator.py line 202 (E501, 94 > 88 chars)
- Apply ruff format auto-fixes to big_number.py, handlebars.py, and test_get_chart_data.py
2026-05-20 21:20:08 +00:00
Amin Ghadersohi
eb2e6bd48e
refactor(mcp): complete plugin protocol — registry bootstrap, mypy fixes, test repairs
...
On top of the dead-code elimination in the previous commit:
- Add lazy _ensure_plugins_loaded() bootstrap to ChartTypeRegistry so the
registry is populated even without importing app.py (fixes isolated test runs)
- Delegate _RegistryProxy methods to module-level functions so bootstrap runs
- Guard register() against empty chart_type strings
- Add generate_name + resolve_viz_type to ChartTypePlugin Protocol and
BaseChartPlugin; delegate generate_chart_name/_resolve_viz_type in
chart_utils to the plugin registry
- Add _with_context static helper to BaseChartPlugin (shared by all plugins)
- Fix stale 'five methods' → 'eight methods' docstring in plugin.py
- Add TypeVar _C to normalize_column_names so mypy infers correct return type
- Fix broken tests: update _pre_validate_big_number_config → _pre_validate_chart_type,
remove deleted TestNormalizeXYConfig/TestNormalizeTableConfig classes,
update runtime validator tests for removed _validate_format_compatibility /
_validate_cardinality methods, add x is not None narrowing guards
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-20 21:20:08 +00:00
Alexandru Soare
fb276b08dd
fix(mcp): Skip misleading trend analysis for categorical ASCII charts ( #39761 )
2026-05-20 18:04:21 +03:00
Alexandru Soare
6e8b3bf976
fix(mcp): raise right error ( #39964 )
2026-05-20 14:32:45 +03:00
Alexandru Soare
55024e8f4d
feat(mcp): Add mcp_call_id to tool responses for server log correlation ( #39776 )
2026-05-20 14:30:22 +03:00
Alexandru Soare
b98bd2a07a
fix(mcp): Block destructive DDL (DROP, TRUNCATE, ALTER) in execute_sql ( #39621 )
2026-05-20 14:29:15 +03:00
Alexandru Soare
0a3a35018c
fix(mcp): changed_on_humanized null in write tool responses (generate_dashboard, generate_chart) ( #39488 )
2026-05-20 14:08:51 +03:00
Elizabeth Thompson
ef0efb7493
fix(mcp): exclude self-referencing filter columns from get_schema output ( #39826 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com >
2026-05-18 13:51:25 -07:00
SkinnyPigeon
70419e9d8f
feat: Allow specific mcp tools to be disabled ( #39835 )
2026-05-18 07:22:02 -07:00
Richard Fogaca Nienkotter
1e2d0b5f5b
fix(mcp): defer chart preview command imports ( #40164 )
2026-05-15 12:15:33 -03:00
Richard Fogaca Nienkotter
8fa5a75c70
fix(mcp): apply cached adhoc filters to chart retrieval ( #40099 )
2026-05-14 14:21:54 -03:00
Sandesh Devaraju
823eb905d3
fix(mcp): JSON-serialize order_by_cols and support sort direction ( #39952 )
...
Co-authored-by: Amin Ghadersohi <amin.ghadersohi@gmail.com >
2026-05-14 11:19:37 -04:00
Richard Fogaca Nienkotter
2a1dcb79e3
fix(mcp): expose table chart type labels in chart responses ( #40060 )
2026-05-13 16:38:31 -03:00
Richard Fogaca Nienkotter
c59ab8bffd
feat(mcp): add data boundary instruction to harden against prompt injection ( #40080 )
2026-05-13 09:40:44 -03:00
Richard Fogaca Nienkotter
fa06989ed7
fix(mcp): return requested update chart previews ( #40077 )
2026-05-12 21:23:49 -03:00
Amin Ghadersohi
460992d89b
fix(mcp): improve not-found errors to suggest corresponding list_* tools ( #39919 )
...
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-05-12 02:38:10 -04:00
Amin Ghadersohi
85935b0b88
fix(mcp): handle SSL connection drop during pre-call session teardown ( #39917 )
2026-05-12 02:32:14 -04:00
Amin Ghadersohi
547660dcc4
fix(mcp): ASCII chart crashes with NaN when dataset contains null values ( #39916 )
2026-05-08 17:35:15 -04:00
Amin Ghadersohi
cfb0b6e811
fix(mcp): clarify request wrapper in list_datasets, list_charts, list_dashboards ( #39920 )
2026-05-08 16:01:07 -04:00
Amin Ghadersohi
ff7dc53853
fix(mcp): get_chart_sql drops x_axis on echarts_timeseries_* and only renders one query for mixed_timeseries ( #39865 )
2026-05-08 15:29:28 -04:00
Amin Ghadersohi
9b520312a1
fix(mcp): use tiktoken for response-size-guard token estimation ( #39912 )
2026-05-07 11:51:31 -04:00
Amin Ghadersohi
9ac4711ac8
fix(mcp): prevent DetachedInstanceError in get_chart_preview ( #39921 )
2026-05-07 11:44:11 -04:00
Amin Ghadersohi
4a21a5365f
fix(mcp): validate column refs in generate_explore_link, update_chart_preview, and update_chart ( #39797 )
2026-05-05 19:12:31 -04:00
Richard Fogaca Nienkotter
9459bc7bf4
fix(mcp): warn on invalid chart preview form data key ( #39891 )
...
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-05-05 16:40:00 -03:00
Beto Dealmeida
cb53745d43
feat: semantic layer extension ( #37815 )
2026-05-05 12:07:46 -04:00
Amin Ghadersohi
673634f7af
fix(mcp): point get_dataset_info url to explore view instead of legacy tablemodelview edit ( #39838 )
2026-05-04 13:39:05 -04:00
Amin Ghadersohi
28239c18d4
feat(mcp): warn when execute_sql template_params used with templating disabled ( #39858 )
2026-05-04 12:14:44 -04:00
Elizabeth Thompson
98eaaaa6d6
fix(mcp): clear stale thread-local DB session in sync tool wrapper ( #39798 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-01 09:24:48 -07:00
Amin Ghadersohi
957b298ae1
fix(mcp): add default request parameter to list_charts and list_dashboards ( #39730 )
2026-04-30 18:04:39 -04:00
Amin Ghadersohi
f29d82b3b1
feat(mcp): add query_dataset tool to query datasets using semantic layer ( #39727 )
2026-04-30 18:03:41 -04:00
Enzo Martellucci
e4fe08ab9e
feat(mcp): add generate_bug_report tool with PII sanitization ( #39595 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-30 12:47:14 +02:00
Richard Fogaca Nienkotter
c2b9272f4c
fix(mcp): sanitize read path output for LLM context ( #39738 )
2026-04-29 19:06:19 -03:00
Enzo Martellucci
e3e834bbf7
fix(mcp): fall back to title match when dashboard slug lookup misses ( #39567 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-29 23:03:16 +02:00
Elizabeth Thompson
8d17c34068
feat(mcp): restore self-lookup via created_by_me flag ( #39638 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-29 11:03:28 -07:00
Richard Fogaca Nienkotter
549aff7cf9
fix(mcp): clarify chart preview URL metadata ( #39731 )
2026-04-29 12:37:40 -03:00
Amin Ghadersohi
4b42f82f13
fix(mcp): restore typed ChartConfig in tool schemas for LLM visibility ( #39732 )
2026-04-28 19:46:57 -04:00
Richard Fogaca Nienkotter
d0abb66fdf
fix(mcp): default chart previews to ascii ( #39719 )
2026-04-28 13:30:39 -03:00
Amin Ghadersohi
6947881ba7
fix(mcp): classify user errors as WARNING, system errors as ERROR ( #39634 )
...
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com >
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 08:55:17 -04:00
Mehmet Salih Yavuz
3f28f5d012
fix(mcp): surface structured errors for generate_chart validation failures ( #39484 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-28 11:13:53 +03:00
Amin Ghadersohi
7774ec7e3c
fix(mcp): database filter columns, timeseries SQL, and unsaved chart datasource name ( #39636 )
2026-04-27 13:41:06 -04:00
Amin Ghadersohi
ad20285dd6
fix(mcp): sanitize chart config errors and accept field name aliases ( #39606 )
2026-04-24 21:30:43 -04:00
Richard Fogaca Nienkotter
57e563b177
fix(mcp): redact dashboard data model metadata ( #39632 )
2026-04-24 17:37:15 -03:00
Enzo Martellucci
d7941ccfec
fix(mcp): surface XSS sanitization in chart/dashboard names instead of silently stripping ( #39491 )
2026-04-24 14:59:20 +02:00
Richard Fogaca Nienkotter
d79eb5842a
fix(mcp): protect data-model metadata from dashboard viewers ( #39599 )
...
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com >
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-24 09:40:39 -03:00
Amin Ghadersohi
7c4f87615b
fix(mcp): correct method name in API key auth (extract_api_key_from_request) ( #39437 )
2026-04-23 23:33:23 -04:00
Amin Ghadersohi
012bf52c8c
fix(mcp): resolve $ref by inlining definitions in compact schema ( #39562 )
2026-04-23 17:58:06 -04:00
Richard Fogaca Nienkotter
0d50fd676b
fix(mcp): hide user directory metadata from responses ( #39576 )
...
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com >
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 17:35:08 -03:00
Enzo Martellucci
dae79a6cba
fix(mcp): surface validation errors in generate_chart instead of empty response ( #39522 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-23 21:50:02 +02:00
Amin Ghadersohi
b1b6a057d8
fix(mcp): unwrap ToolResult payload before truncation in ResponseSizeGuardMiddleware ( #39578 )
...
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com >
2026-04-23 12:35:13 -04:00
Amin Ghadersohi
e6853894ab
chore(mcp): extract shared chart helpers and ASCII rendering into separate modules ( #39438 )
2026-04-21 20:10:49 -04:00