MCP Server
Connect Claude, Cursor, VS Code, and other AI clients to your widgets.pro account over the Model Context Protocol.
The widgets.pro MCP server lets AI clients read and edit your dashboards, widgets, files, and marketplace items on your behalf — over the Model Context Protocol. Once connected, an assistant can answer questions like "add a revenue chart to my Sales dashboard" or "duplicate the Ops dashboard for the staging team" and execute the change directly.
Endpoint
https://mcp.widgets.proBoth https://mcp.widgets.pro and https://mcp.widgets.pro/mcp work — clients that strip the path are handled automatically.
Authentication
The server speaks OAuth 2.1 with Dynamic Client Registration. Most modern MCP clients (Claude Code, Claude.ai, Cursor, VS Code) handle the flow themselves — you click Authorize in a browser tab and you're done. No API keys, no client secrets to manage.
For older clients without native OAuth support, use the mcp-remote bridge — see Other clients.
Scopes
Tokens are issued with one or more of the following scopes:
| Scope | Grants |
|---|---|
dashboard:read | List, view, screenshot dashboards |
dashboard:write | Create, update, delete, duplicate, share dashboards |
widget:read | List and view widgets and widget schemas |
widget:write | Add, update, move, delete widgets |
file:read | List and download files |
file:write | Upload files |
Defaults to all non-admin scopes. You can narrow scopes per API key in Settings → Developer → API keys.
Client setup
Claude Code
claude mcp add --transport http widgets-pro https://mcp.widgets.proRestart Claude Code; on the next prompt that uses a widgets.pro tool, a browser tab opens for OAuth.
Claude.ai (web)
- Settings → Profile → Integrations → Add custom integration
- Name:
widgets.pro - URL:
https://mcp.widgets.pro - Click Add — authorize in the popup.
Cursor
Settings → MCP → Add new MCP server (or edit ~/.cursor/mcp.json):
{
"mcpServers": {
"widgets-pro": {
"type": "http",
"url": "https://mcp.widgets.pro/mcp"
}
}
}Cursor handles OAuth on first use.
VS Code (GitHub Copilot)
Open the Command Palette → MCP: Add Server → choose HTTP → paste https://mcp.widgets.pro. The OAuth tab opens automatically.
Or edit .vscode/mcp.json:
{
"servers": {
"widgets-pro": {
"type": "http",
"url": "https://mcp.widgets.pro/mcp"
}
}
}Codex
codex mcp add widgets-pro --url https://mcp.widgets.proWindsurf
Open Cascade → Configure MCP → Add server → paste the URL. Windsurf supports streamable HTTP + OAuth natively.
Claude for Desktop
Claude Desktop doesn't yet support remote OAuth servers natively, so use the mcp-remote bridge. Edit claude_desktop_config.json:
{
"mcpServers": {
"widgets-pro": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.widgets.pro/mcp"]
}
}
}Restart Claude Desktop. On first request a browser tab opens for OAuth; the token is cached at ~/.mcp-auth/.
Other clients
Any client that supports streamable HTTP + OAuth 2.1 can connect directly. For stdio-only clients, wrap the URL with mcp-remote:
{
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.widgets.pro/mcp"]
}Available tools
The assistant discovers these tools automatically — you don't need to memorize them. The list below is for reference.
Dashboards
| Tool | Purpose |
|---|---|
list_dashboards | List dashboards accessible to the user |
get_dashboard | Get a single dashboard with widget count |
create_dashboard | Create a new dashboard |
update_dashboard | Rename, resettle sharing, regroup widgets |
delete_dashboard | Permanently delete a dashboard |
duplicate_dashboard | Copy a dashboard with all widgets |
share_dashboard | Generate a public share link |
unshare_dashboard | Revoke the public share link |
get_screenshot | Capture a PNG of a dashboard or widget |
get_active_dashboard | Read the dashboard the user is currently viewing |
Widgets
| Tool | Purpose |
|---|---|
list_widgets | List widgets on a dashboard |
get_widget | Get a widget's full config |
add_widget | Add a widget to a dashboard |
update_widget | Update widget config or type |
move_widget | Change a widget's position or size |
delete_widget | Remove a widget |
get_widget_schema | Get the JSON Schema for a widget type |
get_available_widget_types | Browse all widget types |
Files
| Tool | Purpose |
|---|---|
list_files | List uploaded files |
get_file | Get a file's metadata + signed URL |
upload_file | Upload a file (image, CSV, JSON) |
Marketplace
| Tool | Purpose |
|---|---|
marketplace_browse | Browse published widget templates |
marketplace_publish | Publish a widget to the marketplace |
marketplace_install | Install a marketplace widget into a dashboard |
marketplace_version | Manage versions of a published widget |
Designer (advanced)
| Tool | Purpose |
|---|---|
designer_get_template | Get a widget definition template |
designer_create_definition | Author a new widget definition |
designer_duplicate_definition | Fork an existing definition |
designer_snapshot | Snapshot the current designer canvas |
designer_batch | Run a batch of design ops atomically |
designer_get_guidelines | Read the active design guidelines |
Batch
| Tool | Purpose |
|---|---|
batch_operations | Run several read/write ops in one round-trip |
Rate limits
Default: 1000 requests per hour per OAuth client per user. Hitting the limit returns JSON-RPC 429. If you need more for a high-volume agent, contact support.
Troubleshooting
The browser tab doesn't open / OAuth fails. Check that your client supports OAuth 2.1 with PKCE. If not, use mcp-remote (see Other clients).
401 Unauthorized after a while. Tokens expire. Most clients refresh transparently; if not, re-run the Add server step or delete the stale entry under ~/.mcp-auth/.
A tool returns "scope required: dashboard:write". The token wasn't issued the scope. In the originating client, remove the integration and re-add it — the consent screen will request the right scopes. For API keys, edit scopes in Settings → Developer → API keys.
Need to revoke access entirely. Open Settings → Developer → Connected apps, find the client by name, and click Revoke. The token stops working immediately.