holoviz-mcp 0.0.1a0__py3-none-any.whl → 0.0.1a2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of holoviz-mcp might be problematic. Click here for more details.
- holoviz_mcp/__init__.py +18 -0
- holoviz_mcp/apps/__init__.py +1 -0
- holoviz_mcp/apps/configuration_viewer.py +116 -0
- holoviz_mcp/apps/search.py +314 -0
- holoviz_mcp/config/__init__.py +31 -0
- holoviz_mcp/config/config.yaml +167 -0
- holoviz_mcp/config/loader.py +308 -0
- holoviz_mcp/config/models.py +216 -0
- holoviz_mcp/config/resources/best-practices/hvplot.md +62 -0
- holoviz_mcp/config/resources/best-practices/panel-material-ui.md +318 -0
- holoviz_mcp/config/resources/best-practices/panel.md +294 -0
- holoviz_mcp/config/schema.json +203 -0
- holoviz_mcp/docs_mcp/__init__.py +1 -0
- holoviz_mcp/docs_mcp/data.py +963 -0
- holoviz_mcp/docs_mcp/models.py +21 -0
- holoviz_mcp/docs_mcp/pages_design.md +407 -0
- holoviz_mcp/docs_mcp/server.py +220 -0
- holoviz_mcp/hvplot_mcp/__init__.py +1 -0
- holoviz_mcp/hvplot_mcp/server.py +152 -0
- holoviz_mcp/panel_mcp/__init__.py +17 -0
- holoviz_mcp/panel_mcp/data.py +316 -0
- holoviz_mcp/panel_mcp/models.py +124 -0
- holoviz_mcp/panel_mcp/server.py +650 -0
- holoviz_mcp/py.typed +0 -0
- holoviz_mcp/serve.py +34 -0
- holoviz_mcp/server.py +77 -0
- holoviz_mcp/shared/__init__.py +1 -0
- holoviz_mcp/shared/extract_tools.py +74 -0
- holoviz_mcp-0.0.1a2.dist-info/METADATA +641 -0
- holoviz_mcp-0.0.1a2.dist-info/RECORD +33 -0
- {holoviz_mcp-0.0.1a0.dist-info → holoviz_mcp-0.0.1a2.dist-info}/WHEEL +1 -2
- holoviz_mcp-0.0.1a2.dist-info/entry_points.txt +4 -0
- holoviz_mcp-0.0.1a2.dist-info/licenses/LICENSE.txt +30 -0
- holoviz_mcp-0.0.1a0.dist-info/METADATA +0 -6
- holoviz_mcp-0.0.1a0.dist-info/RECORD +0 -5
- holoviz_mcp-0.0.1a0.dist-info/top_level.txt +0 -1
- main.py +0 -6
|
@@ -0,0 +1,641 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: holoviz-mcp
|
|
3
|
+
Version: 0.0.1a2
|
|
4
|
+
Summary: A Model Context Protocol (MCP) server for the HoloViz ecosystem
|
|
5
|
+
Project-URL: Homepage, https://github.com/MarcSkovMadsen/holoviz-mcp
|
|
6
|
+
Project-URL: Source, https://github.com/MarcSkovMadsen/holoviz-mcp
|
|
7
|
+
Author-email: MarcSkovMadsen <marc.skov.madsen@gmail.com>
|
|
8
|
+
Maintainer-email: MarcSkovMadsen <marc.skov.madsen@gmail.com>
|
|
9
|
+
License: BSD
|
|
10
|
+
License-File: LICENSE.txt
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
15
|
+
Classifier: Natural Language :: English
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Topic :: Scientific/Engineering
|
|
22
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
23
|
+
Requires-Python: >=3.11
|
|
24
|
+
Requires-Dist: certifi
|
|
25
|
+
Requires-Dist: chromadb
|
|
26
|
+
Requires-Dist: fastmcp
|
|
27
|
+
Requires-Dist: gitpython
|
|
28
|
+
Requires-Dist: nbconvert
|
|
29
|
+
Requires-Dist: packaging
|
|
30
|
+
Requires-Dist: panel
|
|
31
|
+
Requires-Dist: pydantic>=2.0
|
|
32
|
+
Requires-Dist: pyyaml
|
|
33
|
+
Provides-Extra: dev
|
|
34
|
+
Requires-Dist: mkdocs; extra == 'dev'
|
|
35
|
+
Requires-Dist: mkdocs-material; extra == 'dev'
|
|
36
|
+
Requires-Dist: mkdocs-pycafe; extra == 'dev'
|
|
37
|
+
Requires-Dist: mkdocstrings[python]; extra == 'dev'
|
|
38
|
+
Requires-Dist: pre-commit; extra == 'dev'
|
|
39
|
+
Requires-Dist: pytest; extra == 'dev'
|
|
40
|
+
Requires-Dist: pytest-asyncio; extra == 'dev'
|
|
41
|
+
Requires-Dist: pytest-rerunfailures; extra == 'dev'
|
|
42
|
+
Requires-Dist: pytest-xdist; extra == 'dev'
|
|
43
|
+
Requires-Dist: types-pyyaml; extra == 'dev'
|
|
44
|
+
Requires-Dist: watchfiles; extra == 'dev'
|
|
45
|
+
Provides-Extra: mypy
|
|
46
|
+
Requires-Dist: mypy; extra == 'mypy'
|
|
47
|
+
Requires-Dist: types-requests; extra == 'mypy'
|
|
48
|
+
Requires-Dist: typing-extensions; extra == 'mypy'
|
|
49
|
+
Provides-Extra: panel-extensions
|
|
50
|
+
Requires-Dist: panel-full-calendar; extra == 'panel-extensions'
|
|
51
|
+
Requires-Dist: panel-graphic-walker; extra == 'panel-extensions'
|
|
52
|
+
Requires-Dist: panel-material-ui; extra == 'panel-extensions'
|
|
53
|
+
Requires-Dist: panel-neuroglancer; extra == 'panel-extensions'
|
|
54
|
+
Requires-Dist: panel-precision-slider; extra == 'panel-extensions'
|
|
55
|
+
Requires-Dist: panel-web-llm; extra == 'panel-extensions'
|
|
56
|
+
Description-Content-Type: text/markdown
|
|
57
|
+
|
|
58
|
+
# ✨ HoloViz MCP
|
|
59
|
+
|
|
60
|
+
[](https://github.com/MarcSkovMadsen/holoviz-mcp/actions/workflows/ci.yml)
|
|
61
|
+
[](https://prefix.dev/channels/conda-forge/packages/holoviz-mcp)
|
|
62
|
+
[](https://pypi.org/project/holoviz-mcp)
|
|
63
|
+
[](https://pypi.org/project/holoviz-mcp)
|
|
64
|
+
|
|
65
|
+
A comprehensive [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server that provides intelligent access to the [HoloViz](https://holoviz.org/) ecosystem, enabling AI assistants to help you build interactive dashboards and data visualizations with [Panel](https://panel.holoviz.org/), [hvPlot](https://hvplot.holoviz.org), [datashader](https://datashader.org/) and your favorite Python libraries.
|
|
66
|
+
|
|
67
|
+
[](https://holoviz.org)
|
|
68
|
+
|
|
69
|
+
Please note:
|
|
70
|
+
|
|
71
|
+
- This MCP server **can execute arbitrary Python code** when it serves Panel applications (this is configurable, and enabled by default).
|
|
72
|
+
|
|
73
|
+
## ✨ What This Provides
|
|
74
|
+
|
|
75
|
+
**Documentation Access**: Search through comprehensive HoloViz documentation, including tutorials, reference guides, how-to guides, and API references.
|
|
76
|
+
|
|
77
|
+
**Component Intelligence**: Discover and understand 100+ Panel components with detailed parameter information, usage examples, and best practices. Similar features are available for hvPlot.
|
|
78
|
+
|
|
79
|
+
**Extension Support**: Automatic detection and information about Panel extensions such as Material UI, Graphic Walker, and other community packages.
|
|
80
|
+
|
|
81
|
+
**Smart Context**: Get contextual code assistance that understands your development environment and available packages.
|
|
82
|
+
|
|
83
|
+
## 🎯 Why Use This?
|
|
84
|
+
|
|
85
|
+
- **⚡ Faster Development**: No more hunting through docs - get instant, accurate component information.
|
|
86
|
+
- **🎨 Better Design**: AI suggests appropriate components and layout patterns for your use case.
|
|
87
|
+
- **🧠 Smart Context**: The assistant understands your environment and available Panel extensions.
|
|
88
|
+
- **📖 Always Updated**: Documentation stays current with the latest HoloViz ecosystem changes.
|
|
89
|
+
- **🔧 Zero Setup**: Works immediately with any MCP-compatible AI assistant.
|
|
90
|
+
|
|
91
|
+
## Need more?
|
|
92
|
+
|
|
93
|
+
Check out the [HoloViz MCP Introduction](https://youtu.be/M-YUZWEeSDA) on YouTube.
|
|
94
|
+
|
|
95
|
+
[](https://youtu.be/M-YUZWEeSDA)
|
|
96
|
+
|
|
97
|
+
Other videos: [hvPlot tools](https://youtu.be/jTe2ZqAAtR8).
|
|
98
|
+
|
|
99
|
+
## 🚀 Quick Start
|
|
100
|
+
|
|
101
|
+
### Requirements
|
|
102
|
+
|
|
103
|
+
- Python 3.11+ and [uv](https://docs.astral.sh/uv/)
|
|
104
|
+
- VS Code with GitHub Copilot, Claude Desktop, Cursor, or any other MCP-compatible client
|
|
105
|
+
|
|
106
|
+
## Install as a Tool (Recommended)
|
|
107
|
+
|
|
108
|
+
Due to its size, we strongly recommend installing HoloViz MCP once as a [uv tool](https://docs.astral.sh/uv/concepts/tools/):
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
uv tool install git+https://github.com/MarcSkovMadsen/holoviz-mcp[panel-extensions]
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
This ensures the `holoviz-mcp` server is installed once, instead of each time it is run as a tool.
|
|
115
|
+
|
|
116
|
+
Additionally, we highly recommend creating the documentation index (i.e., context) used by holoviz-mcp now, since this process can take up to 10 minutes:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
uvx --from holoviz-mcp holoviz-mcp-update # Updates the documentation index used by holoviz-mcp, not the holoviz-mcp Python package.
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
You may optionally verify you can start the server with the `sse` transport:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
uvx holoviz-mcp
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Or, optionally start it with the `http` transport:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
HOLOVIZ_MCP_TRANSPORT=http uvx holoviz-mcp
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Use `CTRL+C` to stop the server when you are finished.
|
|
135
|
+
|
|
136
|
+
### One-Click Install (Also Recommended)
|
|
137
|
+
|
|
138
|
+
Click the appropriate badge below to install it for usage with a MCP client:
|
|
139
|
+
|
|
140
|
+
[](https://vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522holoviz%2522%252C%2522command%2522%253A%2522uvx%2522%252C%2522args%2522%253A%255B%2522--from%2522%252C%2522git%252Bhttps%253A//github.com/MarcSkovMadsen/holoviz-mcp%255Bpanel-extensions%255D%2522%252C%2522holoviz-mcp%2522%255D%257D)
|
|
141
|
+
[](cursor://settings/mcp)
|
|
142
|
+
[](#claude-desktop)
|
|
143
|
+
|
|
144
|
+
### Manual Installation (Alternative to One-Click Install)
|
|
145
|
+
|
|
146
|
+
<details>
|
|
147
|
+
<summary><b>VS Code + GitHub Copilot</b></summary>
|
|
148
|
+
|
|
149
|
+
Add this configuration to your VS Code `mcp.json`:
|
|
150
|
+
|
|
151
|
+
```json
|
|
152
|
+
{
|
|
153
|
+
"servers": {
|
|
154
|
+
"holoviz": {
|
|
155
|
+
"type": "stdio",
|
|
156
|
+
"command": "uvx",
|
|
157
|
+
"args": [
|
|
158
|
+
"--from",
|
|
159
|
+
"git+https://github.com/MarcSkovMadsen/holoviz-mcp[panel-extensions]",
|
|
160
|
+
"holoviz-mcp"
|
|
161
|
+
]
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"inputs": []
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Restart VS Code and start chatting with GitHub Copilot about Panel components!
|
|
169
|
+
|
|
170
|
+
For more details, please refer to the official [VS Code + Copilot MCP Server Guide](https://code.visualstudio.com/docs/copilot/chat/mcp-servers).
|
|
171
|
+
|
|
172
|
+
Note: If you are developing remotely, we recommend adding this to the "Remote" or "Workspace" mcp.json file instead of the "User" mcp.json file. This ensures the MCP server runs on the remote server instead of the local machine.
|
|
173
|
+
|
|
174
|
+
</details>
|
|
175
|
+
|
|
176
|
+
<details>
|
|
177
|
+
<summary><b>Claude Desktop</b></summary>
|
|
178
|
+
|
|
179
|
+
Add to your Claude Desktop configuration file:
|
|
180
|
+
|
|
181
|
+
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
182
|
+
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
|
|
183
|
+
|
|
184
|
+
```json
|
|
185
|
+
{
|
|
186
|
+
"mcpServers": {
|
|
187
|
+
"holoviz": {
|
|
188
|
+
"command": "uvx",
|
|
189
|
+
"args": [
|
|
190
|
+
"--from",
|
|
191
|
+
"git+https://github.com/MarcSkovMadsen/holoviz-mcp[panel-extensions]",
|
|
192
|
+
"holoviz-mcp"
|
|
193
|
+
]
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Restart Claude Desktop and start asking about Panel components!
|
|
200
|
+
</details>
|
|
201
|
+
|
|
202
|
+
<details>
|
|
203
|
+
<summary><b>Cursor</b></summary>
|
|
204
|
+
|
|
205
|
+
Go to `Cursor Settings` → `Features` → `Model Context Protocol` → `Add Server`:
|
|
206
|
+
|
|
207
|
+
```json
|
|
208
|
+
{
|
|
209
|
+
"name": "holoviz",
|
|
210
|
+
"command": "uvx",
|
|
211
|
+
"args": [
|
|
212
|
+
"--from",
|
|
213
|
+
"git+https://github.com/MarcSkovMadsen/holoviz-mcp[panel-extensions]",
|
|
214
|
+
"holoviz-mcp"
|
|
215
|
+
]
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Restart Cursor and start building Panel dashboards with AI assistance!
|
|
220
|
+
</details>
|
|
221
|
+
|
|
222
|
+
<details>
|
|
223
|
+
<summary><b>Windsurf</b></summary>
|
|
224
|
+
|
|
225
|
+
Add to your Windsurf MCP configuration:
|
|
226
|
+
|
|
227
|
+
```json
|
|
228
|
+
{
|
|
229
|
+
"mcpServers": {
|
|
230
|
+
"holoviz": {
|
|
231
|
+
"command": "uvx",
|
|
232
|
+
"args": [
|
|
233
|
+
"--from",
|
|
234
|
+
"git+https://github.com/MarcSkovMadsen/holoviz-mcp[panel-extensions]",
|
|
235
|
+
"holoviz-mcp"
|
|
236
|
+
]
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
```
|
|
241
|
+
</details>
|
|
242
|
+
|
|
243
|
+
<details>
|
|
244
|
+
<summary><b>Other MCP Clients</b></summary>
|
|
245
|
+
|
|
246
|
+
For other MCP-compatible clients, use the standard MCP configuration:
|
|
247
|
+
|
|
248
|
+
```json
|
|
249
|
+
{
|
|
250
|
+
"name": "holoviz",
|
|
251
|
+
"command": "uvx",
|
|
252
|
+
"args": [
|
|
253
|
+
"--from",
|
|
254
|
+
"git+https://github.com/MarcSkovMadsen/holoviz-mcp[panel-extensions]",
|
|
255
|
+
"holoviz-mcp"
|
|
256
|
+
]
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
</details>
|
|
260
|
+
|
|
261
|
+
**That's it!** Start asking questions about Panel components, and your AI assistant will have access to comprehensive documentation and component details.
|
|
262
|
+
|
|
263
|
+
### ⏱️ First-Time Setup
|
|
264
|
+
|
|
265
|
+
**Installation**: The first installation may take 1-2 minutes as dependencies are downloaded and configured.
|
|
266
|
+
|
|
267
|
+
**Documentation Indexing**: The first time you search documentation, the system will automatically download and index HoloViz documentation from GitHub. This process takes 5-10 minutes but only happens once. Subsequent searches will be instant.
|
|
268
|
+
|
|
269
|
+
**Progress Monitoring**: In VS Code, you can monitor progress in `OUTPUT → MCP: holoviz` to see indexing status and any potential issues.
|
|
270
|
+
|
|
271
|
+

|
|
272
|
+
|
|
273
|
+
## 💡 What You Can Ask
|
|
274
|
+
|
|
275
|
+
<details>
|
|
276
|
+
<summary><b>🔍 Component Discovery</b></summary>
|
|
277
|
+
|
|
278
|
+
**Ask:** *"What Panel components are available for user input?"*
|
|
279
|
+
|
|
280
|
+
**AI Response:** The assistant will search through all available input components and provide a comprehensive list with descriptions, such as TextInput, Slider, Select, FileInput, etc.
|
|
281
|
+
|
|
282
|
+
**Ask:** *"Show me Panel Material UI components"*
|
|
283
|
+
|
|
284
|
+
**AI Response:** Lists all Material UI components if the package is installed, with their specific design system features.
|
|
285
|
+
|
|
286
|
+
</details>
|
|
287
|
+
|
|
288
|
+
<details>
|
|
289
|
+
<summary><b>📋 Component Details</b></summary>
|
|
290
|
+
|
|
291
|
+
**Ask:** *"What parameters does the Button component accept?"*
|
|
292
|
+
|
|
293
|
+
**AI Response:** Returns all 20+ parameters with their types, defaults, and descriptions:
|
|
294
|
+
- `name` (str): The text displayed on the button
|
|
295
|
+
- `button_type` (str): Button style ('default', 'primary', 'light')
|
|
296
|
+
- `clicks` (int): Number of times button has been clicked
|
|
297
|
+
- And many more...
|
|
298
|
+
|
|
299
|
+
</details>
|
|
300
|
+
|
|
301
|
+
<details>
|
|
302
|
+
<summary><b>📚 Best Practices</b></summary>
|
|
303
|
+
|
|
304
|
+
**Ask:** *"What are the best practices for Panel layouts?"*
|
|
305
|
+
|
|
306
|
+
**AI Response:** Provides comprehensive layout guidelines, performance tips, and architectural recommendations based on the official documentation.
|
|
307
|
+
|
|
308
|
+
**Ask:** *"How should I structure a Panel application?"*
|
|
309
|
+
|
|
310
|
+
**AI Response:** Offers detailed guidance on application architecture, state management, and component organization.
|
|
311
|
+
|
|
312
|
+
</details>
|
|
313
|
+
|
|
314
|
+
<details>
|
|
315
|
+
<summary><b>🚀 Building Tools, Dashboards and Applications</b></summary>
|
|
316
|
+
|
|
317
|
+
**Ask:** *"How do I build a minimal, Hello World data dashboard with Panel?"*
|
|
318
|
+
|
|
319
|
+
**AI Response:** Provides basic application architecture with layout components, data connections, and interactive widgets.
|
|
320
|
+
|
|
321
|
+
**Ask:** *"How do I create a minimal, dashboard with Panel Material UI sliders and plots?"*
|
|
322
|
+
|
|
323
|
+
**AI Response:** Provides complete code examples with proper Panel layout structure and Panel Material UI component integration.
|
|
324
|
+
|
|
325
|
+
**Ask:** *"Build a sales dashboard for data analysis using Panel Material UI components. Follow the Panel and Panel Material UI best practices. Create tests and make sure issues are identified and fixed."*
|
|
326
|
+
|
|
327
|
+
**AI Response:** Provides code for interactive tools with dynamic filtering, real-time updates, and responsive layouts that work across devices.
|
|
328
|
+
|
|
329
|
+
**Ask:** *"How do I deploy a Panel application?"*
|
|
330
|
+
|
|
331
|
+
**AI Response:** Offers deployment strategies for various platforms (Heroku, AWS, local server) with configuration examples and best practices for production environments.
|
|
332
|
+
|
|
333
|
+
</details>
|
|
334
|
+
|
|
335
|
+
The AI assistant provides accurate, contextual answers with:
|
|
336
|
+
- **Detailed component information** including all parameters and types
|
|
337
|
+
- **Usage examples** and copy-pasteable code snippets
|
|
338
|
+
- **Best practices** for Panel development
|
|
339
|
+
- **Extension compatibility** information
|
|
340
|
+
|
|
341
|
+
## 🛠️ Available Tools
|
|
342
|
+
|
|
343
|
+
<details>
|
|
344
|
+
<summary><b>Panel Tools</b></summary>
|
|
345
|
+
|
|
346
|
+
- **list_packages**: List all installed packages that provide Panel UI components.
|
|
347
|
+
- **search**: Search for Panel components by name, module path, or description.
|
|
348
|
+
- **list_components**: Get a summary list of Panel components without detailed docstring and parameter information.
|
|
349
|
+
- **get_component**: Get complete details about a single Panel component including docstring and parameters.
|
|
350
|
+
- **get_component_parameters**: Get detailed parameter information for a single Panel component.
|
|
351
|
+
- **serve**: Start a Panel server for a given file (if code execution is enabled).
|
|
352
|
+
- **get_server_logs**: Get logs for a running Panel application server.
|
|
353
|
+
- **close_server**: Close a running Panel application server.
|
|
354
|
+
|
|
355
|
+
</details>
|
|
356
|
+
|
|
357
|
+
<details>
|
|
358
|
+
<summary><b>Documentation Tools</b></summary>
|
|
359
|
+
|
|
360
|
+
- **get_best_practices**: Get best practices for using a project with LLMs.
|
|
361
|
+
- **list_best_practices**: List all available best practices projects.
|
|
362
|
+
- **get_reference_guide**: Find reference guides for specific HoloViz components.
|
|
363
|
+
- **get_document**: Retrieve a specific document by path and project.
|
|
364
|
+
- **search**: Search HoloViz documentation using semantic similarity.
|
|
365
|
+
|
|
366
|
+
</details>
|
|
367
|
+
|
|
368
|
+
<details>
|
|
369
|
+
<summary><b>hvPlot Tools</b></summary>
|
|
370
|
+
|
|
371
|
+
- **list_plot_types**: List all available hvPlot plot types.
|
|
372
|
+
- **get_docstring**: Get the docstring for a specific hvPlot plot type.
|
|
373
|
+
- **get_signature**: Get the function signature for a specific hvPlot plot type.
|
|
374
|
+
|
|
375
|
+
</details>
|
|
376
|
+
|
|
377
|
+
To prevent tools like `panel_serve` from running arbitrary code, you can disable them by setting one of the following options:
|
|
378
|
+
|
|
379
|
+
- In your YAML configuration file, set: `server.security.allow_code_execution: false`
|
|
380
|
+
- Or, set the environment variable: `HOLOVIZ_MCP_ALLOW_CODE_EXECUTION=false`
|
|
381
|
+
|
|
382
|
+
This will block any features that allow execution of user-provided code.
|
|
383
|
+
|
|
384
|
+
## 📦 Installation
|
|
385
|
+
|
|
386
|
+
### For AI Assistant Use
|
|
387
|
+
|
|
388
|
+
The recommended way is to configure your AI assistant (VS Code + GitHub Copilot) to use the server directly as shown above.
|
|
389
|
+
|
|
390
|
+
### Manual Installation
|
|
391
|
+
|
|
392
|
+
```bash
|
|
393
|
+
uv tool install git+https://github.com/MarcSkovMadsen/holoviz-mcp
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
### With Panel Extensions
|
|
397
|
+
|
|
398
|
+
Install with support for community projects like `panel-material-ui`, `panel-graphic-walker` etc.:
|
|
399
|
+
|
|
400
|
+
```bash
|
|
401
|
+
uv tool install git+https://github.com/MarcSkovMadsen/holoviz-mcp[panel-extensions]
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
### Running the Server
|
|
405
|
+
|
|
406
|
+
```bash
|
|
407
|
+
uvx holoviz-mcp
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
For HTTP transport:
|
|
411
|
+
|
|
412
|
+
```bash
|
|
413
|
+
HOLOVIZ_MCP_TRANSPORT=http uvx holoviz-mcp
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
## ⚙️ Configuration Options
|
|
417
|
+
|
|
418
|
+
<details>
|
|
419
|
+
<summary><b>Transport Modes</b></summary>
|
|
420
|
+
|
|
421
|
+
The server supports different transport protocols:
|
|
422
|
+
|
|
423
|
+
**Standard I/O (default):**
|
|
424
|
+
```bash
|
|
425
|
+
uvx holoviz-mcp
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
**HTTP (for remote development):**
|
|
429
|
+
```bash
|
|
430
|
+
HOLOVIZ_MCP_TRANSPORT=http uvx holoviz-mcp
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
</details>
|
|
434
|
+
|
|
435
|
+
<details>
|
|
436
|
+
<summary><b>Environment Variables</b></summary>
|
|
437
|
+
|
|
438
|
+
- **HOLOVIZ_MCP_LOG_LEVEL**: Set the server log level (e.g., `INFO`, `DEBUG`, `WARNING`).
|
|
439
|
+
- **HOLOVIZ_MCP_SERVER_NAME**: Override the server name.
|
|
440
|
+
- **HOLOVIZ_MCP_TRANSPORT**: Set the transport mode (e.g., `stdio`, `http`).
|
|
441
|
+
- **ANONYMIZED_TELEMETRY**: Enable or disable anonymized Chroma telemetry (`True` or `False` (default)).
|
|
442
|
+
- **HOLOVIZ_MCP_ALLOW_CODE_EXECUTION**: Allow or block code execution features (`True` (default) or `False`).
|
|
443
|
+
- **JUPYTER_SERVER_PROXY_URL**: If set, Panel apps will open using this URL prefix (e.g., `.../proxy/5007/`) instead of `localhost:5007/`. This is useful when running remotely in a Jupyter Hub.
|
|
444
|
+
|
|
445
|
+
</details>
|
|
446
|
+
|
|
447
|
+
<details>
|
|
448
|
+
<summary><b>Package Extensions</b></summary>
|
|
449
|
+
|
|
450
|
+
The server automatically detects Panel-related packages in your environment:
|
|
451
|
+
|
|
452
|
+
- `panel-material-ui`: Material Design components
|
|
453
|
+
- `panel-graphic-walker`: Interactive data visualization
|
|
454
|
+
- Any package that depends on the `panel` package.
|
|
455
|
+
|
|
456
|
+
Install additional packages and restart the mcp server to include them.
|
|
457
|
+
|
|
458
|
+
</details>
|
|
459
|
+
|
|
460
|
+
## 🔄 Updates & Maintenance
|
|
461
|
+
|
|
462
|
+
Keeping HoloViz MCP up to date ensures you have the latest features, bug fixes, and updated documentation.
|
|
463
|
+
|
|
464
|
+
### Update the Python Package
|
|
465
|
+
|
|
466
|
+
To update the holoviz-mcp Python package (including code and dependencies):
|
|
467
|
+
|
|
468
|
+
```bash
|
|
469
|
+
uv tool update holoviz_mcp[panel-extensions]
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
### Update the Documentation Index
|
|
473
|
+
|
|
474
|
+
To refresh the searchable documentation index (recommended after package updates, or when new/updated docs are available):
|
|
475
|
+
|
|
476
|
+
```bash
|
|
477
|
+
uvx --from holoviz-mcp holoviz-mcp-update
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
## Tips & Tricks
|
|
481
|
+
|
|
482
|
+
If you are a linux user, then you can make your life easier if you add the below to your .bashrc file
|
|
483
|
+
|
|
484
|
+
```bash
|
|
485
|
+
alias holoviz-mcp="uvx holoviz-mcp"
|
|
486
|
+
alias holoviz-mcp-update="uv tool update holoviz_mcp[panel-extensions];uvx --from holoviz-mcp holoviz-mcp-update"
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
After restarting your terminal, you can run:
|
|
490
|
+
|
|
491
|
+
```bash
|
|
492
|
+
holoviz-mcp # to start the server
|
|
493
|
+
holoviz-mcp-update # to update the python package AND the index
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
## ⚙️ User Configuration
|
|
497
|
+
|
|
498
|
+
HoloViz MCP supports user configuration via a YAML file, allowing you to customize server behavior and documentation sources to fit your workflow.
|
|
499
|
+
|
|
500
|
+
### Custom Configuration File
|
|
501
|
+
|
|
502
|
+
By default, configuration is loaded from `~/.holoviz-mcp/config.yaml`.
|
|
503
|
+
To use a different location, set the `HOLOVIZ_MCP_USER_DIR` environment variable:
|
|
504
|
+
|
|
505
|
+
```bash
|
|
506
|
+
export HOLOVIZ_MCP_USER_DIR=/path/to/your/config_dir
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
### Adding Custom Documentation Repositories
|
|
510
|
+
|
|
511
|
+
You can add documentation from other libraries or your own projects by editing your configuration YAML and adding entries under `docs.repositories`.
|
|
512
|
+
|
|
513
|
+
**Example: Adding Plotly and Altair Documentation**
|
|
514
|
+
|
|
515
|
+
```yaml
|
|
516
|
+
docs:
|
|
517
|
+
repositories:
|
|
518
|
+
plotly:
|
|
519
|
+
url: "https://github.com/plotly/plotly.py.git"
|
|
520
|
+
base_url: "https://plotly.com/python"
|
|
521
|
+
target_suffix: "plotly"
|
|
522
|
+
altair:
|
|
523
|
+
url: "https://github.com/altair-viz/altair.git"
|
|
524
|
+
base_url: "https://altair-viz.github.io"
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
After updating your configuration:
|
|
528
|
+
|
|
529
|
+
1. Update your documentation index:
|
|
530
|
+
```bash
|
|
531
|
+
holoviz-mcp-update
|
|
532
|
+
```
|
|
533
|
+
2. Restart the MCP server.
|
|
534
|
+
|
|
535
|
+
Your custom documentation repositories will now be available for search and reference within HoloViz MCP.
|
|
536
|
+
|
|
537
|
+
### Schema Validation
|
|
538
|
+
|
|
539
|
+
A [`schema.json`](https://raw.githubusercontent.com/MarcSkovMadsen/holoviz-mcp/refs/heads/main/src/holoviz_mcp/config/schema.json) file is provided for configuration validation and editor autocompletion.
|
|
540
|
+
|
|
541
|
+
**For VS Code with [vscode-yaml](https://github.com/redhat-developer/vscode-yaml):**
|
|
542
|
+
|
|
543
|
+
Add this at the top of your YAML file:
|
|
544
|
+
```yaml
|
|
545
|
+
# yaml-language-server: $schema=https://raw.githubusercontent.com/MarcSkovMadsen/holoviz-mcp/refs/heads/main/src/holoviz_mcp/config/schema.json
|
|
546
|
+
```
|
|
547
|
+
This enables real-time validation and autocompletion in VS Code.
|
|
548
|
+
|
|
549
|
+
## 🔧 Troubleshooting
|
|
550
|
+
|
|
551
|
+
### Common Issues
|
|
552
|
+
|
|
553
|
+
**Server won't start**: Check that Python 3.11+ is installed and verify with `pip show holoviz-mcp`
|
|
554
|
+
|
|
555
|
+
**VS Code integration not working**: Ensure GitHub Copilot Chat extension is installed and restart VS Code after configuration
|
|
556
|
+
|
|
557
|
+
**Missing Panel components**: Install relevant Panel extension packages and restart the MCP server
|
|
558
|
+
|
|
559
|
+
### Getting Help
|
|
560
|
+
|
|
561
|
+
- **Issues**: Report bugs on [GitHub Issues](https://github.com/MarcSkovMadsen/holoviz-mcp/issues)
|
|
562
|
+
- **Documentation**: Check the [HoloViz documentation](https://holoviz.org/)
|
|
563
|
+
- **Community**: Join the HoloViz community on [Discord](https://discord.gg/AXRHnJU6sP)
|
|
564
|
+
|
|
565
|
+
## 🛠️ Development
|
|
566
|
+
|
|
567
|
+
### Setup
|
|
568
|
+
|
|
569
|
+
```bash
|
|
570
|
+
git clone https://github.com/MarcSkovMadsen/holoviz-mcp
|
|
571
|
+
cd holoviz-mcp
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
Install [pixi](https://pixi.sh) and run:
|
|
575
|
+
|
|
576
|
+
```bash
|
|
577
|
+
pixi run pre-commit-install
|
|
578
|
+
pixi run postinstall
|
|
579
|
+
pixi run test
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
### Development Server
|
|
583
|
+
|
|
584
|
+
For remote development with VS Code:
|
|
585
|
+
|
|
586
|
+
```bash
|
|
587
|
+
HOLOVIZ_MCP_TRANSPORT=http holoviz-mcp
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
Add to VS Code workspace `.vscode/mcp.json`:
|
|
591
|
+
|
|
592
|
+
```json
|
|
593
|
+
{
|
|
594
|
+
"servers": {
|
|
595
|
+
"holoviz": {
|
|
596
|
+
"type": "http",
|
|
597
|
+
"url": "http://127.0.0.1:8000/mcp/",
|
|
598
|
+
}
|
|
599
|
+
},
|
|
600
|
+
"inputs": []
|
|
601
|
+
}
|
|
602
|
+
```
|
|
603
|
+
|
|
604
|
+
### Template
|
|
605
|
+
|
|
606
|
+
This project uses [copier-template-panel-extension](https://github.com/panel-extensions/copier-template-panel-extension).
|
|
607
|
+
|
|
608
|
+
Update to the latest template:
|
|
609
|
+
|
|
610
|
+
```bash
|
|
611
|
+
pixi exec --spec copier --spec ruamel.yaml -- copier update --defaults --trust
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
## ❤️ Contributing
|
|
615
|
+
|
|
616
|
+
We welcome contributions! Here's how to get started:
|
|
617
|
+
|
|
618
|
+
1. **Fork** the repository and create a new branch
|
|
619
|
+
2. **Make** your changes with tests and documentation
|
|
620
|
+
3. **Run** `pixi run test` to ensure everything works
|
|
621
|
+
4. **Submit** a pull request
|
|
622
|
+
|
|
623
|
+
### Code Quality
|
|
624
|
+
|
|
625
|
+
- **pre-commit** hooks ensure consistent formatting
|
|
626
|
+
- **pytest** for comprehensive testing
|
|
627
|
+
- **GitHub Actions** for CI/CD
|
|
628
|
+
|
|
629
|
+
Run `pixi run pre-commit-install` to set up code quality checks.
|
|
630
|
+
|
|
631
|
+
## Roadmap
|
|
632
|
+
|
|
633
|
+
- [ ] Provide Panel and Panel Material UI best practices for both "beginners" and "intermediate" users. Current ones are for "intermediate users".
|
|
634
|
+
- [ ] Find that "magic" prompt that makes the LLM run a development server with hot reload (`panel serve ... --dev`) while developing. Would make things more engaging. I've tried a lot.
|
|
635
|
+
|
|
636
|
+
- [ ] Try out [Playwright MCP](https://github.com/microsoft/playwright-mcp). Its probably worth recommending for taking screenshots and interacting with the app in the browser.
|
|
637
|
+
- [ ] Provide reference guides for other HoloViz packages starting with hvPlot, param and HoloViews.
|
|
638
|
+
- [ ] Base index on latest released versions instead of latest code (`Head`).
|
|
639
|
+
- [ ] Add dev tools and agents! useful for HoloViz contributors.
|
|
640
|
+
- [ ] Figure out if there is potential for integrating with or playing together with Lumen AI
|
|
641
|
+
- [ ] Migrate to HoloViz organisation.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
holoviz_mcp/__init__.py,sha256=81mxQFZOa70OoQ9UOHSzrcC9NnZbca3q9r5rKcuMrIM,485
|
|
2
|
+
holoviz_mcp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
holoviz_mcp/serve.py,sha256=gmFJQkBNCneF2ZDFom012SLodaZY147MGhDw-ObqB34,966
|
|
4
|
+
holoviz_mcp/server.py,sha256=QzDfibGBoD6VYFW5GDluIyOo0pXib09R8zvI_cTPUQU,3222
|
|
5
|
+
holoviz_mcp/apps/__init__.py,sha256=Qiius2mdB0CjCRGsJJvfX4JBSkFnED8h4IipavBD32Y,34
|
|
6
|
+
holoviz_mcp/apps/configuration_viewer.py,sha256=pxJTcs1ORAd3SjEh8OmJ-yhg1zPq2ES_2nuUJU-QSt0,4035
|
|
7
|
+
holoviz_mcp/apps/search.py,sha256=xqLXH3V0dvZRlyy1nUBj7IUcS-nmRiZ1jNETUFea-SY,11509
|
|
8
|
+
holoviz_mcp/config/__init__.py,sha256=wMenhxaCQYpXWj-yNLCR7QZFsTZc0_Q43-WKDbmGGQc,764
|
|
9
|
+
holoviz_mcp/config/config.yaml,sha256=Mwb2DDDTGwMs0q4-87vjv5maQrXshOHmSX6VM2l6qaw,4732
|
|
10
|
+
holoviz_mcp/config/loader.py,sha256=7XIyh9DFVDQh4zaTUMy-zOO-wSaoVc4COxTi0ezQsd4,11040
|
|
11
|
+
holoviz_mcp/config/models.py,sha256=ohNxyJls7NAzyuGMWB72Pjzsrv1HZXELNo9plWJbz7k,9193
|
|
12
|
+
holoviz_mcp/config/schema.json,sha256=6PAizsDHOu9BPfdvCjnd8Mk6llT98ohPsLIKCNxpv6o,6584
|
|
13
|
+
holoviz_mcp/config/resources/best-practices/hvplot.md,sha256=NdPBoHND332ii8XUws269cKoh8P8O_sBfxTBJwp7Pk0,1645
|
|
14
|
+
holoviz_mcp/config/resources/best-practices/panel-material-ui.md,sha256=rbKriQezTmSgjqMaojifDy5NzcX1e-sztDyptjZjE58,12320
|
|
15
|
+
holoviz_mcp/config/resources/best-practices/panel.md,sha256=WOtLTNbNTVGN_x6UHpobsdEYAMUGeFj0IIiOj08NO04,11948
|
|
16
|
+
holoviz_mcp/docs_mcp/__init__.py,sha256=SrkGEFh3UwvSy1kPKZGWi91DDChrhxP8kiewZWotaP8,24
|
|
17
|
+
holoviz_mcp/docs_mcp/data.py,sha256=Z5wFDbqWoV7u0RdhhMVXMPZdbj7UvHzlfOZCtdFpd44,40930
|
|
18
|
+
holoviz_mcp/docs_mcp/models.py,sha256=b1UM4FNBnzxA3LO_0b--WskD0c0BHTqLspgNIwnql88,1174
|
|
19
|
+
holoviz_mcp/docs_mcp/pages_design.md,sha256=bLfkZowizkJaQs_zVDsskTUKoOfOadRy6Hr7WMH8P3Q,15055
|
|
20
|
+
holoviz_mcp/docs_mcp/server.py,sha256=Z5LSVRS3uX5egZtDWIDlWy6d5UBi0LzlknAFrnywvjs,8131
|
|
21
|
+
holoviz_mcp/hvplot_mcp/__init__.py,sha256=ypVtR70MsluzGvmfedR3j1wEoQfiq88ZZHka7ztbTpI,25
|
|
22
|
+
holoviz_mcp/hvplot_mcp/server.py,sha256=2wZ1l1m08aaNndkBzcLEfapL9ZuMVO4ItSXVvzhh1hc,5077
|
|
23
|
+
holoviz_mcp/panel_mcp/__init__.py,sha256=LVTDu3ARK9E4yIP40W36-DMl2IF6189g6pbGkGUZV4k,564
|
|
24
|
+
holoviz_mcp/panel_mcp/data.py,sha256=17RBRdZgV-9JVvWWRWHCPbtu6JA-yAvpTSmSBngRBR8,10698
|
|
25
|
+
holoviz_mcp/panel_mcp/models.py,sha256=YJZB-BsFdgUP98nfFGaNhWhHFmDhMl2rDniZG6PFRkk,5126
|
|
26
|
+
holoviz_mcp/panel_mcp/server.py,sha256=XQfFVyY-U4huNfcu5oVHeRwkh3AjTBcnNXgytcZNMMk,24127
|
|
27
|
+
holoviz_mcp/shared/__init__.py,sha256=_1R5D4cFY_k_albyuvYmguKgjuzuQKbKKGn6tu9z4dM,51
|
|
28
|
+
holoviz_mcp/shared/extract_tools.py,sha256=v1YPfVyLPGwnWdrq43cX0WbTR4kcdPeh04H7gFzH0ME,2831
|
|
29
|
+
holoviz_mcp-0.0.1a2.dist-info/METADATA,sha256=3mWBzarPPECnHnHEltgvCMQ9tJA2h-6TDoSwq5xnL8w,22644
|
|
30
|
+
holoviz_mcp-0.0.1a2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
31
|
+
holoviz_mcp-0.0.1a2.dist-info/entry_points.txt,sha256=s_i_2ezxxzBnC1OiWMW3aP8lQKwg0EWY3ErY55fwvLc,144
|
|
32
|
+
holoviz_mcp-0.0.1a2.dist-info/licenses/LICENSE.txt,sha256=Jqbh7noYJKpAY0CUXf5UeMNtew5vLlLHmRbBrIo6XrE,1515
|
|
33
|
+
holoviz_mcp-0.0.1a2.dist-info/RECORD,,
|