Companion MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| COMPANION_HOST | No | Companion instance IP | 127.0.0.1 |
| COMPANION_PORT | No | Companion HTTP and websocket port | 8000 |
| COMPANION_UI_HOST | No | Browser UI bind address | 127.0.0.1 |
| COMPANION_UI_PORT | No | Browser UI port | 8088 |
| COMPANION_TIMEOUT_S | No | HTTP request timeout in seconds | 10.0 |
| COMPANION_TRANSPORT | No | MCP transport (stdio, sse, streamable-http) | stdio |
| COMPANION_ALLOWED_HOSTS | No | Comma-separated allowlist for target hosts. Set '*' to allow any. | 127.0.0.1,localhost,::1 |
| COMPANION_WRITE_ENABLED | No | Set to '0' for read-only mode | 1 |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_server_configA | Return the current Companion MCP server configuration. |
| get_custom_variableC | Get the value of a Companion custom variable. |
| get_module_variableC | Get a module variable value from a named Companion connection. |
| health_checkA | Probe Companion reachability and return API status details. |
| list_surfacesA | List connected Companion control surfaces. |
| get_button_infoB | Fetch the current control state and rendered preview metadata for a Companion button location. |
| get_button_runtime_summaryC | Return a compact runtime-oriented summary for a button. |
| verify_button_render_changeC | Compare the current button preview fingerprint to a previous preview hash. |
| set_button_style_verifiedC | Apply button style changes and verify whether the rendered button output actually changed. |
| get_page_gridB | Read a rectangular grid of button payloads for a page. |
| export_page_layoutC | Export a page region as a reusable layout payload. |
| snapshot_page_inventoryC | Export a page region with operator-focused button summaries, hashes, style, and feedback state. |
| save_page_inventory_snapshotC | Capture a page inventory snapshot and save it to a local checkpoint file. |
| load_page_inventory_snapshotC | Load a previously saved page inventory snapshot from disk. |
| list_page_inventory_snapshotsA | List saved page inventory snapshot files. |
| delete_page_inventory_snapshotC | Delete a saved page inventory snapshot file. |
| diff_page_inventoryC | Compare two page inventory snapshots and summarize added, removed, and changed buttons. |
| preview_restore_page_style_from_inventoryA | Resolve a captured page inventory into restore-style entries without writing to Companion. |
| preview_restore_page_style_from_snapshotB | Preview a restore plan from a saved snapshot, optionally filtered to selected coordinates. |
| save_page_style_presetC | Save the current page style state as a reusable preset file. |
| load_page_style_presetC | Load a saved page style preset file. |
| list_page_style_presetsA | List saved page style preset files. |
| delete_page_style_presetC | Delete a saved page style preset file. |
| preview_apply_page_style_presetA | Preview applying a saved preset onto a page, optionally with row/column offsets. |
| find_buttonsC | Find buttons by text, control id, control type, or integration metadata within a page region. |
| snapshot_custom_variablesC | Read a named set of custom variables into one snapshot payload. |
| press_buttonB | Press and release a button (runs both down and up actions). |
| press_button_verifiedB | Press a button and verify whether its visible or runtime state changed. |
| hold_buttonA | Press and hold a button (runs down actions only). Use release_button to let go. |
| release_buttonA | Release a held button (runs up actions). |
| rotate_leftC | Trigger a left rotation on an encoder button. |
| rotate_rightC | Trigger a right rotation on an encoder button. |
| set_stepC | Set the current step of a button action sequence. |
| set_button_textC | Change the text displayed on a button. |
| set_button_colorB | Change button colors. Use 6-digit hex (e.g. 'ff0000' for red). color=text color, bgcolor=background color. |
| set_button_styleA | Set multiple button style properties at once. All parameters optional — only provided values are changed. |
| set_custom_variableB | Set the value of a Companion custom variable. |
| rescan_surfacesA | Rescan for connected USB surfaces (Stream Deck, etc.). |
| press_button_sequenceA | Press multiple buttons in sequence with a configurable delay between each. buttons_json: JSON array of {page, row, column} objects. delay_ms: milliseconds to wait between presses (default 100). |
| set_page_styleC | Batch-set style on multiple buttons on a page. buttons_json: JSON array of {row, column, text?, color?, bgcolor?} objects. |
| set_page_style_verifiedC | Batch-set styles on a page and return verified per-button outcomes plus an inventory diff. |
| restore_page_style_from_inventoryC | Restore button style state from a previously captured page inventory. |
| restore_selected_page_style_from_inventoryC | Restore only selected coordinates from a captured page inventory. |
| restore_page_style_from_snapshotC | Restore button style state from a saved snapshot file, optionally filtered to selected coordinates. |
| apply_page_style_transactionC | Save a rollback checkpoint, apply verified page style changes, and return the checkpoint metadata. |
| rollback_page_style_transactionC | Rollback page styles from a saved transaction snapshot. |
| apply_page_style_presetC | Apply a saved page style preset with optional page override and coordinate offsets. |
| label_button_gridA | Label a grid of buttons from a flat list of names. Fills left-to-right, top-to-bottom. Empty strings skip that position. labels_json: JSON array of strings, e.g. ["GO", "STOP", "", "BLACKOUT"] columns: buttons per row (default 8, use 5 for standard Stream Deck). |
| preview_page_styleC | Validate and preview a batch page-style operation without writing to Companion. |
| preview_label_button_gridC | Resolve a label grid into coordinates without writing to Companion. |
| preview_button_templateC | Preview a reusable button template placed at an origin on a page. |
| apply_button_templateC | Apply a reusable button template at an origin on a page. |
| press_bank_buttonA | Press a button using the legacy bank API (deprecated but still works). button is 0-indexed. |
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 53 tools
Most tools have distinct purposes with clear descriptions (e.g., press vs hold vs release, various preview vs apply pairs). A few pairs like apply_button_template and apply_page_style_preset could be confused at a glance, but descriptions clarify the differing targets (template vs preset). Overall, an agent can reliably distinguish tools.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., press_button, set_button_color, list_surfaces). Even variations like hold_button and rotate_right fit the pattern. There is no mixing of conventions, making the set predictable.
With 53 tools, the server is over-scoped. Many tools are variations (e.g., press, press_verified, press_sequence; set_style, set_style_verified) which could be consolidated. While the domain is rich, this number exceeds typical MCP server sizes and may overwhelm agents.
The surface covers all major aspects of Companion management: button actions, style editing, presets, snapshots, variables, surfaces, rollbacks, and verification. No obvious gaps remain; even encoder rotation and transaction rollback are present.