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/.

Related MCP server: Agent Team MCP Server

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityMaintained
ResponsivenessSyncing

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

Related MCP Servers

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