furlen-mcp
This MCP server (furlen-mcp) generates animated, claim-verified chart videos from tabular data or public datasets, enabling plain‑English requests to fetch real data and turn it into narrated videos.
Fetch public datasets: Describe a dataset in plain English (e.g., "India GDP over the last 10 years") and get real rows, CSV, and provenance from World Bank, IMF WEO, FRED, Eurostat, UN Comtrade, WHO, SEC EDGAR, ESEF, DART, EDINET, and more.
Render animated chart videos: Submit CSV data and receive an AI‑narrated video where every claim is recomputed and verified against the source; export is blocked if claims don’t reconcile.
Poll render status: Check progress (queued → running → completed) and retrieve the download URL once ready (typically 30‑90 seconds).
Customize output: Audience tone (investor, LinkedIn, YouTube, etc.), aspect ratio (16:9, 9:16, 1:1), file format (MP4, GIF), and resolution (720p, 1080p, 4k).
No file uploads needed: Chain fetch → render → status for an end‑to‑end pipeline directly from a data description.
Graceful error handling: Returns descriptive 422 errors for unsupported subjects instead of guessing.
furlen-mcp
An MCP server for making charts. Give Claude, Cursor, or any Model Context Protocol client a table of numbers and it returns an animated chart video — and it recomputes every figure in the narration against your rows before it will export anything.
Published to the official MCP registry as io.github.amitsha86/furlen-mcp. Backed by
Furlen.
Why this one is different
Most chart tooling will draw whatever number you hand it, and an AI-assisted one will happily generate a number to draw. This server won't: the story it writes is checked claim-by-claim against the source rows server-side, and a claim that doesn't reconcile blocks the export rather than shipping. You can watch that gate run at furlen.pro/proof.
That matters more through an agent than through a UI. Nobody is watching the intermediate output, so the check has to be the thing that refuses — not a human noticing.
Related MCP server: aidemo
Setup
Create a Furlen API key at furlen.pro → Settings → API keys.
Add the server to your MCP client config. Nothing to install first;
npxfetches it.
{
"mcpServers": {
"furlen": {
"command": "npx",
"args": ["-y", "furlen-mcp"],
"env": { "FURLEN_API_KEY": "sg_live_..." }
}
}
}Claude Desktop: add the block above to
claude_desktop_config.jsonand restart.Cursor: add it to
.cursor/mcp.json.Any other MCP client: run
npx -y furlen-mcpwithFURLEN_API_KEYset.
Tools
furlen_public_data
Fetch a real public dataset by describing it — no spreadsheet needed.
"India GDP over the last 10 years" · "compare US and China population" · "Apple revenue over 6 years" · "US healthy life expectancy" · "India exports to the US"
Resolves through Furlen's adapters for the World Bank, IMF WEO, FRED, Eurostat, UN Comtrade,
WHO and company filings (SEC EDGAR, ESEF, DART, EDINET). Returns the rows, a ready-to-use
csv string you can pass straight to furlen_render, and provenance naming the exact indicator.
If no connected source covers the subject it says so: a 422 with code: "subject_unsupported"
means the data doesn't exist here, not that the request was malformed — don't retry it
reworded. Exchange rates are the canonical example.
furlen_render
Turns CSV text into an animated, claim-verified chart video. One call runs the whole pipeline —
profile the data, find the insights, write the story, verify every claim, render — and returns a
renderId.
Arg | Values | Default |
| Raw CSV text, header row first | — |
|
|
|
|
|
|
|
|
|
|
|
|
furlen_render_status
Polls a renderId. Returns status (queued → running → completed | failed), progress, and a
downloadUrl when finished. Renders usually take 30–90 seconds, so poll every few seconds
rather than blocking.
Example
"Here's my quarterly revenue CSV — make a LinkedIn chart video from it with Furlen."
The agent calls furlen_render, polls furlen_render_status, and hands back the download link once
the video is ready.
Example: chart public data end to end
"Chart India's GDP over the last 10 years and make me a LinkedIn video."
The agent calls furlen_public_data with that request, gets back rows plus a csv string, passes
the csv to furlen_render, polls furlen_render_status, and returns the download link. No file
ever touches the agent's filesystem.
What it can't do yet
Worth knowing before you wire it up:
No file uploads. Data arrives as CSV text or by naming a public dataset — not as an attached spreadsheet.
Rendering is asynchronous. There is no synchronous "give me a chart back now" call.
The sources are the sources. If no connected provider publishes the figure, you get a refusal rather than an estimate. That is the design, not a gap.
It needs an API key with the
data:readandrenders:writescopes, and your plan's limits on resolution, watermarking and render minutes apply exactly as in the app.
Environment
FURLEN_API_KEY(required) — your workspace API key.FURLEN_BASE_URL(optional) — defaults tohttps://furlen.pro.
Links
Product: https://furlen.pro
API + MCP docs: https://furlen.pro/developers#mcp
How claim verification works: https://furlen.pro/proof
MIT © Furlen
Available Tools
3 toolsfurlen_public_dataA
Fetch a real public dataset by describing it in plain English — no CSV needed. Pulls from the World Bank, IMF WEO, FRED, Eurostat, UN Comtrade, WHO, and company filings (SEC EDGAR, ESEF, DART, EDINET). Returns the rows, a ready-to-use csv string you can pass straight to furlen_render, and provenance naming the exact indicator and source. If no connected source covers the subject it says so rather than guessing — a 422 with code 'subject_unsupported' means the data does not exist here, not that the request was malformed, so do not retry it reworded.
Inputs: prompt (required).
furlen_renderA
Turn CSV data into an animated, claim-verified data-story video. Runs Furlen's full pipeline (profile → insights → AI story → verification → render) and returns a render id to poll with furlen_render_status.
Inputs: csv (required), format, audience, resolution, +1 more.
furlen_render_statusA
Check a Furlen render job. Returns status (queued → running → completed | failed), progress, and a downloadUrl when completed. Renders typically take 30–90 seconds; poll every few seconds.
Inputs: renderId (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 3 tools
Each tool serves a distinct purpose: fetching data, rendering a video, and checking render status. There is no functional overlap between them.
All tools follow a consistent 'furlen_<noun>' pattern with clear, descriptive names. The naming convention is uniform and predictable.
With only 3 tools, the set is tightly scoped to the core workflow (fetch, render, poll). Each tool is essential and no tool feels redundant or missing.
The tool surface covers the entire data-to-video pipeline: data fetching, render initiation, and status polling. No obvious gaps exist for the stated purpose.
Maintenance
Related MCP Connectors
Turn words, images, and audio into an animated video with MP4 export.
Turn a topic, URL, or document into a narrated, animated explainer video.
Creates 2D motion-graphics videos: kinetic typography, charts, formulas, narrated explainers.
Generate AI videos from a prompt or document (PDF/PPTX/DOCX/URL) and export shareable MP4s.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to generate narrated videos from topics or scripts, with stock footage, home videos, or local AI clips.2MIT
- AlicenseAqualityAmaintenanceYour coding agent makes the demo video — turns a storyboard.json into a narrated, captioned product-demo MP4; deterministic replay re-renders it in CI at ~$0.241,152 npm29MIT
- AlicenseNot gradedqualityDmaintenanceTurn words, images, and audio into an animated video with MP4 export.MIT
- AlicenseAqualityCmaintenanceEnables generating production-ready Tableau workbooks from natural language and CSV, including dataset profiling, publishing to Tableau Cloud, and workbook preview.562 npmMIT