From 6dab7eae52584cba19bde38bcfafc804ffe09e65 Mon Sep 17 00:00:00 2001 From: Snider Date: Fri, 13 Mar 2026 16:04:13 +0000 Subject: [PATCH] feat(mcp): add display subsystem skeleton Co-Authored-By: Claude Opus 4.6 --- pkg/mcp/subsystem.go | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 pkg/mcp/subsystem.go diff --git a/pkg/mcp/subsystem.go b/pkg/mcp/subsystem.go new file mode 100644 index 0000000..b567d1b --- /dev/null +++ b/pkg/mcp/subsystem.go @@ -0,0 +1,39 @@ +// pkg/mcp/subsystem.go +package mcp + +import ( + "forge.lthn.ai/core/go/pkg/core" + "github.com/modelcontextprotocol/go-sdk/mcp" +) + +// Subsystem implements the MCP Subsystem interface via structural typing. +// It registers GUI tools that translate MCP tool calls to IPC messages. +type Subsystem struct { + core *core.Core +} + +// New creates a display MCP subsystem backed by the given Core instance. +func New(c *core.Core) *Subsystem { + return &Subsystem{core: c} +} + +// Name returns the subsystem identifier. +func (s *Subsystem) Name() string { return "display" } + +// RegisterTools registers all GUI tools with the MCP server. +func (s *Subsystem) RegisterTools(server *mcp.Server) { + s.registerWebviewTools(server) + s.registerWindowTools(server) + s.registerLayoutTools(server) + s.registerScreenTools(server) + s.registerClipboardTools(server) + s.registerDialogTools(server) + s.registerNotificationTools(server) + s.registerTrayTools(server) + s.registerEnvironmentTools(server) + s.registerBrowserTools(server) + s.registerContextMenuTools(server) + s.registerKeybindingTools(server) + s.registerDockTools(server) + s.registerLifecycleTools(server) +}