Getting an agent to finish the analysis is only half the job. The last mile—turning results into a reliable chart—often breaks when the model writes long Vega-Lite or ECharts JSON by hand. Your concrete next action after this article: connect flint-chart-mcp on one client, run create / validate / render on one real dataset, pin a backend to the delivery format, then adopt or skip versus direct chart codegen or BI built-ins.
📑Table of Contents
- What Flint Is — A Semantic Visualization Intermediate Language
- Five Backends — When to Prefer Vega-Lite, ECharts, Plotly, or Excel
- Installing flint-chart-mcp — Tools, Data Boundaries, Safe Defaults
- Quality Signals and Adjacent Stacks — DirectVL, Data Formulator, Fabric
- Pre-Adoption Checklist and Fit / Non-Fit
- FAQ
- Key Takeaways
Flint in brief
Flint (microsoft/flint-chart, MIT) is Microsoft Research’s visualization intermediate language for agents.
You give it data plus semantic types (Rank, Price, Country, and more) and a compact chart spec. The compiler derives scales, axes, spacing, legends, and layout, then emits native output for:
- Vega-Lite
- Apache ECharts
- Chart.js
- Plotly
- Excel via Office.js
Short defaults look weak; polished low-level specs are brittle.
What this article covers
Flint moves that work into a short human-editable contract plus a compiler—and, when you want agent tools, into flint-chart-mcp for create / validate / render. This article covers:
- what Flint is
- how to choose among five backends
- MCP setup and data boundaries
- what changed in v0.4.0
- a practical adoption checklist
Learning outcomes
What Flint Is — A Semantic Visualization Intermediate Language
Flint’s stated goal is stable, polished charts from short specs that both humans and agents can edit.
Two main components
The official README splits the project into two main pieces:
flint-chart— JS/TS library (npm install flint-chart)flint-chart-mcp— MCP server for chat and coding agents (npx -y flint-chart-mcp)
Input model and semantic types
The input model has two parts:
- data specification (fields with semantic types)
- chart specification (chart type and encodings)
Per the Microsoft Research blog, the compiler derives:
- parsing
- scales
- axes
- aggregations
- formatting
- color
- layout
There are 70+ semantic types. The same number field behaves differently as Rank versus Price, or Country versus Temperature.
Research framing and scale
On the research side, arXiv:2607.20775 formalizes a hierarchical semantic model and translation into executable Vega-Lite, ECharts, and Chart.js specs.
As of the 2026-08-05 survey snapshot, GitHub showed roughly:
- 3.4k stars / 170 forks
- Node 18+
- MIT license
Python is still a source-only preview without a released package.
Primary sources:
Five Backends — When to Prefer Vega-Lite, ECharts, Plotly, or Excel
One spec, multiple backends
The project site lists 50 chart types across 5 backends and 121 gallery examples. One Flint spec can recompile when you switch backends.
Library APIs mirror that design and share the same ChartAssemblyInput:
assembleVegaLiteassembleEChartsassembleChartjsassemblePlotlyassembleExcel
Plotly and Excel in v0.4.0
Release v0.4.0 (2026-07-24) adds:
- a Plotly backend (38 types) for statistical/analytical traces
- 18 native editable Excel templates via Office.js for editable business workbooks
Backend comparison table
Use the same Flint input, then pick the compile target that matches the delivery surface.
Fit and role by backend
| Dimension | Vega-Lite | Apache ECharts | Chart.js | Plotly | Excel (Office.js) |
|---|---|---|---|---|---|
| Best fit | Declarative grammar, research/analysis pipelines | Rich web dashboards | Lightweight web embeds | Statistical/analytical traces | Editable business workbooks |
| Role in Flint | Core compile target | Core compile target | Core compile target | Expanded in v0.4.0 (38 types) | 18 native templates in v0.4.0 |
Agent benefit and caveats
| Dimension | Vega-Lite | Apache ECharts | Chart.js | Plotly | Excel (Office.js) |
|---|---|---|---|---|---|
| Agent benefit | Avoid brittle low-level specs | Keep agent logic backend-agnostic | Same | Short specs for analysis traces | Drop straight into Office artifacts |
| Caveat | Higher abstraction than raw grammar | Pixel control stays on the backend | Expressiveness depends on use case | Plotly deps and rendering traits | Needs Office.js / host environment |
Sources for backend claims
- Flint project site
- Release 0.4.0
- GitHub README (as of August 2026)
Independent product framing
Independent write-ups reinforce the product framing.
Report and dashboard agent framing
- AGORÀ Intelligence — candidate chart layer for report/dashboard agent pipelines
SaaS and embedded BI framing
- Ecosistema Startup — when an intermediate language beats direct library codegen for conversational dashboards and embedded BI

