Busy Bar MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Busy Bar MCP ServerWhat's the current status of the Busy Bar?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Busy Bar MCP Server
A Python MCP server written with FastMCP that wraps the busybar_python_sdk to communicate with a physical Busy Bar device over HTTP. The Busy Bar is a digital time-management display — this MCP server provides 32 tools for account retrieval, system information, time operations, BLE control, and input events, exposing its functionality through the standard Model Context Protocol so other tools and AI assistants can interact with it programmatically.
Status: 32 MCP tools are fully implemented across account retrieval, system information, time operations, device state queries, BLE control, and input events, with a complete test suite documented in this README. The project is ready to use — see the What's Next section below for planned work.
Prerequisites
Python ≥ 3.12 — the project pins Python 3.12+ (see
.python-version)uv — dependency manager and virtual environment resolver
Related MCP server: TimePRO MCP Server
Installation
Clone the repository and install dependencies:
uv syncThis creates a virtual environment and installs all packages declared in pyproject.toml (including busybar_python_sdk).
Configuration
Copy the example .env.example file (if present) to create your own .env at the project root with the following variables.
Variable | Description | Example |
| API auth token for authenticating with the Busy Bar device |
|
| IP address or hostname of the Busy Bar device (no protocol prefix) |
|
BUSYBAR_API_TOKEN=my-super-secret-token
BUSYBAR_BASE_URL=10.0.4.20It is also possible to declare the variables before starting the server:
export BUSYBAR_API_TOKEN=my-super-secret-token && export BUSYBAR_BASE_URL=10.0.4.20 Usage
Set the BUSYBAR_API_TOKEN and BUSYBAR_BASE_URL environment variables (or place them in a .env file in the working directory), then start the MCP server:
# One-shot run via uvx (no local install required)
BUSYBAR_API_TOKEN=… BUSYBAR_BASE_URL=10.0.4.20 uvx busybar-mcp
# Or install locally and run the console script
uv sync
BUSYBAR_API_TOKEN=… BUSYBAR_BASE_URL=10.0.4.20 busybar-mcp
# Development (built-in MCP dev server / inspector)
uv sync
BUSYBAR_API_TOKEN=… BUSYBAR_BASE_URL=10.0.4.20 mcp dev -- uvx busybar-mcppython -m busybar_mcp is equivalent to the console script and starts the same stdio server.
Once started, clients can connect to the server using their MCP transport.
MCP Tools
Account tools
Tool | Description |
| Retrieve linked account information (email, account ID) from the Busy Bar device |
| Check MQTT connection state for the linked account |
| Inspect MQTT backend configuration (server URL, certificate settings) |
System tools
Tool | Description |
| Query the API version supported by the device |
| Get the current network transport type (USB or Wi-Fi) |
| Comprehensive health check: device, firmware, system, and power state |
| Retrieve hardware identifiers and manufacturing details |
| Get firmware version and build metadata |
| Runtime system metrics (uptime, API SemVer, auto-update settings) |
| Battery charge level, voltage, current, and charging state |
Time tools
Tool | Description |
| Retrieve the device's real-time clock timestamp in ISO 8601 format |
| Get the currently configured timezone (name, offset, abbreviation) |
| List all supported timezones available for configuration |
Device Status & Configuration
Tool | Description |
| Retrieve BLE module status (powered state, MAC address) |
| Enable the BLE module and start advertising |
| Disable the BLE module and stop advertising |
| Remove the current BLE pairing so the device becomes discoverable again |
| Get the current BUSY timer state including profile and timing details |
| Inspect HTTP API key management mode and validity |
| Get the human-readable device name |
| Retrieve the current display brightness level |
| Retrieve the current audio volume level |
| Query Matter fabric count and latest commissioning outcome |
| Read smart home relay/output state and startup behavior |
| List files and directories on device storage (accepts optional path argument) |
| Get storage capacity details (used, free, total bytes) |
| Check currently installed firmware and pending update state |
| Retrieve release notes for a specific firmware version (accepts required version argument) |
| Get automatic update configuration (enabled, window start/end) |
| Get Wi-Fi connection details (SSID, signal strength, channel, security) |
| Retrieve scanned available Wi-Fi networks in range |
Input tools
Tool | Description |
| Send a single key-press event to the device (up, down, ok, back, start, busy, custom, off, apps, settings) |
Architecture
The project follows a thin-client layering:
busybar_mcp — the package and its
mainentry point (busybar_mcp/__init__.py): loads.env, registers all tool modules on import, and callsserver.run(transport="stdio")busybar_mcp/ — modularized MCP tools organized by Busy Bar API namespace:
┌───────────────────────────────┐ MCP/stdio ┌──────────────────┐ SDK calls ┌──────────────┐
│ MCP Client │ ◄──────────────────► │ busybar_mcp │ │ Busy Bar │
│ (AI tool) │ FastMCP tools │ (pkg + entry pt) │ ◄────────────────► │ Device │
└───────────────────────────────┘ └──────────────────┘ └──────────────┘
busybar_mcp/ (package with 10 namespace modules + utils) HTTP (OpenAPI)
busybar_python_sdkbusybar_mcp/account.py— account retrieval toolsbusybar_mcp/system.py— system information toolsbusybar_mcp/time.py— time operations toolsbusybar_mcp/ble.py— BLE module toolsbusybar_mcp/input.py— input event toolsbusybar_mcp/busy.py— busy timer toolsbusybar_mcp/settings.py— device settings toolsbusybar_mcp/smarthome.py— smart home toolsbusybar_mcp/storage.py— storage management toolsbusybar_mcp/updater.py— firmware update toolsbusybar_mcp/wifi.py— Wi-Fi status toolsbusybar_mcp/utils.py— shared utilities (_serialize,_wrap_tool_error)
HTTP → Busy Bar device — the SDK communicates with the device over HTTP using the OpenAPI schema defined in
openapi.yaml
Testing
A working test suite is included with the project. The convenience runner at run_tests.py invokes pytest against the tests/ directory with sensible defaults and no-header output.
Run basic tests
python run_tests.pyRun with coverage output
COVERAGE=1 python run_tests.pyCoverage is reported via pytest-cov (--cov=busybar_mcp --cov-report=term-missing).
Test Coverage Summary
32 MCP tools tested — one parametrized happy-path test per tool across account, system info, time, BLE, busy timer, settings, smart home, storage, update, wifi, and input categories.
Per-module test files:
tests/test_account.py,tests/test_system.py,tests/test_time.py,tests/test_ble.py,tests/test_busy.py,tests/test_settings.py,tests/test_smarthome.py,tests/test_storage.py,tests/test_updater.py,tests/test_wifi.py,tests/test_input.py
Error-path tests verify behaviour when the Busy Bar device is missing or unreachable (mocked HTTP failures).
Missing environment variable tests confirm that absent
BUSYBAR_BASE_URL/BUSYBAR_API_TOKENare handled gracefully.conftest fixtures:
clear_env_vars— temporarily removesBUSYBAR_BASE_URLandBUSYBAR_API_TOKENfromos.environ(restoring originals afterward).
Serialization tests (
tests/test_serialization.py) verify_serialize()handles SDK models, dicts, lists, scalars, and edge cases correctly.
What's Next
Extend with additional write/mutation tools (display messages, notifications)
Implement MCP resources for live device data streams
Configure linting and formatting toolchain
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceThe Time MCP Server is a Model Context Protocol (MCP) server that provides AI assistants and other MCP clients with standardized tools to perform time and date-related operations. This server acts as a bridge between AI tools and a robust time-handling back12226MIT
- FlicenseAqualityCmaintenanceAn MCP server that wraps the TimePRO API, enabling AI assistants to automatically create, view, and manage timesheets for authenticated users. It provides tools for searching clients and projects, retrieving configuration defaults, and performing full CRUD operations on timesheet entries.10
- FlicenseAqualityFmaintenanceMCP server that exposes 300+ AI agents as tools via a single API key. Supports listing agents, invoking any agent with chat-completion style messages, checking agent health, and retrieving platform statistics.53
- AlicenseNot gradedqualityDmaintenanceLightweight MCP server providing system time tools (current time, date, datetime, time components, unix timestamp) for LLM applications.1MIT
Related MCP Connectors
Pocket Agent (aipocketagent.com) MCP server — read tools for personas, apps, and product info.
MCP server exposing the Backtest360 engine API as tools for AI agents.
Time MCP server via HTTP
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nuxnik/busybar-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server