Skip to main content
Glama
nuxnik

Busy Bar MCP Server

by nuxnik

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 sync

This 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

BUSYBAR_API_TOKEN

API auth token for authenticating with the Busy Bar device

my-super-secret-token

BUSYBAR_BASE_URL

IP address or hostname of the Busy Bar device (no protocol prefix)

10.0.4.20

BUSYBAR_API_TOKEN=my-super-secret-token
BUSYBAR_BASE_URL=10.0.4.20

It 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-mcp

python -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

get_account_info

Retrieve linked account information (email, account ID) from the Busy Bar device

get_account_status

Check MQTT connection state for the linked account

get_account_backend

Inspect MQTT backend configuration (server URL, certificate settings)

System tools

Tool

Description

get_api_version

Query the API version supported by the device

get_transport

Get the current network transport type (USB or Wi-Fi)

get_device_status

Comprehensive health check: device, firmware, system, and power state

get_device_info

Retrieve hardware identifiers and manufacturing details

get_firmware_info

Get firmware version and build metadata

get_system_status

Runtime system metrics (uptime, API SemVer, auto-update settings)

get_power_status

Battery charge level, voltage, current, and charging state

Time tools

Tool

Description

get_time

Retrieve the device's real-time clock timestamp in ISO 8601 format

get_timezone

Get the currently configured timezone (name, offset, abbreviation)

get_tzlist

List all supported timezones available for configuration

Device Status & Configuration

Tool

Description

get_ble_status

Retrieve BLE module status (powered state, MAC address)

enable_ble

Enable the BLE module and start advertising

disable_ble

Disable the BLE module and stop advertising

remove_ble_pairing

Remove the current BLE pairing so the device becomes discoverable again

get_busy_snapshot

Get the current BUSY timer state including profile and timing details

get_http_access

Inspect HTTP API key management mode and validity

get_device_name

Get the human-readable device name

get_display_brightness

Retrieve the current display brightness level

get_audio_volume

Retrieve the current audio volume level

get_smart_home_pairing_status

Query Matter fabric count and latest commissioning outcome

get_smart_home_switch_state

Read smart home relay/output state and startup behavior

list_storage_files

List files and directories on device storage (accepts optional path argument)

get_storage_status

Get storage capacity details (used, free, total bytes)

get_firmware_update_status

Check currently installed firmware and pending update state

get_update_changelog

Retrieve release notes for a specific firmware version (accepts required version argument)

get_autoupdate_settings

Get automatic update configuration (enabled, window start/end)

get_wifi_status

Get Wi-Fi connection details (SSID, signal strength, channel, security)

get_wifi_networks

Retrieve scanned available Wi-Fi networks in range

Input tools

Tool

Description

send_input_key

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:

  1. busybar_mcp — the package and its main entry point (busybar_mcp/__init__.py): loads .env, registers all tool modules on import, and calls server.run(transport="stdio")

  2. 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_sdk
  • busybar_mcp/account.py — account retrieval tools

  • busybar_mcp/system.py — system information tools

  • busybar_mcp/time.py — time operations tools

  • busybar_mcp/ble.py — BLE module tools

  • busybar_mcp/input.py — input event tools

  • busybar_mcp/busy.py — busy timer tools

  • busybar_mcp/settings.py — device settings tools

  • busybar_mcp/smarthome.py — smart home tools

  • busybar_mcp/storage.py — storage management tools

  • busybar_mcp/updater.py — firmware update tools

  • busybar_mcp/wifi.py — Wi-Fi status tools

  • busybar_mcp/utils.py — shared utilities (_serialize, _wrap_tool_error)

  1. 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.py

Run with coverage output

COVERAGE=1 python run_tests.py

Coverage 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_TOKEN are handled gracefully.

  • conftest fixtures:

    • clear_env_vars — temporarily removes BUSYBAR_BASE_URL and BUSYBAR_API_TOKEN from os.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

A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    C
    maintenance
    The 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 back
    122
    26
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    An 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
  • F
    license
    A
    quality
    F
    maintenance
    MCP 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.
    5
    3
  • A
    license
    Not graded
    quality
    D
    maintenance
    Lightweight MCP server providing system time tools (current time, date, datetime, time components, unix timestamp) for LLM applications.
    1
    MIT

View all related MCP servers

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

View all MCP Connectors

Latest Blog Posts

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