UNPKG

@sanlim/home-assistant-switch-mcp-server

Version:
41 lines (40 loc) 2.56 kB
#!/usr/bin/env node import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { HomeAssistantApiClientService } from "./infrastructure/services/clients/HomeAssistantApiClientService.js"; import { HomeAssistantSwitchRequestService } from "./infrastructure/services/requests/HomeAssistantSwitchRequestService.js"; import { HomeAssistantStateRequestService } from "./infrastructure/services/requests/HomeAssistantStateRequestService.js"; import { HomeAssistantSwitchService } from "./application/services/HomeAssistantSwitchService.js"; import { HomeAssistantStateService } from "./application/services/HomeAssistantStateService.js"; import { HomeAssistantSwitchToolsController } from "./interface/controllers/HomeAssistantSwitchToolsController.js"; import { HomeAssistantStateToolsController } from "./interface/controllers/HomeAssistantStateToolsController.js"; const homeAssistantConfig = { baseUrl: process?.env?.HOME_ASSISTANT_URL || "", token: process?.env?.HOME_ASSISTANT_TOKEN || "", }; const homeAssistantApiClientService = new HomeAssistantApiClientService(homeAssistantConfig); const homeAssistantSwitchRequestService = new HomeAssistantSwitchRequestService(homeAssistantApiClientService); const homeAssistantStateRequestService = new HomeAssistantStateRequestService(homeAssistantApiClientService); const homeAssistantSwitchService = new HomeAssistantSwitchService(homeAssistantSwitchRequestService); const homeAssistantStateService = new HomeAssistantStateService(homeAssistantStateRequestService); async function main() { const server = new McpServer({ name: "home-assistant-switch-mcp-server", version: "1.0.0", }); const transport = new StdioServerTransport(); if (!Boolean(homeAssistantConfig?.token)) { throw new Error("Warning: HOME_ASSISTANT_TOKEN not provided. Home Assistant tools will not be available to use.\n"); } if (!Boolean(homeAssistantConfig?.baseUrl)) { throw new Error("Warning: HOME_ASSISTANT_URL not provided. Home Assistant tools will not be available to use.\n"); } new HomeAssistantSwitchToolsController(server, homeAssistantSwitchService); new HomeAssistantStateToolsController(server, homeAssistantStateService); await server.connect(transport); process.stderr.write(`MCP Server Home Assistant Switch is running on stdio`); } main().catch((error) => { process.stderr.write(`Fatal error in main():`, error); process.exit(1); });