Files
kicad-mcp-server/src/tools/ui.ts
2026-05-23 23:08:23 +02:00

72 lines
1.9 KiB
TypeScript

/**
* UI/Process management tools for KiCAD MCP server
*/
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
import { logger } from "../logger.js";
export function registerUITools(server: McpServer, callKicadScript: Function) {
// Get MCP/KiCAD backend and loaded file state
server.tool(
"get_backend_state",
"Return the active backend, realtime status, loaded project/board paths, and dirty state.",
{},
async () => {
logger.info("Getting KiCAD backend state");
const result = await callKicadScript("get_backend_state", {});
return {
content: [
{
type: "text",
text: JSON.stringify(result, null, 2),
},
],
};
},
);
// Check if KiCAD UI is running
server.tool("check_kicad_ui", "Check if KiCAD UI is currently running", {}, async () => {
logger.info("Checking KiCAD UI status");
const result = await callKicadScript("check_kicad_ui", {});
return {
content: [
{
type: "text",
text: JSON.stringify(result, null, 2),
},
],
};
});
// Launch KiCAD UI
server.tool(
"launch_kicad_ui",
"Launch KiCAD UI, optionally with a project file",
{
projectPath: z.string().optional().describe("Optional path to .kicad_pcb file to open"),
autoLaunch: z
.boolean()
.optional()
.describe("Whether to launch KiCAD if not running (default: true)"),
},
async (args: { projectPath?: string; autoLaunch?: boolean }) => {
logger.info(
`Launching KiCAD UI${args.projectPath ? " with project: " + args.projectPath : ""}`,
);
const result = await callKicadScript("launch_kicad_ui", args);
return {
content: [
{
type: "text",
text: JSON.stringify(result, null, 2),
},
],
};
},
);
logger.info("UI management tools registered");
}