Read-only BACnet/IP MCP gateway with Brick + Haystack semantic tagging at ingest
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"brick-bacnet": {
"args": [
"--config",
"/path/to/config.yaml"
],
"command": "brick-bacnet-mcp"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
A read-only BACnet/IP gateway that exposes building automation point databases to LLM agents via MCP, with Brick + Project Haystack semantic tagging at ingest time.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
uvx 'brick-bacnet-mcp' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked brick-bacnet-mcp against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in other
Pi Coding Agent extension (CLI-first) — routes bash/read/grep/find/ls through lean-ctx CLI for strong token savings. Optional MCP bridge can register advanced tools.
Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 60-95% fewer tokens, same answers. Library, proxy, MCP server.
97% token reduction for AI coding sessions — zero deps, 21 languages, MCP server
Autonomous spec-to-product coding-agent CLI with an MCP server exposing 34 tools over stdio.
MCP Security Weekly
Get CVE alerts and security updates for io.github.Yveshby27/brick-bacnet-mcp and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
A read-only BACnet/IP gateway that exposes building automation point databases to LLM agents via MCP, with Brick + Project Haystack semantic tagging at ingest time.
The research note this implementation came out of is at https://habchy.dev/research/bacnet-msi-semantic-gap. A version of the same article is also published at AutomatedBuildings.com (link will be added when the AB.com edition goes live).
Short version: vendor agentic platforms (JCI OpenBlue, Honeywell Forge, Siemens Building X, Tridium Niagara 5) keep their semantic AI layer inside their own controls portfolios. Independent MSIs running mixed-vendor 5-50 building portfolios have BACnet point databases but no clean way to expose them in semantic-tagged form to external LLM agents. This gateway is one answer to that gap.
ezhuk/bacnet-mcp does read and write at the BACnet protocol layer with no semantic normalization. This project sits beside it: it adds the Brick + Haystack tagging step at ingest and restricts the v0.1 surface to read-only for a tighter compliance footprint.
list_devices, list_objects, get_object_value, get_tagged_topologypip install brick-bacnet-mcp
Or from source:
git clone https://github.com/Yveshby27/brick-bacnet-mcp
cd brick-bacnet-mcp
pip install -e .
Python 3.11 or later required.
Create a config file config.yaml:
bacnet:
local_device_instance: 555001
broadcast_address: 192.168.1.255
polling_interval_seconds: 30
rules:
brick: src/brick_bacnet_mcp/rules/brick_rules.yaml
haystack: src/brick_bacnet_mcp/rules/haystack_rules.yaml
mcp:
transport: stdio # or "http" for a hosted MCP host
http_port: 8080 # only if transport == http
log_level: INFO
Run the MCP server:
brick-bacnet-mcp --config config.yaml
Or wire it into Claude Desktop:
{
"mcpServers": {
"brick-bacnet": {
"command": "brick-bacnet-mcp",
"args": ["--config", "/path/to/config.yaml"]
}
}
}
With the server running and the simulator active (or a real BACnet/IP network reachable), an MCP-capable LLM can run:
User: List all the air-handling units across the building.
Agent (via MCP tool): calls
get_tagged_topology(filter="brick:AHU")Agent response: Found 3 AHUs. AHU-1 has 5 child points (discharge_air_temp, return_air_temp, supply_fan_status, mixed_air_damper_position, outside_air_temp). AHU-2 ... AHU-3 ...
See examples/ for full runnable scripts.
The starte