datawrapper-mcp
Use this MCP server to create, style, publish, inspect, update, delete, and export Datawrapper charts through an AI assistant.
Discover available Datawrapper chart types and fetch detailed configuration schemas for each.
Create charts from inline list, dict, JSON, or CSV/JSON file data with customizable titles, colors, axes, labels, annotations, tooltips, and other styling.
Update existing chart data or high-level configuration, but not the chart type, which is immutable.
Publish charts to make them publicly accessible and retrieve public/edit URLs.
Retrieve an existing chart's configuration, metadata, and URLs for inspection or cloning.
Delete charts permanently.
Export charts as PNG with options for zoom, width, height, plain mode, transparency, and borders.
Authenticate using the DATAWRAPPER_ACCESS_TOKEN environment variable, an Authorization Bearer header for hosted deployments, or a per-tool access_token argument.
Pass custom free-text guidance to MCP clients via DATAWRAPPER_MCP_INSTRUCTIONS.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@datawrapper-mcp Create a line chart from this data: 2020 15, 2021 20, 2022 25"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
A Model Context Protocol (MCP) server and app for creating Datawrapper charts using AI assistants. Built on the datawrapper Python library.
Status: early and experimental. This project — including its Claude Code/Desktop plugin and marketplace listing — is under active development, and behavior can change between releases. In particular, the plugin/marketplace install path has known gaps (see issue #78) — don't treat it yet as a finished, zero-maintenance install path for a wider rollout.
Example Usage
You can provide a data file and simply ask for the chart you want. The draft will soon appear in the panel.

Here's a more complete example showing how to create, publish, update, and display a chart by chatting with the assistant:
"Create a datawrapper line chart showing temperature trends with this data:
2020, 15.5
2021, 16.0
2022, 16.5
2023, 17.0"
# The assistant creates the chart and returns the chart ID, e.g., "abc123"
"Publish it."
# The assistant publishes it and returns the public URL
"Update chart with new data for 2024: 17.2°C"
# The assistant updates the chart with the new data point
"Make the line color dodger blue."
# The assistant updates the chart configuration to set the line color
"Show me the editor URL."
# The assistant returns the Datawrapper editor URL where you can view/edit the chart
"Show me the PNG."
# The assistant embeds the PNG image of the chart in its contained response.
"Suggest five ways to improve the chart."
# See what happens!Related MCP server: Draw.io MCP Server
Tools
Tool | Description |
| List available chart types with descriptions |
| Get the full configuration schema for a chart type |
| Create a new chart with data and configuration |
| Update an existing chart's data or styling |
| Publish a chart to make it publicly accessible |
| Retrieve a chart's configuration and metadata |
| Permanently delete a chart |
| Export a chart as a PNG image |
Chart Types
bar, line, area, arrow, column, multiple column, scatter, stacked bar
Use list_chart_types to see descriptions, then get_chart_schema to explore configuration options for any type.
Getting Started
Requirements
A Datawrapper account (sign up at https://datawrapper.de/signup/)
An MCP client such as Claude or OpenAI Codex
Python 3.10 or higher
Get Your API Token
Create a new API token
Add it to your MCP configuration as shown in the installation guide
Quick Start (Claude Code)
{
"mcpServers": {
"datawrapper": {
"command": "uvx",
"args": ["datawrapper-mcp"],
"env": {
"DATAWRAPPER_ACCESS_TOKEN": "your-token-here"
}
}
}
}For other clients (Claude Desktop, Claude.ai, Cursor, VS Code Copilot, ChatGPT, OpenAI Codex, OpenClaw) and Kubernetes deployment, see the installation guide.
Installing via a plugin marketplace/directory (Claude Desktop's plugin browser, ClawHub, etc.) is still experimental. These interactive install flows currently have no working way to collect required environment variables like
DATAWRAPPER_ACCESS_TOKEN— see issue #78 for details. The manually-edited config shown above (and throughout the installation guide) is the reliable path today.
Using Your Own Token (Hosted Deployments)
When connecting to a hosted instance of the server over HTTP, you can authenticate
with your own Datawrapper API token by sending it in the Authorization header:
Authorization: Bearer <your-datawrapper-api-token>This ensures charts are created under your account instead of the server operator's. The token is read from the header automatically — no need to include it in every tool call.
You can also pass access_token directly as a tool argument, which takes precedence
over the header. When neither is provided, the server falls back to its
DATAWRAPPER_ACCESS_TOKEN environment variable.
Custom Instructions
Set DATAWRAPPER_MCP_INSTRUCTIONS to have the server hand your own free-text
guidance to connecting MCP clients (many, including Claude, fold this into
the model's context). Use it for house style rules — required fields, naming
conventions, and the like — without forking the server:
"env": {
"DATAWRAPPER_ACCESS_TOKEN": "your-token-here",
"DATAWRAPPER_MCP_INSTRUCTIONS": "Every chart needs alt text and a CMS slug in its notes field."
}Supported Clients
Client | Config file | Transport |
Claude Desktop |
| stdio or streamable-http |
Claude.ai | Personal or org connector | streamable-http |
Claude Code | Plugin marketplace or | stdio |
VS Code Copilot |
| stdio |
Cursor |
| stdio or streamable-http |
ChatGPT | Dev Mode settings | streamable-http only |
OpenAI Codex |
| stdio |
OpenClaw | ClawHub plugin or | stdio |
Available Tools
9 toolscheck_datawrapper_connectionCheck Datawrapper ConnectionARead-onlyIdempotent
⚠️ DATAWRAPPER MCP TOOL ⚠️ This is part of the Datawrapper MCP server integration.
Check which Datawrapper account is currently authenticated, without creating, modifying, or deleting anything. Use this to troubleshoot access issues - especially when connected through a personal Claude connector using a per-user Authorization header, where a misconfigured header silently falls back to a different account instead of raising an error. If the reported email isn't the one you expected, the header isn't reaching the server correctly.
Inputs: access_token. Returns: result
create_chartCreate ChartB
⚠️ THIS IS THE DATAWRAPPER INTEGRATION ⚠️ Use this MCP tool for ALL Datawrapper chart creation.
DO NOT: ❌ Install the 'datawrapper' Python package ❌ Use the Datawrapper API directly ❌ Import 'from datawrapper import ...' ❌ Run pip install datawrapper
This MCP server IS the complete Datawrapper integration. All Datawrapper operations should use the MCP tools provided by this server.
Create a Datawrapper chart with full control using Pydantic models. This allows you to specify all chart properties including title, description, visualization settings, axes, colors, and more. The chart_config should be a complete Pydantic model dict matching the schema for the chosen chart type.
BEST PRACTICES:
Start simple, then add customization based on user feedback
Only apply styling when requested or when it significantly improves readability
Let Datawrapper handle axis scaling automatically unless there's a specific reason to override
QUICK EXAMPLES:
Basic chart with title: chart_config = { "title": "Monthly Sales", "intro": "Sales data for Q1 2024" }
Chart with custom colors: chart_config = { "title": "Product Comparison", "color_category": { "Product A": "#1f77b4", "Product B": "#ff7f0e" } }
Styled line chart: chart_config = { "title": "Sales Trends", "lines": [ {"column": "sales", "width": "style2", "interpolation": "curved"} ], "custom_range_y": [0, 1000] }
STYLING WORKFLOW:
Use list_chart_types to see available chart types
Use get_chart_schema to explore all options for your chosen type
Refer to https://datawrapper.readthedocs.io/en/latest/ for detailed examples
Build your chart_config with the desired styling properties
Common styling patterns:
Colors: {"color_category": {"sales": "#1d81a2", "profit": "#15607a"}}
Line styling: {"lines": [{"column": "sales", "width": "style1", "interpolation": "curved"}]}
Axis ranges: {"custom_range_y": [0, 100], "custom_range_x": [2020, 2024]} NOTE: Datawrapper's automatic axis scaling is excellent. Only set custom ranges when you need specific customization (e.g., comparing multiple charts, forcing zero baseline for specific analytical reasons, or matching a house style guide).
Grid formatting: {"y_grid_format": "0", "x_grid": "on", "y_grid": "on"}
Tooltips: {"tooltip_number_format": "00.00", "tooltip_x_format": "YYYY"}
Annotations: {"text_annotations": [{"x": "2023", "y": 50, "text": "Peak"}]}
See the documentation for chart-type specific examples and advanced patterns.
Inputs: data (required), chart_type (required), chart_config (required), access_token.
delete_chartDelete ChartCDestructiveIdempotent
⚠️ DATAWRAPPER MCP TOOL ⚠️ This is part of the Datawrapper MCP server integration.
Delete a Datawrapper chart permanently.
Inputs: chart_id (required), access_token. Returns: result
export_chart_pngExport Chart PngARead-onlyIdempotent
⚠️ DATAWRAPPER MCP TOOL ⚠️ This is part of the Datawrapper MCP server integration.
Export a Datawrapper chart as PNG and display it inline. The chart must be created first using create_chart. Supports high-resolution output via the zoom parameter. IMPORTANT: Only use this tool when the user explicitly requests to see the chart image or export it as PNG. Do not automatically export charts after creation unless specifically asked.
Inputs: chart_id (required), zoom, plain, width, +6 more.
get_chartGet ChartBRead-onlyIdempotent
⚠️ DATAWRAPPER MCP TOOL ⚠️ This is part of the Datawrapper MCP server integration.
Get information about an existing Datawrapper chart, including its complete configuration, metadata, and URLs.
The returned configuration can be used to:
Understand how a chart is styled and configured
Adapt the configuration to a new dataset
Clone a chart's styling to create similar visualizations
Returns:
chart_id: The chart's unique identifier
title: Chart title
type: Simplified chart type name (bar, line, stacked_bar, etc.) - same format as used in list_chart_types and create_chart
config: Complete Pydantic model configuration including all styling, colors, axes, tooltips, annotations, and other properties
public_url: Public URL if published
edit_url: Editor URL
Inputs: chart_id (required), access_token. Returns: result
get_chart_schemaGet Chart SchemaARead-onlyIdempotent
⚠️ DATAWRAPPER MCP TOOL ⚠️ This is part of the Datawrapper MCP server integration.
Get the Pydantic JSON schema for a specific chart type. This is your primary tool for discovering styling and configuration options.
The schema shows:
All available properties and their types
Enum values (e.g., line widths, interpolation methods)
Default values
Detailed descriptions for each property
WORKFLOW: Use this tool first to explore options, then refer to https://datawrapper.readthedocs.io/en/latest/ for detailed examples and patterns showing how to use these properties in practice.
Inputs: chart_type (required). Returns: result
list_chart_typesList Chart TypesARead-onlyIdempotent
⚠️ DATAWRAPPER MCP TOOL ⚠️ This is part of the Datawrapper MCP server integration.
List all available Datawrapper chart types with brief descriptions.
Use this tool to discover which chart types you can create. After choosing a type, use get_chart_schema(chart_type) to explore detailed configuration options.
Returns: List of available chart types with descriptions
Inputs: no named parameters.
publish_chartPublish ChartAIdempotent
⚠️ DATAWRAPPER MCP TOOL ⚠️ This is part of the Datawrapper MCP server integration.
Publish a Datawrapper chart to make it publicly accessible and render a preview in chat. IMPORTANT: Only use this tool when the user explicitly requests to publish the chart. Do not automatically publish charts after creation unless specifically asked.
Inputs: chart_id (required), access_token.
update_chartUpdate ChartAIdempotent
⚠️ DATAWRAPPER MCP TOOL ⚠️ This is part of the Datawrapper MCP server integration.
Update an existing Datawrapper chart's data or configuration using Pydantic models.
⚠️ IMPORTANT LIMITATION: You CANNOT change the chart type with this tool. Chart types are immutable once created. To change from one chart type to another (e.g., column → stacked_bar, or line → area), you must create a new chart instead.
WHAT YOU CAN UPDATE: • Chart data (add/modify/replace data points) • Title, intro, byline, source information • Colors, styling, axes configuration • Tooltips, annotations, labels • Any other configuration options for the existing chart type
WHAT YOU CANNOT UPDATE: ✗ Chart type (bar, line, column, etc.) - this is permanent
The chart_config must use high-level Pydantic fields only (title, intro, byline, source_name, source_url, etc.). Do NOT use low-level serialized structures like 'metadata', 'visualize', or other internal API fields.
STYLING UPDATES: Use get_chart_schema to see available fields, then apply styling changes:
Colors: {"color_category": {"sales": "#ff0000"}}
Line properties: {"lines": [{"column": "sales", "width": "style2"}]}
Axis settings: {"custom_range_y": [0, 200], "y_grid_format": "0,0"}
Tooltips: {"tooltip_number_format": "0.0"}
See https://datawrapper.readthedocs.io/en/latest/ for detailed examples. The provided config will be validated through Pydantic and merged with the existing chart configuration.
Inputs: chart_id (required), data, access_token, chart_config.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
Each tool has a distinct role in the Datawrapper lifecycle: discovery (list_chart_types, get_chart_schema), account check, create, publish, get, update, delete, and export. There is no meaningful overlap between chart creation, publishing, exporting, or schema exploration. The workflow order is made explicit in descriptions.
All tool names use snake_case with clear verb_noun patterns such as create_chart, get_chart, update_chart, delete_chart, publish_chart, and export_chart_png. The only slight variation is check_datawrapper_connection, but it still follows snake_case and remains readable. The set is highly predictable.
Nine tools is well-scoped for a chart creation and management integration. Each tool covers a necessary operation without obvious redundancy. The count stays comfortably within the ideal 3-15 range.
Core chart lifecycle operations are covered: creation, retrieval, update, deletion, publishing, export, schema discovery, and connection checking. The main gap is the lack of a list_charts or search tool for finding existing chart IDs, which would help agents manage prior work. This is a minor gap that can be worked around when chart IDs are known.
Maintenance
Related MCP Connectors
Create, inspect, manage, and render charts and data visualizations as SVG/PNG or interactive embeds.
Renders interactive Chart.js charts and dashboards inline in AI conversations.
Clean messy tabular data and render publication-ready PNG charts from your AI assistant.
Charts and tables for AI agents with live-updating embed links. No account: signup returns a key.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that enables AI assistants to create, update, and publish Datawrapper charts through natural language. It provides tools for data synchronization, visual configuration, and retrieving chart images or editor links.8MIT
- AlicenseCqualityDmaintenanceEnables AI models to create and manage various types of diagrams (flowcharts, UML, network diagrams, etc.) via the Model Context Protocol.26102 npm6ISC
- FlicenseNot gradedqualityDmaintenanceEnables interaction with the Datawrapper API to create, manage, and publish data visualizations through natural language.3-
- AlicenseNot gradedqualityDmaintenanceEnables creating, managing, and publishing Datawrapper charts.MIT