← Back to search

Datawrapper

palewire Scanned 3h ago

A Model Context Protocol (MCP) server and app for creating Datawrapper charts using AI assistants

D
56.9 / 100

Versions

0.0.16latest
first seen Jun 5, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 9

list_chart_types
annotations: none low

⚠️ 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

get_chart_schema
annotations: none low

⚠️ 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. Args: chart_type: Chart type to get schema for Returns: JSON schema for the chart type

chart_type str
check_datawrapper_connection
annotations: none low

⚠️ 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. Args: 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, or the server's DATAWRAPPER_ACCESS_TOKEN env var). Returns: The authenticated account's email, name, and ID as JSON, or a troubleshooting-oriented error if the token was rejected.

access_token string
create_chart
annotations: none low

⚠️ 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 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. Args: data: 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. Dict of arrays: {"year": [2020, 2021], "sales": [100, 150]} 3. JSON string of format 1 or 2: '[{"year": 2020, "sales": 100}]' ALTERNATIVE (only for extremely large datasets where inline data is impractical): 4. File path to CSV or JSON: "/path/to/data.csv" or "/path/to/data.json" chart_type: 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 chart_config: Complete chart configuration as a Pydantic model dict 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. Returns: Chart ID, editor URL, and an inline PNG preview image (if export succeeds)

data string chart_type str access_token string chart_config string
publish_chart
annotations: none low

⚠️ 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. Args: chart_id: ID of the chart to publish 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. Returns: Public URL plus an inline preview when available

chart_id str access_token string
get_chart
annotations: none low

⚠️ 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 Args: chart_id: ID of the chart to retrieve 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. Returns: Chart information including complete configuration and URLs

chart_id str access_token string
update_chart
annotations: none low

⚠️ 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. Args: chart_id: ID of the chart to update data: New chart data (optional). Same formats as create_chart. chart_config: Updated chart configuration using high-level Pydantic fields (optional) 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. Returns: Confirmation message, editor URL, and an inline PNG preview image (if export succeeds)

data string chart_id str access_token string chart_config string
delete_chart
annotations: none low

⚠️ DATAWRAPPER MCP TOOL ⚠️ This is part of the Datawrapper MCP server integration. --- Delete a Datawrapper chart permanently. Args: chart_id: ID of the chart to delete 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. Returns: Confirmation message

chart_id str access_token string
export_chart_png
annotations: none low

⚠️ 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. Args: chart_id: ID of the chart to export width: Width of the image in pixels (optional) height: Height of the image in pixels (optional) plain: If true, exports only the visualization without header/footer zoom: Scale multiplier for resolution, e.g., 2 = 2x resolution transparent: If true, exports with transparent background border_width: Margin around visualization in pixels border_color: Color of the border, e.g., '#FFFFFF' (optional) 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. 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. Returns: PNG image content

zoom int plain bool width string height string timeout string chart_id str transparent bool access_token string border_color string border_width int

Permissions 4

network medium
Server uses network capabilities via: httpx, requests, socket
filesystem low
Server uses filesystem capabilities via: open(), os, pathlib, tempfile
shell high
Server uses shell capabilities via: subprocess
env_vars low
Server uses env_vars capabilities via: os.environ, os.getenv()

Scan Findings 59

low
Tool 'create_chart' has no annotations annotation_checker · 100%
low
Tool 'publish_chart' has no annotations annotation_checker · 100%
low
Tool 'get_chart' has no annotations annotation_checker · 100%
low
Tool 'list_chart_types' has no annotations annotation_checker · 100%
low
Tool 'get_chart_schema' has no annotations annotation_checker · 100%
low
Tool 'check_datawrapper_connection' has no annotations annotation_checker · 100%
low
Tool 'update_chart' has no annotations annotation_checker · 100%
low
Tool 'delete_chart' has no annotations annotation_checker · 100%
low
Tool 'export_chart_png' has no annotations annotation_checker · 100%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: starlette@1.0.1 (GHSA-82w8-qh3p-5jfq) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@1.0.1 (GHSA-jp82-jpqv-5vv3) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@1.0.1 (GHSA-wqp7-x3pw-xc5r) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@1.0.1 (GHSA-x746-7m8f-x49c) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@1.0.1 (PYSEC-2026-2280) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@1.0.1 (PYSEC-2026-2281) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@1.0.1 (PYSEC-2026-248) dependency_analyzer · 95%
medium
Vulnerable dependency: starlette@1.0.1 (PYSEC-2026-249) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@2.0.0,<3.0.0 (GHSA-3qhf-m339-9g5v) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@2.0.0,<3.0.0 (GHSA-9h52-p55h-vw2f) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@2.0.0,<3.0.0 (GHSA-j975-95f5-7wqh) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@2.0.0,<3.0.0 (GHSA-jpw9-pfvf-9f58) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@2.0.0,<3.0.0 (GHSA-vj7q-gjh5-988w) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@2.0.0,<3.0.0 (PYSEC-2026-1616) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@2.0.0,<3.0.0 (PYSEC-2026-1617) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@2.0.0,<3.0.0 (PYSEC-2026-1618) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@2.0.0,<3.0.0 (PYSEC-2026-3482) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@2.0.0,<3.0.0 (PYSEC-2026-3483) dependency_analyzer · 95%
info
package.json metadata manifest_parser · 100%
info
pyproject.toml metadata manifest_parser · 100%
info
Tool: list_chart_types manifest_parser · 90%
info
Tool: get_chart_schema manifest_parser · 90%
info
Tool: check_datawrapper_connection manifest_parser · 90%
info
Tool: create_chart manifest_parser · 90%
info
Tool: publish_chart manifest_parser · 90%
info
Tool: get_chart manifest_parser · 90%
critical
Invisible Unicode characters in 'list_chart_types' poisoning · 92%
info
Tool: update_chart manifest_parser · 90%
info
Tool: delete_chart manifest_parser · 90%
info
Tool: export_chart_png manifest_parser · 90%
info
Transport: streamable-http manifest_parser · 80%
info
Required env vars (5) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 90%
low
Permission: filesystem access detected permission_analyzer · 80%
high
Permission: shell access detected permission_analyzer · 95%
low
Permission: env_vars access detected permission_analyzer · 90%
critical
Tool poisoning in 'get_chart_schema': Cross-tool prerequisite: 'use X tool first' poisoning · 85%
critical
Invisible Unicode characters in 'get_chart_schema' poisoning · 92%
critical
Invisible Unicode characters in 'check_datawrapper_connection' poisoning · 92%
critical
Invisible Unicode characters in 'create_chart' poisoning · 92%
critical
Invisible Unicode characters in 'publish_chart' poisoning · 92%
critical
Invisible Unicode characters in 'get_chart' poisoning · 92%
critical
Tool poisoning in 'update_chart': Directive language: 'you must' poisoning · 85%
critical
Invisible Unicode characters in 'update_chart' poisoning · 92%
critical
Invisible Unicode characters in 'delete_chart' poisoning · 92%
critical
Invisible Unicode characters in 'export_chart_png' poisoning · 92%
info
SBOM generated: 6 components sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%