AdaMCP exposes a live AdaEngine application as an MCP server. It is built for inspection-first workflows: world/entity/resource introspection, render capture, and AdaUI tree inspection with a small set of safe UI actions.
📚 Check documentation to learn more
The important distinction is:
- MCP clients can live anywhere and connect over HTTP or stdio.
- The host runtime now builds on the broader Apple surface, while
stdioremains primarily a local host transport and HTTP is the main cross-device option.
- 😳 World, entity, component, resource, and asset inspection.
- 📸 Screenshot capture for live render output.
- 💉 AdaUI inspection tools such as
ui.list_windows,ui.get_tree,ui.get_node,ui.find_nodes, andui.hit_test. - 🧑🏫 AdaUI diagnostics and safe actions such as focus traversal, deterministic tap, and scroll-to-node.
- 📦 MCP resources under
ada://..., includingada://ui/windows,ada://ui/window/{id},ada://ui/tree/{id}, andada://ui/node/{windowId}/{nodeRef}.
Until the package is published, add it as a local SwiftPM dependency:
dependencies: [
.package(url: "https://github.com/AdaEngine/AdaMCP.git", branch: "main")
]Then add the plugin to your app:
import AdaEngine
import AdaMCPPlugin
@main
struct ExampleApp: App {
var body: some AppScene {
WindowGroup {
RootView()
}
.addPlugins(
MCPPlugin(configuration: .init(
enableHTTP: true,
enableStdio: true,
host: "127.0.0.1",
port: 2510,
endpoint: "/mcp",
serverName: "example-app",
serverVersion: "0.1.0",
instructions: "Inspect the live AdaEngine runtime."
))
)
}
}AdaUI support is intentionally inspection-first. The main flow is:
- Locate windows or nodes.
- Inspect the live tree and layout diagnostics.
- Apply a limited, deterministic action.
- Re-read the tree or diagnostics to verify the result.
External callers should target nodes by accessibilityIdentifier. runtimeId is returned in payloads as a session-local helper, but it is not intended to be a durable contract.