Busy Bar MCP Server
MCP server that enables AI assistants to query and control a physical Busy Bar queue-management display over HTTP. Provides 13 tools for account info, system status, and time operations.
README
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 currently provides 13 tools for account retrieval, system information, and time operations, exposing its functionality through the standard Model Context Protocol so other tools and AI assistants can interact with it programmatically.
Status: 13 MCP tools are fully implemented across account retrieval, system information, and time categories, 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
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
Start the MCP server for development:
mcp dev server.py # built-in MCP development server
Or run it standalone:
uv run server.py # running the MCP server directly via uv
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 |
Architecture
The project follows a thin-client layering:
- server.py — single-file MCP server that declares tools/resources via FastMCP
- busybar_python_sdk — Python SDK (Git dependency) that encapsulates all Busy Bar API logic
- HTTP → Busy Bar device — the SDK communicates with the device over HTTP using the OpenAPI schema defined in
openapi.yaml
┌─────────────┐ MCP/stdio ┌──────────────────┐ SDK calls ┌──────────────┐
│ MCP Client │ ◄────────────────► │ server.py │ │ Busy Bar │
│ (AI tool) │ FastMCP tools │ (FastMCP binding)│ │ Device │
└─────────────┘ └──────────────────┘ ◄────────────────► └──────────────┘
│ HTTP (OpenAPI)
busybar_python_sdk
(internal lib)
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=server --cov-report=term-missing).
Test Coverage Summary
- 13 MCP tools tested — one parametrized happy-path test per tool across account, system info, and time categories.
- 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:
mock_api_client— patchesserver._make_apito return a mock client with all stubbed API methods, so no real HTTP requests are made.clear_env_vars— temporarily removesBUSYBAR_BASE_URLandBUSYBAR_API_TOKENfromos.environ(restoring originals afterward).
What's Next
- Extend with write/mutation tools (display messages, notifications)
- Implement MCP resources for live device data streams
- Configure linting and formatting toolchain
Project status: 13 MCP tools implemented across account, system info, and time endpoints.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。