Sedona MCP Server
Multi-Protocol Unified Access to Sedona, Sandstar, and SkySpark
One MCP server, four building-automation protocols, zero glue code.
Sedona MCP Server speaks Sedona Sox over binary TCP on port 1876, Sedona Weblet over HTTP on 8085, Sandstar's Project Haystack bridge, and SkySpark over HTTPS -- all behind a unified MCP tool surface. Ask it to search Sedona classes, generate component code, or execute live Axon against a running SkySpark project, and the protocol-routing layer figures out which transport to dial.
Offline, it indexes 27+ tools of Sedona examples, kits, classes, patterns, and templates with FlexSearch. Online, it reaches into real buildings.
Why It Exists
A modern controls stack is not one protocol -- it is four, sometimes five. Engineers juggle separate tools for each, losing context every time they switch. Sedona MCP Server collapses that into one conversation: the assistant asks executeAxonCode and the server handles the HTTPS plus SCRAM handshake to SkySpark; it asks searchSedonaClasses and the server hits the local index; it asks getActiveConnection and the server reports which device is currently bound.
Who It's For
- Controls engineers working across Sedona devices and SkySpark projects on the same job
- Sandstar developers bridging Haystack tags to Sedona hardware
- AI-assisted integrators who want one MCP server, not four
Protocol Switchboard
Four protocols, one MCP tool call
One config file defines your Sox devices, Weblet servers, Sandstar bridges, and SkySpark instances. Any tool call routes to the right transport -- binary TCP, HTTP, HTTPS -- without a single line of glue code.
Tool Surface
Six domains, one interface
Search, generate, validate, analyze, execute, connect. Twenty-seven-plus tools organized by the operation you are performing -- not the protocol you are hitting.
The assistant does not need to know the wire format. It picks the tool for the task. The router dials the right destination.
Live Connections
Four rails, one dashboard
Every connection is tracked independently. getActiveConnection reports which protocol was last used. discoverInstanceProjects walks whatever is reachable. clearProjectCache resets when something drifts.
The config file is the single source of truth. Add a new SkySpark instance, add a new Sedona device, change a port -- the router re-reads on next tool call.
SkySpark Execution
From the catalog to the building
executeAxonCode runs arbitrary Axon against the currently-bound SkySpark project. listSkySparkProjects and switchSkySparkProject let you roam across instances. discoverProjectFunctions introspects; getProjectSchema returns the data model.
Project state persists. Switch once, and the next 50 tool calls go to the same building. Switch back, and the cache was ready.
| dis | zone | val | ts |
|---|---|---|---|
| Zone 101 | core-1 | 72.3°F | 10:12 |
| Zone 102 | core-1 | 74.1°F | 10:12 |
| Zone 103 | core-1 | 71.8°F | 10:12 |
| Zone 201 | core-2 | 73.4°F | 10:12 |
| Zone 202 | core-2 | 72.9°F | 10:12 |
Sedona Devices
First-class introspection on the binary rail
listSedonaKits walks the device manifest. getActiveConnection reports the bound host. discoverInstanceProjects auto-pairs discovered devices with their project context. Sox is treated as a peer of HTTP, not a legacy transport.
Binary does not mean opaque. Every class, every kit, every firmware version is visible to the assistant -- and searchable.
Tech Stack
Architecture
Capabilities
- 27+ MCP tools -- organized by concern: Sedona search, code generation, function analysis, SkySpark / Axon execution, device / connection management, Haystack queries
- Multi-protocol routing -- Sedona Sox (binary TCP 1876), Sedona Weblet (HTTP 8085), Sandstar Haystack bridge, SkySpark HTTPS 443 with SCRAM auth
- FlexSearch-indexed -- Sedona examples, operator examples, docs, classes, kits, templates, and patterns for offline queries
- Code generation and validation --
generateSedonaCodeandvalidateSedonaCodewith kit-aware templates - Bidirectional call-graph and usage analysis -- across a Sedona codebase
- Live SkySpark and Axon execution -- with project-switching and per-instance project caching
- YAML and JSON config --
config/connections.jsonfor declarative connection definitions per protocol
Milestone v2.0.0
Expansion from Axon-only (v1.x) to a multi-protocol unified server: Sedona Sox plus Weblet plus Sandstar plus SkySpark.
Requirements
- Node.js 18+
config/connections.jsonpopulated for each protocol you use- Network reachability to Sox devices (TCP 1876), Weblet / Sandstar (HTTP 8085), and / or SkySpark (HTTPS 443)
Interested in this project?
Explore the source code, contribute, or get in touch.