Revel Digital MCP Server
The Revel Digital MCP Server lets AI assistants like Claude, ChatGPT, Cursor, and others interact directly with your Revel Digital digital signage platform using the Model Context Protocol (MCP).
With this server, you can use natural language to manage devices, media, playlists, schedules, templates, data tables, and more — all through your favorite AI-powered tool.
What is MCP?
The Model Context Protocol is an open standard that allows AI applications to securely connect to external data sources and tools. Instead of copying and pasting data between your signage platform and an AI assistant, MCP lets the AI interact with Revel Digital directly on your behalf.
Getting Started
- Have a Revel Digital account with API access
- Connect your MCP client using one of the server endpoints below
- Authenticate via the browser-based OAuth login when prompted
- Start using tools to manage your digital signage
No API keys or manual configuration required — the OAuth flow handles everything automatically.
See it in Action
Watch this short demo showing Claude generating a report using the Revel Digital MCP Server:
Server Endpoints
| Transport | URL | Use When |
|---|---|---|
| Streamable HTTP (recommended) | https://mcp.reveldigital.io/mcp |
Recommended for most clients |
| SSE (legacy) | https://mcp.reveldigital.io/sse |
For clients that only support SSE |
Authentication
The MCP server uses OAuth 2.0 / OpenID Connect via Revel Digital's identity provider. When you first connect:
- Your MCP client sends a request to the server
- The server prompts your client to start the OAuth flow
- A browser window opens to the Revel Digital login page
- You sign in with your Revel Digital credentials
- After successful login, the browser redirects back and your client receives an access token
- All subsequent tool calls use this token automatically
Connecting Your AI Client
Claude Desktop
Add the following to your Claude Desktop MCP configuration file:
-
macOS:
~/Library/Application Support/Claude/claude_desktop_config.json -
Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"revel-digital": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.reveldigital.io/mcp"
]
}
}
}
Restart Claude Desktop after saving. A browser window will open for authentication on first use.
Note: Claude Desktop uses
mcp-remoteas a local proxy to connect to remote MCP servers. Make sure you have Node.js 18+ installed.
Claude Code (CLI)
claude mcp add revel-digital --transport http https://mcp.reveldigital.io/mcp
Or add to your .mcp.json file:
{
"mcpServers": {
"revel-digital": {
"type": "url",
"url": "https://mcp.reveldigital.io/mcp"
}
}
}
Cursor
- Open Settings → MCP Servers
- Click Add Server
- Set the URL to
https://mcp.reveldigital.io/mcp - Select Streamable HTTP as the transport type
- Click Save
VS Code (Copilot)
Add the following to your VS Code settings.json:
{
"mcp": {
"servers": {
"revel-digital": {
"type": "http",
"url": "https://mcp.reveldigital.io/mcp"
}
}
}
}
ChatGPT Desktop
- Open Settings → Tools & Plugins → MCP Servers
- Click Add Server
- Enter the URL:
https://mcp.reveldigital.io/mcp - Authenticate via the browser when prompted
Windsurf
- Open Settings → MCP
- Add a new remote server with URL
https://mcp.reveldigital.io/mcp - Save and connect
Other MCP Clients
For any MCP-compatible client, connect to:
-
Streamable HTTP:
POST https://mcp.reveldigital.io/mcp -
SSE:
GET https://mcp.reveldigital.io/sse
Available Tools
The server provides 46 tools across 14 categories. For complete parameter documentation, see the full tool reference.
Account & Users (5 tools)
Manage account information, organizations, users, and audit logs.
| Tool | Description |
|---|---|
get_account |
Get account-level details including account ID, name, subscription type, feature flags, and contact information. |
list_organizations |
List all organizations (sub-accounts) under the account. Organizations partition devices, media, schedules, and users for multi-tenant or multi-location deployments. |
list_audit_events |
List audit log events recording user and system actions such as creating, updating, or deleting resources. Supports filtering by user, event type, HTTP method, date range, IP address, and response code. |
list_users |
List all users in the account with their id, name, email, role, and permissions. |
get_user |
Get detailed information about a specific user by ID. |
Devices (7 tools)
Manage devices (players) registered to the account. Each device represents a physical display player (Android, Chrome OS, Windows, Linux, or BrightSign) that renders scheduled content.
| Tool | Description |
|---|---|
list_devices |
List devices with filtering by group, device type, online status, and organization. Optionally include latest screenshot data. |
get_device |
Get detailed device info including name, type, group assignment, current schedule, online status, last check-in time, IP address, and firmware version. |
create_device |
Pre-provision a new device entry. Supports setting name, device type, group assignment, and activation code for pairing. |
update_device |
Update a device's name, group assignment, schedule, or tags. |
delete_device |
Permanently remove a device registration. The physical player will need to re-register if it reconnects. |
send_device_command |
Send a remote command to a device: reboot, screenshot, restart-player, or clear-cache. Commands execute on the device's next check-in. |
bulk_send_device_commands |
Send commands to multiple devices simultaneously for fleet-wide operations. |
get_device_snapshot |
Retrieve the latest screenshot for a device showing what is currently displayed. Supports base64 output. |
Device Groups (5 tools)
Organize devices into hierarchical folder structures.
| Tool | Description |
|---|---|
list_device_groups |
List all device groups with id, name, and parent reference. |
get_device_group |
Get details of a group including child groups. |
create_device_group |
Create a new group, optionally nested under a parent. |
update_device_group |
Rename a group or move it under a different parent. |
delete_device_group |
Delete a group. Devices in the group become ungrouped. |
Media (5 tools)
Manage media files in the Revel Digital library including images (JPG, PNG, GIF), videos (MP4, WebM), PDFs, web pages, and other content types.
| Tool | Description |
|---|---|
list_media |
List media files with filtering by group. Returns id, name, file type, group, tags, and availability dates. |
get_media |
Get detailed media info including file size, URL, sharing status, and availability window. |
update_media |
Update a media item's metadata — name, group, tags, sharing status, or availability dates. Does not replace the file itself. |
delete_media |
Permanently delete a media file. References in playlists or templates will become invalid. |
import_media |
Import a media file from an external URL into the library. |
Media Groups (4 tools)
Organize media files into hierarchical folder structures.
| Tool | Description |
|---|---|
list_media_groups |
List all media groups with id, name, and parent reference. |
create_media_group |
Create a new group, optionally nested under a parent. |
update_media_group |
Rename a group or move it under a different parent. |
delete_media_group |
Delete a group. Media in the group becomes ungrouped. |
Playlists (5 tools)
Manage playlists — ordered sequences of media items (images, videos, web pages) that play in rotation on devices.
| Tool | Description |
|---|---|
list_playlists |
List all playlists with id, name, group, duration, and item count. |
get_playlist |
Get a playlist with its full ordered list of media items, duration, and sharing status. |
create_playlist |
Create a new playlist. Optionally pre-populate with media items, each with display duration, transition, and sequence order. |
update_playlist |
Update a playlist's name, group, or media items. When updating items, send the complete ordered array — it replaces existing items entirely. |
delete_playlist |
Permanently delete a playlist. Schedules referencing it will need to be updated. |
Playlist Groups (2 tools)
Organize playlists into folders. Tools follow the same pattern as other group tools (list_playlist_groups, create_playlist_group).
Schedules (5 tools)
Manage schedules — time-based rules that determine when playlists, templates, or campaigns play on devices.
| Tool | Description |
|---|---|
list_schedules |
List all schedules with filtering by group or target device. |
get_schedule |
Get a schedule with its time entries, content reference (Playlist, Template, or Campaign), playback rules, and assigned devices. |
create_schedule |
Create a new schedule linking content to devices with time-based playback rules. |
update_schedule |
Update a schedule's name, group, content type, time entries, or device assignments. |
delete_schedule |
Permanently delete a schedule. Assigned devices will no longer receive its content. |
Schedule Groups (2 tools)
Organize schedules into folders. Tools follow the same pattern as other group tools (list_schedule_groups, create_schedule_group).
Templates (4 tools)
Manage templates — multi-zone screen layouts where each zone can display a different playlist, web page, or media item simultaneously. Templates also support JavaScript scripting for interactive or dynamic content.
| Tool | Description |
|---|---|
list_templates |
List all templates with id, name, group, and zone configuration. |
get_template |
Get a template with its full zone definitions, dimensions, and scripting. Each zone defines a screen region with position, size, and content assignment. |
create_template |
Create a new template with a specified canvas size (e.g. 1920×1080). |
update_template |
Update a template's name, group, dimensions, zone layout, or scripting. Zone updates replace existing zones entirely. |
Template Groups (2 tools)
Organize templates into folders. Tools follow the same pattern as other group tools (list_template_groups, create_template_group).
Data Tables (17 tools)
Manage data tables — structured row/column data that can be used in templates and playlists for dynamic content. Includes full CRUD, batch operations, CSV export, and row version history with rollback.
Table Management:
| Tool | Description |
|---|---|
list_datatables |
List data tables with cursor-based pagination. |
get_datatable |
Get a table definition including its column schema and metadata. |
create_datatable |
Create a new data table with a name and column schema. |
update_datatable |
Update a table definition — rename or modify column schema. |
delete_datatable |
Permanently delete a table and all its rows. |
Row Operations:
| Tool | Description |
|---|---|
list_datatable_rows |
List rows with filtering, sorting, field selection, and cursor-based pagination. |
get_datatable_row |
Get a single row by ID with all column values. |
create_datatable_row |
Create a new row with column values matching the table schema. |
update_datatable_row |
Partial update — only the specified columns are changed. |
delete_datatable_row |
Delete a single row. |
Batch Operations:
| Tool | Description |
|---|---|
batch_create_datatable_rows |
Create multiple rows in a single request. |
batch_delete_datatable_rows |
Delete multiple rows in a single request (max 100). |
reorder_datatable_rows |
Reorder rows by providing row IDs in the desired sequence. |
Export & Versioning:
| Tool | Description |
|---|---|
export_datatable_rows |
Export all rows as CSV. |
list_datatable_row_versions |
List version history for a row (newest first). Each version captures the row's state at a point in time. |
get_datatable_row_version |
Get a specific version snapshot of a row. |
rollback_datatable_row |
Roll back a row to a specific previous version, replacing its current state. |
Alerts (3 tools)
Monitor and manage device alerts. Alerts are generated automatically when monitored conditions trigger — for example, when a device goes offline, encounters a content error, or exceeds resource thresholds.
| Tool | Description |
|---|---|
list_alerts |
List alerts with filtering by device, active/resolved status, and organization. |
get_alert |
Get detailed alert info including type, associated device, trigger condition, timestamps, and resolution status. |
update_alert |
Update an alert's status — typically to mark it as resolved or acknowledged. |
Analytics (13 tools)
Query the AdHawk analytics engine. All analytics tools require startDate and endDate parameters and support optional device filtering.
Play & Content Logs:
| Tool | Description |
|---|---|
get_play_logs |
Raw content play log entries. Each entry records a single media play event with timestamp, duration, media file ID, and device ID. |
get_ping_logs |
Device connectivity logs recording check-ins with timestamp, IP address, CPU usage, memory usage, and connection type. Filterable by CPU/memory thresholds. |
get_event_logs |
Custom event log entries — application-defined occurrences (user interactions, sensor triggers) logged by templates or player scripts. |
Aggregated Metrics:
| Tool | Description |
|---|---|
get_event_metrics |
Aggregated counts and distributions for custom events over time. Supports time bucketing (minute through month) and grouping by device or event name. |
get_device_metrics |
Device health and performance metrics — uptime, storage, memory, CPU, and connection quality over time. |
get_media_play_stats |
Per-media play statistics: total play count, total duration, average duration, and unique device count. |
get_device_play_stats |
Per-device play statistics: total play count, total duration, and content utilization. |
get_play_stats_by_time |
Play statistics bucketed by time interval for identifying peak display times and trends. Supports grouping by device or media file. |
Audience Analytics (requires audience measurement hardware such as a camera with face detection):
| Tool | Description |
|---|---|
get_impressions |
Audience impression data — viewer detections with estimated dwell time, demographics, and device ID. Filterable by gender and minimum dwell time. |
get_audience_metrics |
Aggregated audience measurement: viewer count, average dwell time, attention time, and demographic estimates. |
get_media_impressions |
Impression data per media item: view count, display duration, and audience reach per asset. |
Other:
| Tool | Description |
|---|---|
get_event_flow |
Event flow sequences showing multi-step user interaction patterns over time. |
get_heatmap |
Heatmap data showing time-of-day and day-of-week activity intensity matrices. |
Troubleshooting
"Connection Error - Check if your MCP server is running" Make sure you're using the correct transport type (Streamable HTTP vs SSE) and the correct URL path (/mcp or /sse).
"Mcp-Session-Id header is required" You're connecting with SSE transport to the Streamable HTTP endpoint. Either switch to Streamable HTTP transport or use the /sse endpoint.
OAuth login loop Clear your browser cookies for mcp.reveldigital.io and id.reveldigital.com, then try connecting again.
Resources
Related to
Comments
0 comments
Please sign in to leave a comment.