DataViz MCP is a local Panel web server that executes Python code snippets and renders the resulting visualizations as live, interactive web pages.
Project description
✨ dataviz-mcp
DataViz MCP is a local Panel web server and MCP server that executes Python code snippets and renders the resulting visualizations as live, interactive web pages — enabling humans and AI assistants to display and inspect Python outputs in real time.
Features
- Two interfaces —
pls serve(standalone browser UI) andpls mcp(MCP server for AI assistants) - Any visualization library — hvplot · plotly · altair · matplotlib · seaborn · holoviews · bokeh · and more
- Validate before render —
showruns syntax, security, package, and extension checks before any rendering happens - Visual validation —
screenshotMCP tool lets the AI inspect the rendered output visually before presenting it - Persistent storage — SQLite database with full-text search; every snippet gets its own permanent URL
- Auto-restart — Panel subprocess is health-monitored and automatically restarted on failure
- Works everywhere — local, JupyterHub, GitHub Codespaces; URLs externalized automatically
Installation
Install via uv, pip, or pixi — see the Installation guide for full instructions including how to find your pls path.
uv tool install "dataviz-mcp[pydata]"
Pin your version — this project is in its early stages. Pin to a specific version to avoid unexpected changes:
uv tool install "dataviz-mcp[pydata]==0.1.0a1"
Connect to your AI assistant
Use the absolute path printed by which pls above — not just pls.
Full setup instructions for each client: docs → Connect to your MCP client
| Client | Config location |
|---|---|
| VS Code | .vscode/mcp.json |
| Cursor | ~/.cursor/mcp.json |
| Claude Desktop | claude_desktop_config.json |
| Claude Code | claude mcp add dataviz-mcp -- /path/to/pls mcp |
| claude.ai | HTTP transport + tunnel — see docs |
Usage
$ pls
Usage: pls [OPTIONS] COMMAND [ARGS]...
DataViz MCP - Execute and visualize Python code snippets.
╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────╮
│ --version -V Show version and exit. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────────────────────╮
│ serve Start the DataViz MCP directly. │
│ mcp Start as an MCP server for AI assistants. │
│ status Check whether the Panel server is running. │
│ list List resources (packages, etc.). │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯
You can also use dataviz-mcp but pls is shorter and easier to remember.
Development
See the Contributing guide for the full setup (fork, install, connect to MCP client, run tests).
❤️ Contributing
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a new branch:
git checkout -b feature/YourFeature. - Make your changes and commit them:
git commit -m 'Add some feature'. - Push to the branch:
git push origin feature/YourFeature. - Open a pull request.
Please ensure your code passes all tests and linting before submitting.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dataviz_mcp-0.1.3.tar.gz.
File metadata
- Download URL: dataviz_mcp-0.1.3.tar.gz
- Upload date:
- Size: 19.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0d032e1b1990b5101fc87484d4af6441d1530fa083557ad9ea225c6ad6d2ea0
|
|
| MD5 |
df131b29684ee2196df94403ea5a01b0
|
|
| BLAKE2b-256 |
a6aebf7fcef3a5a65fc1e3820e2f1195c526b7183a2d600c16d8acca66405f84
|
Provenance
The following attestation bundles were made for dataviz_mcp-0.1.3.tar.gz:
Publisher:
build.yml on SuMayaBee/DataViz-MCP
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dataviz_mcp-0.1.3.tar.gz -
Subject digest:
a0d032e1b1990b5101fc87484d4af6441d1530fa083557ad9ea225c6ad6d2ea0 - Sigstore transparency entry: 2310144776
- Sigstore integration time:
-
Permalink:
SuMayaBee/DataViz-MCP@9d3d9b0b99605705500ca1cf173268f8781306d4 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/SuMayaBee
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@9d3d9b0b99605705500ca1cf173268f8781306d4 -
Trigger Event:
push
-
Statement type:
File details
Details for the file dataviz_mcp-0.1.3-py3-none-any.whl.
File metadata
- Download URL: dataviz_mcp-0.1.3-py3-none-any.whl
- Upload date:
- Size: 67.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23931764e771ad223ec51c13ec8d3080779295c33c645c35ab4564cdb794e939
|
|
| MD5 |
86854a12d475e7b5dae030403cc889f5
|
|
| BLAKE2b-256 |
2fbdecc04365dc8dfc35468040e590bce32370c122c02715d0157080eb6c6443
|
Provenance
The following attestation bundles were made for dataviz_mcp-0.1.3-py3-none-any.whl:
Publisher:
build.yml on SuMayaBee/DataViz-MCP
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dataviz_mcp-0.1.3-py3-none-any.whl -
Subject digest:
23931764e771ad223ec51c13ec8d3080779295c33c645c35ab4564cdb794e939 - Sigstore transparency entry: 2310144777
- Sigstore integration time:
-
Permalink:
SuMayaBee/DataViz-MCP@9d3d9b0b99605705500ca1cf173268f8781306d4 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/SuMayaBee
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@9d3d9b0b99605705500ca1cf173268f8781306d4 -
Trigger Event:
push
-
Statement type: