MCP Directory

How to add MCP Dashboards to Windsurf

Render interactive charts, dashboards and KPI widgets directly inside your AI conversation. Paste the config into ~/.codeium/windsurf/mcp_config.json and restart Windsurf.

Last updated June 14, 2026 · 33 · stdio · no auth

Windsurf config for MCP Dashboards

claude mcp add dashboard -- npx -y mcp-dashboards --stdio
{
  "mcpServers": {
    "mcp-dashboards": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-dashboards",
        "--stdio"
      ]
    }
  }
}

Setup steps

  1. 1Open Windsurf → Cascade → the hammer/MCP icon → Configure (or edit ~/.codeium/windsurf/mcp_config.json).
  2. 2Paste the MCP Dashboards config below.
  3. 3Fill in placeholder secrets, then save.
  4. 4Click Refresh in the MCP panel.
  5. 5MCP Dashboards's tools become available to Cascade.

Before you start

  • Node.js 18+
  • An MCP Apps-compatible client (Claude Desktop, Claude Web, VS Code + Copilot, Goose, Postman, or MCPJam) for inline rendering; other clients get a browser preview link

What MCP Dashboards can do in Windsurf

render_pie_chart

Pie/donut chart for composition — 'what makes up the whole?'

render_bar_chart

Bar chart for comparison — vertical, horizontal, stacked, drill-down.

render_line_chart

Line/area chart for trends — smooth curves, gradient fills, time series.

render_scatter_chart

Scatter chart for relationships — per-point labels, annotations, quadrants.

render_candlestick_chart

Candlestick chart for finance — OHLC data with volume bars.

render_radar_chart

Radar chart for multi-axis comparison — skills, scores, product attributes.

render_treemap_chart

Treemap for hierarchy — nested rectangles sized by value.

render_sankey_chart

Sankey diagram for flow — money, users, or resources between stages.

Security

All processing happens locally; no data is collected or transmitted externally. External calls only happen when you explicitly provide a URL or preset (render_from_url / poll_http), and both refuse private, loopback, and link-local addresses (e.g. 192.168.*, 169.254.169.254) to block prompt-injection SSRF, plus per-host rate limiting. Credentials in env-var presets (POLL_PRESET_<NAME>_HEADERS) stay server-side. The browser preview server and optional HTTP transport bind to 127.0.0.1 by default; set MCP_HTTP_BIND_HOST=0.0.0.0 only on a trusted network. Chart HTML files live in the system temp folder and auto-delete after 7 days.

MCP Dashboards + Windsurf FAQ

Where is the Windsurf config file?

Windsurf reads MCP servers from ~/.codeium/windsurf/mcp_config.json. Paste the MCP Dashboards config there under the "mcpServers" key and restart the client.

Is MCP Dashboards safe to use with Windsurf?

All processing happens locally; no data is collected or transmitted externally. External calls only happen when you explicitly provide a URL or preset (render_from_url / poll_http), and both refuse private, loopback, and link-local addresses (e.g. 192.168.*, 169.254.169.254) to block prompt-injection SSRF, plus per-host rate limiting. Credentials in env-var presets (POLL_PRESET_<NAME>_HEADERS) stay server-side. The browser preview server and optional HTTP transport bind to 127.0.0.1 by default; set MCP_HTTP_BIND_HOST=0.0.0.0 only on a trusted network. Chart HTML files live in the system temp folder and auto-delete after 7 days.

Which AI clients support inline rendering?

Any MCP Apps-compatible client: Claude Desktop, Claude Web, VS Code (GitHub Copilot), Goose, Postman, and MCPJam. ChatGPT support is rolling out. Clients without MCP Apps still get a clickable http://localhost preview link plus a persistent file:// HTML artifact for each chart.

Do I need an API key?

No. The server requires no auth and all processing is local. API keys are only needed if you configure server-side live-polling presets (POLL_PRESET_<NAME>_URL / _HEADERS) to poll authenticated APIs — those credentials stay in env vars and never appear in the conversation.

Is my data sent anywhere?

No data is collected, transmitted, or stored externally. The only outbound calls happen when you explicitly provide a URL or preset for render_from_url / poll_http, and those are SSRF-guarded against private/loopback/link-local addresses and rate-limited per host.

View repo Full MCP Dashboards page