bohsa-announce-mcp
v1.0.0
Published
Put an announcement on the BOHSA office TV — icon, title, message, duration and sound.
Maintainers
Readme
bohsa-announce-mcp
Put an announcement on the BOHSA office TV — icon, title, message, duration and sound.
The TV polls for announcements every few seconds and shows one as a full-screen takeover for the duration you ask for, then returns to the dashboard.
It interrupts a live video call. That was a deliberate choice: an announcement is the one thing considered worth interrupting the room for. Use it accordingly.
Install
{
"mcpServers": {
"bohsa-announce": {
"command": "npx",
"args": ["-y", "bohsa-announce-mcp"],
"env": { "BOHSA_ANNOUNCE_KEY": "…" }
}
}
}BOHSA_ANNOUNCE_KEY is required. It is not the TV's own key — the TV's key ships inside the
widget's HTML and only grants reading announcements; creating one takes this separate key.
BOHSA_ANNOUNCE_URL is optional and defaults to the live endpoint.
The tool
announce_on_tv
| field | required | notes |
|---|---|---|
| title | yes | Title Case, ≤80 chars. Read from across a room, so keep it short. |
| body | no | ≤240 chars. Omit if the title says it all. |
| icon | no | One of the icons the TV's sprite contains (below). Default spark. |
| sound | no | chime · success · alert · celebrate · none. Default chime. |
| seconds | no | 2–120, default 12. Clamped server-side. |
| source | no | Who is announcing, for the audit trail. |
Icons: spark alert check zap clock cal trend layers play eye building
cap activity vol cam mic phone doc hand plus arrow
Icons are validated server-side against the sprite the TV actually renders, so a typo returns a 400 listing the valid options rather than showing an empty box on the wall.
Example
"Tell the office there's a fire drill at 3."
{
"title": "Fire Drill At 3pm",
"body": "Everyone to the car park please.",
"icon": "alert",
"sound": "alert",
"seconds": 20
}Notes
- Announcements expire after 30 minutes if the TV never picks them up, so a message queued while the screen is off does not surface hours later out of context.
- The TV confirms an announcement only after it has been on screen, so a refresh part-way through cannot replay it, and a TV that never rendered it does not silently swallow it.