Installing flint-chart-mcp — Tools, Data Boundaries, Safe Defaults
For agents, MCP is the shortest path. The official loop is:
- connect the server
- ask for a chart
- refine with interactive widgets
Preferred tools and resources
Preferred tool: create_chart_view (live SVG preview and chart options). Also available:
render_chart— PNG / SVGcompile_chart— backend-native JSON plus warningsvalidate_chart— valid / warnings / errors and computed sizelist_chart_types— available chart types
Resources and prompt:
- Resources:
flint://agent-skill,flint://chart-types - Prompt:
author_flint_chart
Zero-install stdio config:
{
"mcpServers": {
"flint": {
"command": "npx",
"args": ["-y", "flint-chart-mcp"]
}
}
}
Data boundary
Treat the data boundary as a hard constraint:
data.values— inline rowsdata.url— local CSV / TSV / JSON only- Remote URLs are never fetched
- For untrusted hosts, pass
--disable-file-referenceso only inline values are accepted
Library-only path and third-party examples
Library-only installs use npm install flint-chart. Third-party implementation notes:
- The Menon Lab — re-documents
npx -y flint-chart-mcpand the validate → PNG/SVG / native-config path for builders - Qiita (matayuuu) — Fabric Data Agent → Flint MCP → local web display flow that separates analysis from rendering (
matayuuu/DataAgent-with-Flint-DemoApp)
Sources: Flint MCP guide, The Menon Lab, Qiita matayuuu.
Quality Signals and Adjacent Stacks — DirectVL, Data Formulator, Fabric
DirectVL comparison
The MSR blog publishes LLM-judge comparisons against DirectVL (full Vega-Lite generation). On Tidy Tuesdays-derived data, examples include:
- GPT-5.1: 16.27 vs 15.91
- GPT-5-mini: 16.16 vs 15.60
- GPT-4.1: 15.91 vs 15.34
Those numbers are published benchmark snapshots, not a guarantee for your data. Always validate and render on representative samples before trusting production output.
Data Formulator and Fabric
Flint also powers visualization inside Data Formulator (MSR blog; AIToolly).
The project site points to an Agent Skill entry at skills.sh/microsoft/flint-chart/flint-chart-author.
The practical design lesson from the Fabric demo is simple:
- do not hard-wire an analysis agent to one renderer
- let the agent write a short semantic spec
- let Flint compile and the backend render
That boundary makes it easier to swap Chart.js today for ECharts or Excel tomorrow without rewriting the agent’s chart logic.
Pre-Adoption Checklist and Fit / Non-Fit
Use this sequence before you commit:
Decision sequence (7 steps)
Work through the checks in order. Stop early if a hard constraint fails.
Fit, runtime, and MCP checks
- Use-case fit — Do agents need charts in reports, dashboards, or conversational analytics? Skip Flint for purely static hand-authored charts.
- Runtime — Node 18+ and
npxavailable? Library-only needsnpm install flint-chart; agent wiring needs MCP. - MCP smoke test — Add
npx -y flint-chart-mcpto Claude Code, Cursor, or another client; start withlist_chart_typesandvalidate_chart. - Data boundary — Inline values enough? Allow local files? On untrusted hosts, enable
--disable-file-reference. Remote URL fetch is unsupported.
Backend trial and alternatives
- Backend choice — Web embed (Chart.js / ECharts), analysis traces (Plotly), Office artifacts (Excel), or grammar pipelines (Vega-Lite).
- One real-data trial — Run create / validate / compile / render on production-like CSV/JSON and inspect warnings plus layout.
- Compare alternatives — Direct Vega-Lite/ECharts generation, BI built-ins, or hand templates. Keep the lowest-maintenance path.
Good fit
- MCP-capable coding/chat agents
- SaaS or embedded BI that must switch renderers
- Fabric / Data Formulator-style separation of analysis and drawing
Poor fit
- Pixel-perfect brand control that requires raw backend specs
- Python-only environments without npm/npx
- Workflows that must fetch remote URLs at render time
FAQ
Positioning and setup
Version scope and quality
Key Takeaways
Flint attacks a concrete failure mode: agents writing brittle low-level chart JSON.
The operational core is a short semantic spec, a compiler, and optional flint-chart-mcp tools for create / validate / render. With v0.4.0, the same input can target:
- web charts
- analytical Plotly traces
- editable Excel artifacts
Recommended next steps (do this today)
Run this four-step loop once. That is enough evidence to adopt or skip.
Four-step adoption loop
- Connect — Register
npx -y flint-chart-mcpon one client (Claude Code, Cursor, or equivalent) and smoke-test withlist_chart_types - One real-data trial — On production-like CSV/JSON, run
create_chart_vieworvalidate_chart→compile_chart→render_chart, then inspect warnings and layout - Pin the backend — Decide whether the artifact is a web embed, analysis trace, or Office workbook, and lock one of Vega-Lite / ECharts / Chart.js / Plotly / Excel
- Adopt or skip — Replay the same data with direct Vega-Lite/ECharts generation or a BI built-in chart, keep the lower-maintenance path, and decide
Related reading
Author
krona23
Over 20 years in the IT industry, serving as Division Head and CTO at multiple companies running large-scale web services in Japan. Experienced across Windows, iOS, Android, and web development. Currently focused on AI-native transformation. At DevGENT, sharing practical guides on AI code editors, automation tools, and LLMs in three languages.
🔥 Most Popular
- Claude Desktop Won't Install? Windows & Mac Fixes That Worked (2026)
- What Is VS Code? Features, Extensions & Copilot — Complete Guide (2026)
- Obsidian Visualization Tools: Graph, Canvas, Excalidraw (2026)
- LM Studio Bionic Preview: Local Open-Model Agent for Docs and Code
- Japan's AI Third Pole Strategy: Reducing US LLM Dependency and Performance Realities









Leave a Reply