Cli

io.github.pushtodisplayPublished by GitHub account pushtodisplayv0.1.14Updated Oct 24, 2026

PushToDisplay MCP server — send real-time updates to display boards on iOS and Android devices.

Overview

AI-generated overview

A local MCP server that lets an assistant send real-time text updates to Push To Display boards on iOS and Android devices and manage those boards.

What you can do
Send styled text updates to a display board, with size, weight, colors, panel targeting and layout options, or a full JSON payload from stdin; uses the default board when none is named. List boards, get board details, create boards with a name, description and layout, update a board's name, description or layout, set the default board, and delete boards permanently. List active device-board streams. Output is available as machine-readable JSON for scripts and agents.
When to use it
Useful when you want an assistant to push status, build results, alerts or incident notes onto a live display board on a phone or tablet, or to set up and manage those boards from a chat session.
Requirements
Runs locally over stdio via npx or a global npm install; requires Node.js 18+. Needs a Push To Display account, signed in through browser or device-code login, with credentials stored in the OS keychain or a config directory. Optional environment variables PTD_API_URL, PTD_SERVICE_URL, PTD_IDP_URL and PTD_CONFIG_DIR override endpoints and config location. Network access to the Push To Display services is required.
Before you install
The MCP server inherits the CLI session, so an assistant acts with your account's full access. Tools can create, update, set default and permanently delete boards, and send content that appears on your devices. Credentials are stored in the OS keychain or fall back to a config directory. An API key (PTD_API_KEY) is supported for the send command only. Review board deletions before approving them.

Installation

In SourceWeft

  1. Open Cli in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

pushtodisplay

Command-line interface and MCP server for Push To Display — send real-time updates to display boards from your terminal or AI agents.

[Push to Display — 4-panel regional status board]

Get the app

Turn any screen into a live display board — get Push to Display on iOS and Android.

[Download on the App Store] [Get it on Google Play]

Install

Run directly with npx (no install needed):

bash
npx pushtodisplay --help

Or install globally:

bash
npm install -g pushtodisplay

Requires Node.js 18+. See the PushToDisplay documentation for guides, use cases, and API details.

Quick start

bash
# Log in (opens browser)pushtodisplay auth login
# Send an update (uses your default board)pushtodisplay send "Hello, Display!"
# Send to a specific boardpushtodisplay send -b <board-id> "Deploy completed"
# List your boardspushtodisplay boards list

Authentication

Log in with your Push To Display account — the same account you use in the mobile app.

Browser login (default)

bash
pushtodisplay auth login

Opens your browser. Sign in and the CLI receives your credentials automatically.

Device code login (headless)

For machines without a browser — SSH sessions, containers, or remote servers:

bash
pushtodisplay auth login --device-code

The CLI prints a URL and a one-time code. Open the URL on any device, enter the code, and approve the login.

Credentials are stored in your OS keychain (macOS Keychain, Linux libsecret, Windows Credential Manager). Falls back to ~/.config/pushtodisplay/ if the keychain is unavailable.

bash
# Check auth statuspushtodisplay auth status
# Machine-readable status for scripts/agents (exit 0 = authenticated)pushtodisplay auth status --json
# Log out (clear stored credentials)pushtodisplay auth logout

auth status reports effective auth: an expired access token is still reported as authenticated when a valid refresh token can renew it transparently (a will refresh automatically note is shown instead of the raw token expiry). It exits 0 when authenticated and 1 when not, so it is safe to gate scripts on it.

json
{  "authenticated": true,  "method": "oauth",  "accessTokenExpired": true,  "canRefresh": true,  "sessionExpiresAt": "2026-06-01T00:00:00.000Z"}

Commands

send

Send a display update to a board.

bash
# Simple textpushtodisplay send -b my-board-id "Deploy succeeded"
# Styled textpushtodisplay send -b my-board-id "Status" --size large --weight bold --color "#00FF00"
# Multiple blockspushtodisplay send -b my-board-id "Build:" "passing" --color "#22C55E"
# Panel targeting with layout optionspushtodisplay send -b my-board-id --panel 2 "Right panel content"pushtodisplay send -b my-board-id --panel 1 --full-panel --density compact --align-x center "Alert"
# Per-block styling with JSON (repeatable)pushtodisplay send -b my-board-id \  --block '{"text": "API Health", "size": "large", "weight": "bold"}' \  --block '{"text": "Uptime: 99.97%", "color": "#22C55E"}'
# Pipe a full JSON payload from stdinecho '{"boardId":"my-board-id","blocks":[{"text":"From pipe"}]}' | pushtodisplay send --stdin

