Skip to main content
Glama

HomeAssistant MCP

test-comprehensive.tsโ€ข5.06 kB
#!/usr/bin/env bun /** * Comprehensive Live Test of All Home Assistant MCP Tools */ import { tools } from './src/tools/index.js'; console.log(` โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•— โ•‘ โ•‘ โ•‘ ๐Ÿ  HOME ASSISTANT MCP - COMPREHENSIVE TOOLS AUDIT โ•‘ โ•‘ โ•‘ โ•‘ Demonstrating all available Model Context Protocol tools โ•‘ โ•‘ โ•‘ โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• `); // Display all tools console.log('\n๐Ÿ“‹ TOOL INVENTORY\n'); console.log(`Total Tools Available: ${tools.length}\n`); tools.forEach((tool, idx) => { const params = tool.parameters; console.log(`${idx + 1}. Tool: ${tool.name}`); console.log(` Description: ${tool.description}`); // Try to extract parameter info if (params instanceof Object && 'shape' in params) { const shape = params.shape as Record<string, unknown>; const paramKeys = Object.keys(shape); console.log(` Parameters: ${paramKeys.join(', ') || 'none'}`); } else if (params instanceof Object && '_def' in params) { console.log(` Parameters: [Zod Schema]`); } console.log(); }); // Tool categories console.log('\n๐Ÿ—‚๏ธ TOOL CATEGORIES\n'); const categories: Record<string, string[]> = { 'Device Control': ['list_devices', 'control'], 'Lighting': ['lights'], 'Climate': ['climate_control'], 'Scenes': ['scene'], 'Automation': ['automation', 'automation_config'], 'System': ['addon', 'package', 'subscribe_events', 'get_sse_stats'], 'Notifications': ['notify'], 'History': ['get_history'], }; for (const [category, toolNames] of Object.entries(categories)) { const available = tools.filter(t => toolNames.includes(t.name)); if (available.length > 0) { console.log(`${category}:`); available.forEach(tool => { console.log(` โœ“ ${tool.name}`); }); console.log(); } } // Tool capabilities matrix console.log('\n๐ŸŽฏ TOOL CAPABILITIES SUMMARY\n'); interface ToolCapabilities { name: string; capabilities: string[]; } const capabilities: ToolCapabilities[] = [ { name: 'list_devices', capabilities: ['List all entities', 'Filter by domain', 'Filter by area', 'Filter by floor', 'Get device statistics'] }, { name: 'control', capabilities: ['Turn devices on/off', 'Toggle state', 'Set brightness', 'Set color/RGB', 'Set temperature', 'Set HVAC mode', 'Set position'] }, { name: 'lights', capabilities: ['List lights', 'Get light state', 'Turn lights on/off'] }, { name: 'climate_control', capabilities: ['List climate devices', 'Get device state', 'Set temperature', 'Set HVAC mode', 'Set fan mode'] }, { name: 'scene', capabilities: ['List scenes', 'Activate scenes'] }, { name: 'automation', capabilities: ['List automations', 'Toggle automations', 'Trigger automations'] }, { name: 'automation_config', capabilities: ['Create automations', 'Update automations', 'Delete automations', 'Duplicate automations'] }, { name: 'addon', capabilities: ['List add-ons', 'Get add-on info', 'Install add-ons', 'Uninstall add-ons', 'Start/Stop add-ons'] }, { name: 'package', capabilities: ['List packages', 'Install packages', 'Uninstall packages', 'Update packages'] }, { name: 'notify', capabilities: ['Send notifications', 'Add title/data', 'Target specific services'] }, { name: 'get_history', capabilities: ['Get entity history', 'Specify time range', 'Minimal response mode'] }, { name: 'subscribe_events', capabilities: ['Subscribe to events', 'Monitor state changes', 'Filter by entity/domain', 'SSE streaming'] }, { name: 'get_sse_stats', capabilities: ['Get connection statistics', 'Monitor SSE performance'] }, ]; capabilities.forEach(tool => { const exists = tools.some(t => t.name === tool.name); const icon = exists ? 'โœ…' : 'โš ๏ธ'; console.log(`${icon} ${tool.name}`); console.log(` Capabilities:`); tool.capabilities.forEach(cap => { console.log(` โ€ข ${cap}`); }); console.log(); }); // Print statistics console.log('\n๐Ÿ“Š STATISTICS\n'); console.log(`Total Tools: ${tools.length}`); console.log(`Total Capabilities: ${capabilities.reduce((sum, t) => sum + t.capabilities.length, 0)}`); console.log(`Average Capabilities per Tool: ${(capabilities.reduce((sum, t) => sum + t.capabilities.length, 0) / tools.length).toFixed(1)}`); console.log('\nโœจ Audit complete!\n');

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jango-blockchained/advanced-homeassistant-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server