Datawrapper
PYPI · DATAWRAPPER-MCP · SCANNED SEP 20
A Model Context Protocol (MCP) server and app for creating Datawrapper charts using AI assistants
Available components
Recent critical change
CVE-2026-32871 affects this package (3 Aug 2026). See the changelog before you install this server.
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs setuptools.build_meta at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 7 of 71 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 6 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability49
- 25% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Partial
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 2597 tokens (~199/item across 13 items; 9 tools + 4 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management83
- Stability observed for 25 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (44% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
- Supports UI / widget rendering.Pass
How do I install the Datawrapper MCP server?
Datawrapper runs locally as a PyPI package, launched with uvx datawrapper-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · datawrapper-mcp
claude mcp add palewire-datawrapper-mcp -- uvx datawrapper-mcp
{
"mcpServers": {
"palewire-datawrapper-mcp": {
"command": "uvx",
"args": [
"datawrapper-mcp"
]
}
}
} {
"servers": {
"palewire-datawrapper-mcp": {
"command": "uvx",
"args": [
"datawrapper-mcp"
]
}
}
} codex mcp add palewire-datawrapper-mcp -- uvx datawrapper-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"palewire-datawrapper-mcp": {
"type": "local",
"command": [
"uvx",
"datawrapper-mcp"
],
"enabled": true
}
}
} openclaw mcp add palewire-datawrapper-mcp --command uvx --arg datawrapper-mcp
mcp_servers:
palewire-datawrapper-mcp:
command: "uvx"
args: ["datawrapper-mcp"] {
"McpServers": {
"palewire-datawrapper-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"datawrapper-mcp"
]
}
}
} assistant mcp add palewire-datawrapper-mcp -t stdio -c uvx -a datawrapper-mcp
{
"mcpServers": {
"palewire-datawrapper-mcp": {
"command": "uvx",
"args": [
"datawrapper-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 18 Sept 26 −3
- Stability: pass → 0.77 functional
- 17 Sept 26 +1
- Stability: 0.97 → pass security
- Security disclosure: unverified → fail ▼ functional
- 16 Sept 26 0
- Security disclosure: fail → unverified ▼ functional
- 15 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- 14 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- 13 Sept 26 +39
- Injection markers: unverified → pass ▲ security
- Tool coverage: 38% → 44% ▲ functional
- Schema quality: 258 → 199 ▲ functional
- Tool coverage: 0% → 100% ▲ functional
- Schema quality: unverified → 25 ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Stability: unverified → 0.87 ▲ functional
- Schema quality: excellent → good functional
- Package version: 0.2.3 → 0.4.0 functional
- Package version: 0.3.2 → 0.3.4 functional
- 12 Sept 26 +39
- Stability: 0.80 → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- CVE-2026-32871 no longer affects this package ▲ security
- Known CVEs: fail → pass ▲ security
- Schema quality: 50% → 25% ▼ functional
- Security disclosure: unverified → fail ▼ functional
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 50 → unverified ▼ functional
- Tool coverage: 38% → 44% ▲ functional
- Schema quality: 258 → 199 ▲ functional
- Tool coverage: 0% → 100% ▲ functional
- Score status: failed → scored ▲ functional
- Schema quality: excellent → good functional
- MCP protocol: Implements a current MCP spec version (2026-07-28). functional
- Package version: 0.2.3 → 0.3.2 functional
- Package version: 0.2.3 → 0.3.1 functional
- Package version: 0.2.3 → 0.3.0 functional
- 11 Sept 26 0
- Security disclosure: fail → unverified ▼ functional
- Stability: pass → 0.80 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed pypi/datawrapper-mcp@0.4.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | setuptools.build_meta |
Background: Why install scripts are a supply-chain risk →
Dependencies 71 packages
| Packages resolved | 71 |
|---|---|
| Stale | 6 |
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
check_datawrapper_connection Check Datawrapper Connection ~169
⚠️ 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.
| Name | Type | Req | Description |
|---|---|---|---|
| access_token | – | – | Optional Datawrapper API token. When provided, checks that token specifically. When omitted, checks whichever credential this call would otherwise use (the BYOK header,… |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
create_chart Create Chart ~916
⚠️ 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: 1. Basic chart with title: chart_config = { "title": "Monthly Sales", "intro": "Sales data for Q1 2024" } 2. Chart with custom colors: chart_config = { "title": "Product Comparison", "color_category": { "Product A": "#1f77b4", "Product B": "#ff7f0e" } } 3. Styled line chart: chart_config = { "title": "Sales Trends", "lines": [ {"column": "sales", "width": "style2", "interpolation": "curved"} ], "custom_range_y": [0, 1000] } STYLING WORKFLOW: 1. Use list_chart_types to see available chart types 2. Use get_chart_schema to explore all options for your chosen type 3. Refer to https://datawrapper.readthedocs.io/en/latest/ for detailed examples 4. 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 rang…
| Name | Type | Req | Description |
|---|---|---|---|
| access_token | – | – | Optional Datawrapper API token. When provided, charts are created in the caller's account (recommended). When omitted, falls back to the server's DATAWRAPPER_ACCESS_TOKEN env var. |
| chart_config | – | yes | Complete chart configuration as a Pydantic model dict |
| chart_type | string | yes | Type of chart to create. Use list_chart_types to see all available types. Common types: bar, line, area, arrow, column, multiple_column, scatter, stacked_bar |
| data | – | yes | Chart data. RECOMMENDED: Pass data inline as a list or dict. PREFERRED FORMATS (use these first): 1. List of records (RECOMMENDED): [{"year": 2020, "sales": 100}, {"year": 2021, "sales": 150}] 2. Dic… |
No output schema declared.
No examples provided.
delete_chart Delete Chart ~94
⚠️ DATAWRAPPER MCP TOOL ⚠️ This is part of the Datawrapper MCP server integration. --- Delete a Datawrapper chart permanently.
| Name | Type | Req | Description |
|---|---|---|---|
| access_token | – | – | Optional Datawrapper API token. When provided, uses the caller's account. When omitted, falls back to the server's DATAWRAPPER_ACCESS_TOKEN env var. |
| chart_id | string | yes | ID of the chart to delete |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
export_chart_png Export Chart Png ~311
⚠️ 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.
| Name | Type | Req | Description |
|---|---|---|---|
| access_token | – | – | Optional Datawrapper API token. When provided, uses the caller's account. When omitted, falls back to the server's DATAWRAPPER_ACCESS_TOKEN env var. |
| border_color | – | – | Color of the border, e.g., '#FFFFFF' (optional) |
| border_width | integer | – | Margin around visualization in pixels |
| chart_id | string | yes | ID of the chart to export |
| height | – | – | Height of the image in pixels (optional) |
| plain | boolean | – | If true, exports only the visualization without header/footer |
| timeout | – | – | Seconds to wait for the export before giving up (optional). Defaults to 30s. Large or complex charts (e.g. high zoom values) may need a longer timeout to finish rendering server-side. |
| transparent | boolean | – | If true, exports with transparent background |
| width | – | – | Width of the image in pixels (optional) |
| zoom | integer | – | Scale multiplier for resolution, e.g., 2 = 2x resolution |
No output schema declared.
No examples provided.
get_chart Get Chart ~239
⚠️ 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
| Name | Type | Req | Description |
|---|---|---|---|
| access_token | – | – | Optional Datawrapper API token. When provided, uses the caller's account. When omitted, falls back to the server's DATAWRAPPER_ACCESS_TOKEN env var. |
| chart_id | string | yes | ID of the chart to retrieve |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
get_chart_schema Get Chart Schema ~152
⚠️ 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.
| Name | Type | Req | Description |
|---|---|---|---|
| chart_type | string | yes | Chart type to get schema for |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
list_chart_types List Chart Types ~85
⚠️ 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
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
publish_chart Publish Chart ~131
⚠️ 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.
| Name | Type | Req | Description |
|---|---|---|---|
| access_token | – | – | Optional Datawrapper API token. When provided, uses the caller's account. When omitted, falls back to the server's DATAWRAPPER_ACCESS_TOKEN env var. |
| chart_id | string | yes | ID of the chart to publish |
No output schema declared.
No examples provided.
update_chart Update Chart ~453
⚠️ 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.
| Name | Type | Req | Description |
|---|---|---|---|
| access_token | – | – | Optional Datawrapper API token. When provided, uses the caller's account. When omitted, falls back to the server's DATAWRAPPER_ACCESS_TOKEN env var. |
| chart_config | – | – | Updated chart configuration using high-level Pydantic fields (optional) |
| chart_id | string | yes | ID of the chart to update |
| data | – | – | New chart data (optional). Same formats as create_chart. |
No output schema declared.
No examples provided.
What is the Datawrapper MCP server?
Datawrapper is an MCP server listed in the public MCP registry as io.github.palewire/datawrapper-mcp. A Model Context Protocol (MCP) server and app for creating Datawrapper charts using AI assistants. This page covers its PyPI package (datawrapper-mcp).
Is the Datawrapper MCP server safe to use?
Datawrapper scores 77 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Datawrapper MCP server expose?
Datawrapper exposes 9 tools: list_chart_types, get_chart_schema, check_datawrapper_connection, create_chart, publish_chart, and 4 more. Their descriptions and schemas cost roughly 2,550 tokens of context every time the server is loaded.
Is the Datawrapper MCP server still maintained?
Datawrapper is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Datawrapper MCP server under?
Datawrapper declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.