@sanlim/home-assistant-switch-mcp-server
Version:
A MCP server for Home Assistant switch services.
41 lines (40 loc) • 2.56 kB
JavaScript
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);
});