Flint: A visualization language for the AI era
| Source: Microsoft Research Blog
Tags: Flint, Microsoft Research, data-visualization, MCP, Vega-Lite, agentic-ai, open-source
Microsoft Research has released Flint, an open-source visualization intermediate language that lets AI agents generate polished charts from compact specs — the compiler infers scales, spacing, labels, and color schemes from semantic data types, then outputs to Vega-Lite, Apache ECharts, or Chart.js. An MCP server ships with it for direct agent workflow integration.
Details
Flint addresses a specific but pervasive problem in AI-driven data work: agents either produce generic charts from minimal specifications, or generate fragile, verbose low-level code when asked for polished output. Microsoft Research's solution is an intermediate language layer where compact specs compile to fully-configured chart library parameters. The mechanism is semantic data types. A field declared as YearMonth or Profit tells the Flint compiler how to treat that data — which scale to use, where to set the baseline, how to format values, which color scheme fits. The compiler handles sizing, spacing, and label layout automatically as data cardinality changes, preventing charts from becoming unreadable as datasets grow. Supported backends: Vega-Lite, Apache ECharts, and Chart.js, all from the same spec without rewriting. For agent workflows, Flint ships two components: the flint-chart library and a flint-chart-mcp server. The MCP integration means agents can create, validate, and render charts directly inside Claude, Cursor, VS Code, or any MCP-compatible environment without additional glue code. The project is open-source. Its practical impact is highest for teams building agents that output data visualizations — financial dashboards, analytical reports, research outputs — where consistent chart quality and human editability of the spec matter. The intermediate language approach also means humans can inspect and modify agent-generated chart specs without parsing raw Vega-Lite JSON.