BusyBar MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BUSY_ADDR | No | Bar address (default 10.0.4.20 over USB), or the WM address. | 10.0.4.20 |
| BUSY_TOKEN | No | Cloud token, used with BUSY_ADDR=https://api.busy.app. | |
| GITHUB_TOKEN | No | GitHub token; otherwise `gh auth token` is used. | |
| WM_API_TOKEN | No | Control token, if configured on the WM. | |
| BUSY_LAN_ADDR | No | Optional Wi-Fi or LAN address of the same Bar, used only when the main address is USB. | |
| BUSY_HTTP_PASSWORD | No | Password if the Bar's HTTP access is locked. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| bar_textA | Show a short status on the BUSY Bar, ASCII only. Front: 72x16, ~17 characters per line. Back: 160x80, ~37 characters per line. One or two lines; a long first line scrolls. Returns an image of the result. |
| bar_pixelsA |
|
| bar_progressC | Show a labelled progress bar (0..1). |
| bar_imageA | Show a picture: a local file path or an http(s) URL (PNG; on macOS also JPEG, GIF, HEIC, WebP), or a stock image from bar_stock. It is scaled to fit max_width x max_height (the whole screen by default), uploaded, and dithered to 16 greys on the back. Pixel art in small files stays sharp when scaled up. |
| bar_animationA | Play one of the Bar's stock animations (names from bar_stock, e.g. coding_72x16.anim, on_air_72x16.anim, meeting_72x16.anim). The size is in the name; 72x16 ones fill the front screen. Loops by default. Custom animations are not supported (closed format). |
| bar_stockB | Images, animations and sounds built into the Bar, for bar_image, bar_animation and bar_sound. |
| bar_soundA | Play exactly one of: a stock sound (bar_stock), an audio file path or URL (WAV; MP3/M4A/AIFF too on macOS or with ffmpeg), or a melody you write. Melody: space-separated NOTE:ms tokens, e.g. "C5:150 E5:150 G5:150 C6:400", R for a rest, chords with + ("C4+E4+G4:500"). Up to 15s. |
| bar_clearB | Dismiss temporary overlays and drawings from the MCP. Both screens unless display is given. |
| bar_screenshotB | Grab what a BUSY Bar screen shows right now, as an image. |
| bar_connectC | Save a direct USB, Wi-Fi or cloud address, or a busybar-wm address. For USB, optionally set a LAN fallback. |
| bar_statusB | Which Bar the server talks to, and its system status. |
| busybar_get_statusA | Read WM connection and active app, plus device, power, uptime, firmware and update status. |
| busybar_get_connectivityA | Read Wi-Fi, Bluetooth Low Energy, and USB or Wi-Fi transport status from the Bar. |
| busybar_list_appsA | List apps in the window manager manifest, including which are running and ready to show. |
| busybar_switch_appB | Pin a ready app by its exact name from busybar_list_apps. |
| busybar_show_messageC | Show a temporary WM overlay and automatically reveal the app underneath when it expires. |
| busybar_start_timerC | Start a countdown overlay on the Bar. The WM removes it when time runs out. |
| busybar_return_to_autoA | Release the current WM app pin and resume automatic display scheduling. |
| busybar_send_inputB | Route an OK or START tap, or an encoder step, to an app listening through the WM. Supply delta only for the encoder. |
| github_ciB | Latest GitHub Actions run for a repo branch (default branch if omitted). Shows it on the Bar unless show=false. |
| github_inboxA | Counts of PRs awaiting your review, your open PRs, and issues assigned to you. Shows them on the Bar unless show=false. |
| weatherB | Current weather for a city (Open-Meteo). Shows it on the Bar with an icon unless show=false. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 22 tools
Most tools target clearly distinct actions (show text, show pixels, play sound, screenshot, connect), so selection is generally unambiguous. However, bar_status, busybar_get_status, and busybar_get_connectivity overlap around device/connection state, and bar_clear versus the WM overlay lifecycle (show_message, start_timer, return_to_auto) leaves some uncertainty about which tool owns cleanup.
Two near-identical prefixes, bar_ and busybar_, refer to the same physical device, and the GitHub/weather integrations are unprefixed, creating a mixed namespace. Within each prefix patterns differ too: bar_text/bar_pixels are noun-only while busybar_get_status/list_apps follow verb_noun, so naming is readable but not predictable.
At 22 tools the surface is heavy for a single device-control server, sitting in the borderline 16-25 range. The display and WM operations justify most tools, but the three status readers and bundled GitHub/weather integrations inflate the count and could likely be consolidated.
Coverage is strong across display modes (text, pixels, progress, image, animation, sound, screenshot) and WM app control (list, switch, overlays, input, auto-return). Minor gaps remain: no explicit stop/cancel for a playing animation, sound, or active timer, and no brightness or volume control, though bar_clear and return_to_auto cover some cleanup.