If no -b flag is provided, the server uses your default board.

Style flags
FlagValuesDescription
-s, --sizesmall, medium, largeText size
-w, --weightregular, semibold, boldFont weight
-c, --colorHex color (#RRGGBB)Text color
--backgroundHex color (#RRGGBB)Background color
Panel flags
FlagValuesDescription
-p, --panel1–4Target panel number
--full-panel—Fill the entire panel area
--densitycompact, standard, spaciousContent spacing
--align-xstart, center, endHorizontal alignment
--align-ystart, center, endVertical alignment
Other flags
FlagDescription
-b, --boardBoard ID
--block <json>Styled block as JSON (repeatable)
--stdinRead full JSON request from stdin

boards

bash
pushtodisplay boards list              # List all boardspushtodisplay boards get <id>          # Get board detailspushtodisplay boards create -n "Name"  # Create a boardpushtodisplay boards create -n "Dash" -l 4  # Create with a layoutpushtodisplay boards delete <id>       # Delete a board

Create options:

FlagDescription
-n, --nameBoard name (required)
-d, --descriptionBoard description
-l, --layoutLayout ID

devices

bash
pushtodisplay devices list    # List active device-board streams

config

bash
pushtodisplay config              # Show current configurationpushtodisplay config show         # Same as above

JSON output

Add --json to any command for machine-readable output:

bash
pushtodisplay boards list --jsonpushtodisplay send -b my-board "test" --json

Configuration

Configuration is resolved in order: environment variables → config file → defaults.

Env varDescriptionDefault
PTD_API_URLAPI endpointhttps://api.pushtodisplay.com
PTD_SERVICE_URLService endpointhttps://services.pushtodisplay.com
PTD_IDP_URLIdentity providerhttps://idp.pushtodisplay.com
PTD_CONFIG_DIRConfig directory~/.config/pushtodisplay

MCP server

The CLI includes a built-in Model Context Protocol server, giving AI agents (Claude, Cursor, VS Code Copilot, and others) direct access to your display boards.

The MCP server inherits your CLI session — if you've run pushtodisplay auth login, it authenticates automatically.

Setup

Claude Code
bash
claude mcp add pushtodisplay -- npx pushtodisplay mcp
Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

json
{  "mcpServers": {    "pushtodisplay": {      "command": "npx",      "args": ["pushtodisplay", "mcp"]    }  }}
Cursor

Open Settings → MCP Servers → Add Server, or edit .cursor/mcp.json:

json
{  "mcpServers": {    "pushtodisplay": {      "command": "npx",      "args": ["pushtodisplay", "mcp"]    }  }}
VS Code (GitHub Copilot)

Add to .vscode/mcp.json:

json
{  "servers": {    "pushtodisplay": {      "command": "npx",      "args": ["pushtodisplay", "mcp"]    }  }}
Other MCP clients

Any MCP client that supports stdio transport can use Push To Display. The server command is:

bash
npx pushtodisplay mcp

Available MCP tools

ToolDescription
pushtodisplay_send_updateSend content to a board
pushtodisplay_list_boardsList all boards
pushtodisplay_get_boardGet details of a board
pushtodisplay_create_boardCreate a new board
pushtodisplay_update_boardUpdate a board's name, description, or layout
pushtodisplay_set_default_boardSet a board as your default
pushtodisplay_delete_boardDelete a board permanently
pushtodisplay_list_devicesList active device connections

Commands at a glance

CommandDescription
auth loginLog in (browser or device code)
auth logoutRemove stored credentials
auth statusShow current auth status
send [text...]Send a display update
boards listList your boards
boards get <id>Get board details
boards createCreate a new board
boards delete <id>Delete a board
devices listList active device connections
configShow current configuration
mcpStart the MCP server

API key authentication

For CI/CD pipelines and scripts where interactive login isn't available, you can authenticate with an API key. Create one from the mobile app or the web portal. API keys start with pt_.

bash
# Via environment variableexport PTD_API_KEY=pt_your_key_herepushtodisplay send "From CI"
# Or store in keychainpushtodisplay auth login --api-key pt_your_key_here

Note: API key auth only supports the send command. Use auth login for full access to boards, devices, and config management.

Screenshots

[4-panel layout — regional status board] 4-panel layout — regional status at a glance

[2-panel layout with CI/CD logs] Multi-panel with CI/CD pipeline and infrastructure logs

[Incident timeline display] Incident timeline with color-coded severity

License

MIT

Source: README.md at commit 4f4fa16

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.14LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts