Skip to main content
Glama
DUROV-OS

Dashboard MCP

by DUROV-OS

Dashboard MCP

MCP connector + read-only web viewer for dashboards fully controlled by an AI agent. Supports any number of independent dashboards — each with its own slug, file, and URL /d/<slug>.

Live service: https://dashboard.89-207-254-32.nip.io

  • Dashboard list: /

  • Specific dashboard (read-only, auto-refresh every 5s): /d/<slug>

  • JSON API (also read-only): /api/dashboards, /api/dashboards/<slug>

  • MCP endpoint (OAuth required): /mcp

How it works

  • mcp_app.py — creates a single MCPServer, with OAuth (if OAUTH_* variables are set) or without (for local development).

  • tools.py — MCP tools (@mcp.tool()): list_dashboards, create_dashboard, get_dashboard, update_dashboard_meta, delete_dashboard, add_widget, update_widget, remove_widget, reorder_widgets, replace_widgets. This is how the agent manages dashboards. They are protected by OAuth at /mcp.

  • web.py — public HTML pages and JSON API (@mcp.custom_route, per the SDK documentation do not require authorization) — this is what people look at in the browser.

  • models.py — pydantic widget schemas: text, list, stats, progress, chart.

  • store.py — file storage, one JSON per dashboard in data/dashboards/.

Widget types

{"type": "text", "title": "Заметка", "body": "..."}
{"type": "list", "title": "Задачи", "ordered": false, "items": [{"label": "...", "value": "...", "note": "..."}]}
{"type": "stats", "title": "Метрики", "items": [{"label": "MRR", "value": "128k", "unit": "₽", "delta": "+12%", "trend": "up"}]}
{"type": "progress", "title": "Прогресс", "items": [{"label": "Q3", "value": 62, "max": 100, "color": "#395b4b"}]}
{"type": "chart", "title": "Динамика", "chartType": "line", "labels": ["Пн","Вт"], "series": [{"name": "Заказы", "data": [3, 7]}]}

Common fields: title (optional), size: sm|md|lg|full (width in the grid).

Local run

pip install -r requirements.txt
cp .env.example .env   # можно оставить OAUTH_* пустыми — сервер поднимется без auth
MCP_TRANSPORT=streamable-http python server.py
# либо просто `python server.py` для stdio (claude mcp add / MCP Inspector)

How to connect the connector in Claude

  1. A static OAuth client has been created on the server (Client ID/Secret are issued separately).

  2. In Claude: Settings → Connectors → Add custom connector.

    • URL: https://dashboard.89-207-254-32.nip.io/mcp

    • Client ID / Client Secret — as issued during deployment.

  3. After authorization, the tools from tools.py become available to the agent.

Deployment

The production server pulls this repository itself: deploy/deploy.sh runs via cron every 2 minutes, compares the local HEAD with origin/main, and if there are new commits — git reset --hard + docker compose up -d --build + a /healthz check. Just git push to main — changes will be picked up on production automatically within ~2 minutes.

Last verified deploy: 2026-08-19T15:29:01Z

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Persistent docs and memory for AI agents — read, write, organize & search a shared workspace.

  • Renders interactive Chart.js charts and dashboards inline in AI conversations.

  • Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DUROV-OS/dashboard-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server