{"_id":"@coffeerunhobby/mcp-ha-connect","_rev":"28-71f24b2d54e642081a5da0e2296872ed","name":"@coffeerunhobby/mcp-ha-connect","dist-tags":{"latest":"2.0.0"},"versions":{"0.5.0":{"name":"@coffeerunhobby/mcp-ha-connect","version":"0.5.0","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@0.5.0","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"8f02bbb9a1693c6559982a162672da2d22c54354","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-0.5.0.tgz","fileCount":294,"integrity":"sha512-GlXEmOk1khNu4cCZ4e37wp8BHKEZz/kwQOmv9N93WaBL4gj2/qNP1QO5s1rKLmkKiWX3fWh+c6i/zx/WGlF2vQ==","signatures":[{"sig":"MEQCIHSdKc3TQU/eHCTXEpHaDbxAJRmo7a8bOI6haVCkbU1qAiAXXdhIxv8E4Y78KeXvMfGDi1js4v8BT9nplHydly57rA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":954445},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"3ef230224d161942dee3c377c4e438be50375634","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color","build":"tsc","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage --no-color"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"11.6.2","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.19.0","zod":"^3.24.1","pino":"^9.5.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^2.1.8","@types/ws":"^8.18.1","typescript":"^5.7.2","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^2.1.8","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_0.5.0_1768060395624_0.7365884512781662","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@coffeerunhobby/mcp-ha-connect","version":"0.6.0","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@0.6.0","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"c6fde9d484872c5b9a7d221d68db4a0afeb188b3","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-0.6.0.tgz","fileCount":298,"integrity":"sha512-ACw8IxgARJeL+W5oHWvJQFHOqbEUYVFqlVwPDZoxGJiOut7RMvQH7qb/Owxt7ajvbYFMIIGbhLsw4YBEF/9c3g==","signatures":[{"sig":"MEUCIGNy7TgqjbaFWnPgi+//cf5JykgQfd/6syrb7AbtNLRJAiEA6DxfLR4siy0ehFLSsz7b5uOgQ0Eab+fDlqJ1lTt6GVw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":814762},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"4aaa4c0b9139c5b1cdc86f40a81b73e6e1d34557","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color","test:coverage":"vitest run --coverage --no-color"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"10.8.2","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^3.24.1","pino":"^9.5.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^2.1.8","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^2.1.8","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_0.6.0_1768095366058_0.1548700576786577","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@coffeerunhobby/mcp-ha-connect","version":"0.7.0","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@0.7.0","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"7a9f734fe52664c6a0a9e7d8c30273538bff6634","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-0.7.0.tgz","fileCount":368,"integrity":"sha512-Pe3k1jpzpIEY+1TOUkUr/fYnA3k9vyKjJuz5WukL3KSK4HIW/cvBj/JJug8lhHRtq61C0zY2VbQHDe09/VEGng==","signatures":[{"sig":"MEUCIQDJ1ixAegfy4Ve4+r2bjI5TNEcvZF7yWZj961mmiOQMEwIgBKtNymZrSEkHVuIM1mcMEIDIK1efodjxs14WKZ76OWY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1022598},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"67b0d59244d0ac675310213afd6ec72c0483f414","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color","test:coverage":"vitest run --coverage --no-color"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"10.8.2","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^3.24.1","pino":"^9.5.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_0.7.0_1768137993614_0.207051235575187","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@coffeerunhobby/mcp-ha-connect","version":"0.8.0","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@0.8.0","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"33ab174b948f0fae593ce28f8a8df8673c494afe","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-0.8.0.tgz","fileCount":380,"integrity":"sha512-pvbg8HdxkSjlTiUksTj7htyu62jXZDj5APr/gzupXaoyPtz48NnH2ThFwo4HUUCvI+H4QDtmhpSsurzFGn+tWQ==","signatures":[{"sig":"MEQCIHRP90SRrADPaqqi0bNRVI8QcKLjaKl4ouna6jaOm+FsAiARaZHtR+BwVHfzkl6zBIxg3CN/oHIU4CIbMmzLV5Xi9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1059217},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"e04448d83b2616bff248a86d5f630455f5fd1fe6","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color","test:coverage":"vitest run --coverage --no-color"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"10.8.2","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"20.19.0","dependencies":{"ws":"^8.19.0","zod":"^3.24.1","pino":"^9.5.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_0.8.0_1768256202178_0.65903939562146","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@coffeerunhobby/mcp-ha-connect","version":"0.9.0","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@0.9.0","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"895363ccff1daf692af15a0667fa3f7d8d8227df","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-0.9.0.tgz","fileCount":394,"integrity":"sha512-wxZj7aFsxODxpKcF5qaivXJupv07Mdp1sWV4eq3eQXCq2gn+VoRWzDDZ1nOI1BGvsXvYwBOelDEuH5nqFlD2sA==","signatures":[{"sig":"MEQCIQCzm630DuxFNqrQvU0pMT2tSENiYcsdN2ZKiMGg9fTvrQIfa3g1Iat5AMC5gu+kHabZIAtx5PDepYvMCfGOyvkkuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1085821},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"855a06ad44f6601db11cdd98dc3fd75a5e875830","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color","test:coverage":"vitest run --coverage --no-color"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"11.6.2","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.19.0","zod":"^3.24.1","pino":"^9.5.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_0.9.0_1768302142965_0.2565741652212348","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.0.0","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.0.0","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"929498738a2e38101458d9d0d7d9e0f29943b5c2","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.0.0.tgz","fileCount":823,"integrity":"sha512-UpH8GsXcMBYPmnZzd2OUNzoUh8J7QhMLdOPK7ERk0reK7ENNee9s8ew3tYbFs5pBlbe7xpL26RljMnjXzKEMLQ==","signatures":[{"sig":"MEYCIQCrY+ryeIUbJlvY1Iy7aOL965Q7/VrI9hhDXA4r0nDnFgIhAITvElH0BjN/f+8XjBY4NvjPA+sRW16Gq9UJPQV+M+ii","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1906080},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"8d2e05797d06b14528ae6b8a05b531ef03745e7c","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"11.6.2","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.19.0","zod":"^3.24.1","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.0.0_1768689618194_0.20656644862171958","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.1.0","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.1.0","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"bdc24b5707c0ef6e8507d91976fd1bf99a92f034","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.1.0.tgz","fileCount":600,"integrity":"sha512-yU/stdRx5jsYvp0AVZVDJqhje64ZaUf80ex5BHuFHapcf8YOREH4Ts//dqkjwauhzVOSm2n99q1fH2X9OwWCGw==","signatures":[{"sig":"MEUCIQDEHW1XaVHYuKgDo0g5C6vbXGmhaQsNjwPKPMEEZnxI9gIgSfFi0PLo0Yc5pSKZuPbYEPS8+AwT97a+DU41IU+HT3I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1467782},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"1c12296f60d76077949cc804dc9eb8e3548ae30b","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"11.13.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ws":"^8.19.0","zod":"^3.24.1","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.1.0_1780848587434_0.9803861623339674","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.2.0","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.2.0","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"ee104c5ffc44e44aeaee07c697a709b5fdcdc39a","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.2.0.tgz","fileCount":613,"integrity":"sha512-1BPatbxaYgYdGQw3z64zy9Y52f2v4m8NpmniNLXzR5MTiL6EcQs2mwoKLXPgzrn/tt2oqZrGuBFVnyVpe6aO8Q==","signatures":[{"sig":"MEUCIQC3oSQRcm17lD7nj4vnjB4snVWsZvIjtL/rds6djFlt+wIgfBOkJiLwk1U/Ccu17DEwU7jwQnY0cAiZ2h9uelFl3Mc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1496175},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"5ae9bcb81c0e1961b00b58dbf0373b92aca3d726","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"11.13.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ws":"^8.19.0","zod":"^3.24.1","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.2.0_1780852143881_0.19853161538079944","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.3.0","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.3.0","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"c11fbebdf178af20aa1f9f52dc72144b0ab5970d","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.3.0.tgz","fileCount":630,"integrity":"sha512-Lv8esZPj4C6JqN9kvYQ8Eib4VVC6zE83fDIzRcEEqVkiOY4VsdAfJAUqYfC5wsRBYgNLZgEhPv4i5TR1NlTktw==","signatures":[{"sig":"MEQCICwNcOwkGU0DlpIdxGwbMMCnKFlXeH1wY4TVKB1d8SE2AiAigo5roMGWMiElLpwvtimQgQJbAK2+NZkiCRFNND4wPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1617064},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"f9f2bc91708155a65be96469dc8290d1fd4627b4","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"11.13.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.3.0_1780858772237_0.38622020949437896","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.3.1","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.3.1","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"92581a0be2a62ab6322cec360e5da1abbefd5c44","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.3.1.tgz","fileCount":630,"integrity":"sha512-izfJ0UnymkKWtI4gepFr2Nl2jxD0YEA56H1eNygANkpN5KfusXuHVo8P4hNue9jKslXlioNsQNVQFwLYe7QhVA==","signatures":[{"sig":"MEQCIGrechj6cEQLF7biQUbXWeB+KVsXbFM7HYlm6M1i1RFVAiA7hITaH+/obEubMuctKiwcUMT/MDKHc1NicSaxwPaq9g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1619338},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"24c4da6adc62f90df06d8e65967e17c226e04c35","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"11.13.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.3.1_1780859488877_0.6030702503549994","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.3.4","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.3.4","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"d65aca3a7716a15e484d36b6c6dcbf06238a1221","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.3.4.tgz","fileCount":641,"integrity":"sha512-4lk24iAGheLlm9IF9byaQqbeTn+LAmK6q4Xl4ugLpuSDwoyP8FXIap8TM5fg+rk1FoXMFd4h6QXRqJIhsSq6NQ==","signatures":[{"sig":"MEUCIQDeDzRwygBiGqF1ufbBFVuuCtIUPlzuWfBNprNcga9LiAIgLqDFThMeTpqaD9qOOrSKKG48lXokEUwb5beAKqDAGY8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1765218},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"720d6904d7810f5a2c8f332e7ea2aab79505c719","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"11.13.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.3.4_1780894535263_0.6252481797558986","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.4.0","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.4.0","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"95af6b36318285b40a7cc684f1dff352e1d794d2","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.4.0.tgz","fileCount":641,"integrity":"sha512-0WgrfHT4/9RPqbXQFc4CotmZhaqPQ+9W1zN3IW6Hn401uIkRgWGUphaD6bFURpnEcud13SQzhGhxHNxurAU63w==","signatures":[{"sig":"MEUCIQDENrrfYYZ93TijNXpqMFvlx16HFDsKRgVNhCSgwfvrYwIgdOyx4gYlmjp/qoMInE5PgKW/T/rzCXWHgvMrrYKqInY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1806734},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"3443dab4d977c42b90aeafcc72e7c64a8ce622c0","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"11.13.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.4.0_1780896063565_0.33522766722748365","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.5.0","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.5.0","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"ce6f0c782ca8149450601b7fbc6670ecdd345af2","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.5.0.tgz","fileCount":643,"integrity":"sha512-gdd4bTUmyg+4LVojW/JoEW5bR/Z5gzudI7z80UZJfrQ2RIj1cAOKm4hM04fwxflm+VNzOOVzrbASbvnwrl4LuA==","signatures":[{"sig":"MEMCH28NQ9sA+BVsM6A+HelmI4ST5UqgRStgVFRSFsGPokECIG+jROshywwVLdcb5PpQC2oI3FJ95EfNgDuaroX5d0p1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1843378},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"388efa0fa10bd9a6f5c4bf12455eeb125a06076f","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","check:sync":"node scripts/check-version-sync.mjs","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"11.13.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.5.0_1780901205201_0.4430179785558839","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.5.1","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.5.1","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"9f71977f2dd68bb605891b28c22decc72927655e","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.5.1.tgz","fileCount":642,"integrity":"sha512-K4ZseCbvd45k5JWc27z+dep2iL5z3afkz5wAEFZZ9apUG4rI6ZvZ9X2OeSF/uotHboJGgHqT/jwz8XUo13mo5w==","signatures":[{"sig":"MEYCIQDg9s0nPAQhoPUYQ7UGxMBDjrXk43kSdtkEAm3snhBdVgIhANwNJ5SWw9MxwZpci3eTijwUI4nlFpY6ZsUsXjW31c3B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1831294},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"7c6056341f0477989c4b5981ef32c125113a0f08","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","check:sync":"node scripts/check-version-sync.mjs","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"11.13.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.5.1_1781009581210_0.32546180607319664","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.5.2","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.5.2","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"2b24dc86362bedc48193e7785f540c89ef94af80","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.5.2.tgz","fileCount":642,"integrity":"sha512-xpkDkJq8XsmrmNccITk/5Fj1r8fl/BKSnzdjv3WbzVSdFn3bT1vRDjDKHaDt3X3307woFTkdUYxFlxU90/4mnA==","signatures":[{"sig":"MEUCIQDlgWQdtf1fQUk8Yt1C2mLhhZJW7Laba3nf1DjKIS1GbAIgF9Z9KAmt7G8GyUbQZt9uB1sSJVb2PUGGH5DotSyM1co=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1839869},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"27ad3a38c3808f48312d63cf530f9ba9c50ecbbe","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","check:sync":"node scripts/check-version-sync.mjs","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"11.13.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.5.2_1781010956777_0.45952311518955313","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.5.3","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.5.3","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"c5306b1f4de5bfc555c5e7bb9c14edae36f6a8bf","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.5.3.tgz","fileCount":642,"integrity":"sha512-w44Cuki9Vc+0a11uKKSpFgfIhFVki0n7jRV3W/1FaaVmsV+303v/waHAbeD9ptz4a2iDj81DkGjkHMfJTaDdrQ==","signatures":[{"sig":"MEYCIQCss+vN4UZpTEAECd40BFBRvnZxGK44FNgsuDRNFX4bEgIhALhwecOk7PmYIiJ1utPTUtH584xi9T6a+p64sq11ETmT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1841375},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"89cbb1ab4e9cd6492c725542b7ef52bc85bde2f2","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","check:sync":"node scripts/check-version-sync.mjs","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"11.13.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.5.3_1781011562056_0.630944816582435","host":"s3://npm-registry-packages-npm-production"}},"1.5.4":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.5.4","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.5.4","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"7c233663178dff4748eae5ec6c7971493d9d9584","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.5.4.tgz","fileCount":643,"integrity":"sha512-4ekkTc1/8Ka45QIdH7wzqJndfmYVrp2g8UJV63ifhi5vHpDQU8fefGLrOMo/g/QQqwvTTnRGVEnyaqx5kLUymQ==","signatures":[{"sig":"MEYCIQD/fcQKI8UMTzKylf40HolGLVEkoOLzU8aHX1aMUyKL0QIhAOnwaa+5Ag8PbOz4bQdVMxhJ/tVCbMYR5QMZvCMTdA+H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1862585},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"386a859264b9686d77a8ee1d2531428b9470a62d","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","check:sync":"node scripts/check-version-sync.mjs","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"11.6.2","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.5.4_1781455667188_0.3809579709838875","host":"s3://npm-registry-packages-npm-production"}},"1.5.5":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.5.5","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.5.5","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"d8f1a0ead763072e66dc63681dbe1183cf0ccd7c","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.5.5.tgz","fileCount":643,"integrity":"sha512-LiLySghmvWTGQdmHdqdhDBNblcHiNCJHDjKaxERraolkm99nXZ2MZWY3SACWdwbmkzcsfep2Vqmw0cxcwFboSw==","signatures":[{"sig":"MEUCIBuAkSNfS2yaRce+4sZU1IJiYYqGG0/tKrQpRyZXwPwjAiEAn7SHC0X17LKIm9yb/1A9subjKVvmVpraQMsarCHRzNU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1862903},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"b9d85085fdc449a0d210aa93a13f1ecb1917cf82","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","check:sync":"node scripts/check-version-sync.mjs","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"11.13.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"26.2.0","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.5.5_1783701954847_0.3398940565609341","host":"s3://npm-registry-packages-npm-production"}},"1.5.6":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.5.6","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.5.6","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"fab4ac0831feb665f5045aa8e8ed3c6ae8f7d495","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.5.6.tgz","fileCount":643,"integrity":"sha512-uqAYR5Qr52TjfZUUGIVIZ2/dMylCDbRdRKlE+FdxbRQWaqKygqC6mhxKtCsRVowzJmClA1vWb9KKrrgOBXEAhA==","signatures":[{"sig":"MEYCIQCfWNY3Z6AULkNcFK7fkQ66crhUPLtRESEuA1uyyTTOywIhAI4iu2uSy3b6Vc1LOr5Xx+PK9RxSW9uJsjEsGfkXdH/2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1866536},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"711db6209f152d89e44d77d99b6d657a75b79581","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","check:sync":"node scripts/check-version-sync.mjs","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"},"_npmVersion":"11.6.2","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.5.6_1783708795338_0.3588442824076947","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.6.0","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.6.0","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"homepage":"https://github.com/coffeerunhobby/mcp-ha-connect#readme","bugs":{"url":"https://github.com/coffeerunhobby/mcp-ha-connect/issues"},"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"3f16e3763361d366e73f7fba29dbe265210ddf53","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.6.0.tgz","fileCount":660,"integrity":"sha512-djnzTt+9ZYHjfpcO3A1VF0NCJfdstXUuMJJPf6dyi1o2JyNLixmjTBV6jPtOcqo6ByyhQ3XV1WuUtFrxPtQ5Mw==","signatures":[{"sig":"MEYCIQCke72dPSXw55saRAb8ybiZSjfpfnwvn0XLiUjRaneKdwIhAIctLM38T7xXZi/YgN3ujavUVdKEYYi9ngpcwTTe4I1J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeerunhobby%2fmcp-ha-connect@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1923704},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"820f95a8e9b634cc8b3ba2b3f6ea3e20144e73f2","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","check:sync":"node scripts/check-version-sync.mjs","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e0be1108-0805-49be-af7e-27d33e1b0879"}},"repository":{"url":"git+https://github.com/coffeerunhobby/mcp-ha-connect.git","type":"git"},"_npmVersion":"11.16.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.6.0_1783711993442_0.0602541907526668","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.7.0","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.7.0","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"homepage":"https://github.com/coffeerunhobby/mcp-ha-connect#readme","bugs":{"url":"https://github.com/coffeerunhobby/mcp-ha-connect/issues"},"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"1dd01b26b29fd1dbd16c70b4ca66d5bff75a884d","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.7.0.tgz","fileCount":670,"integrity":"sha512-Uj+xqlrgl/0kEY3li3qHB2taS+iqiC8YOTzAgKzrM6gv9y2GaM21cjPA249dci6qD96li/3LaNLbdpyyiJGRZg==","signatures":[{"sig":"MEUCIBUDPlo/PZAgU9y3+VTfC8QL5idnKJchWL9YQtLcx9NWAiEA7H6SQFc8liLimK/BMMwdvx8EpEJ+aEQsSiNN78UB608=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeerunhobby%2fmcp-ha-connect@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2019774},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"352020981a8b1e637d8072193336207a912467cf","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","check:sync":"node scripts/check-version-sync.mjs","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e0be1108-0805-49be-af7e-27d33e1b0879"}},"repository":{"url":"git+https://github.com/coffeerunhobby/mcp-ha-connect.git","type":"git"},"_npmVersion":"11.16.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.7.0_1783752690445_0.4611064217284113","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.7.1","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.7.1","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"homepage":"https://github.com/coffeerunhobby/mcp-ha-connect#readme","bugs":{"url":"https://github.com/coffeerunhobby/mcp-ha-connect/issues"},"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"02e25c2c3500c872be171fead54aafd169364391","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.7.1.tgz","fileCount":670,"integrity":"sha512-ez5L0YeLNUrDUrw8j+v9zocdhImkJPX1aGq0OkHq2CesK+pIn50QWmfCwmyUYORmhOtHKx3IduvGSYX9SqmBxw==","signatures":[{"sig":"MEQCICl16Jxrn7sGHUTkc5dxAS420QBp1pEYdganWAH3oHXaAiBK8qVz7HlFmtkx6iZchl9/0534ye1wjBcJdrnHFTJ9nw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeerunhobby%2fmcp-ha-connect@1.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2029867},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"dec253b86a98f7e2ddca5f00d505e802ed35e2f2","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","check:sync":"node scripts/check-version-sync.mjs","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e0be1108-0805-49be-af7e-27d33e1b0879"}},"repository":{"url":"git+https://github.com/coffeerunhobby/mcp-ha-connect.git","type":"git"},"_npmVersion":"11.16.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.7.1_1783754011226_0.2642782954764378","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.7.2","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.7.2","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"homepage":"https://github.com/coffeerunhobby/mcp-ha-connect#readme","bugs":{"url":"https://github.com/coffeerunhobby/mcp-ha-connect/issues"},"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"ae8f1566df4b33b3c2df7eb2871b2212f9af5eac","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.7.2.tgz","fileCount":670,"integrity":"sha512-PpMc8tyFvh2BbX4qt6Vq0IZBeu32Gl1PH524YkYz/09yLuqsQlVI7xSV2rQeyS+/NGijIp9zzin7LXkK8xshQg==","signatures":[{"sig":"MEUCIQDl/OsPRYL0/ToLRpggu1rEvbtASHZpCXmrJmv+ARxGLQIgdb8dmH9TjXLEw+Z91Nhh0CfK3qcdZMnCuFAtLFTWJYw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeerunhobby%2fmcp-ha-connect@1.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2033464},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"5d2a3b0c4faeb6f9e812b1b8422c70fc5640f841","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","check:sync":"node scripts/check-version-sync.mjs","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e0be1108-0805-49be-af7e-27d33e1b0879"}},"repository":{"url":"git+https://github.com/coffeerunhobby/mcp-ha-connect.git","type":"git"},"_npmVersion":"11.17.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.7.2_1787469755623_0.8679970308438447","host":"s3://npm-registry-packages-npm-production"}},"1.7.3":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.7.3","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.7.3","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"homepage":"https://github.com/coffeerunhobby/mcp-ha-connect#readme","bugs":{"url":"https://github.com/coffeerunhobby/mcp-ha-connect/issues"},"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"e82f79f61d4b7671af383216443810dfa456f66d","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.7.3.tgz","fileCount":667,"integrity":"sha512-Og16WZ5PL9crweu20erhmsFNpzAJ+s7qFmVUUVYcWlPNgXpZ9eMp44fgKFNjGL7poFGp+VqjkSoMBlgH7DUocw==","signatures":[{"sig":"MEQCIEqxqHcTeZPAnxJgjKBzsie6dBr/Dc/e+o2pVyO1gDtAAiA2Jmw1NFVNj3P2tbPE+kZl9X6cNHBkPPzj5PeeXbmVwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeerunhobby%2fmcp-ha-connect@1.7.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2017381},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"914d8d80200b38f1685789bd40f4203393123fb2","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","check:sync":"node scripts/check-version-sync.mjs","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e0be1108-0805-49be-af7e-27d33e1b0879"}},"repository":{"url":"git+https://github.com/coffeerunhobby/mcp-ha-connect.git","type":"git"},"_npmVersion":"11.17.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.0.16","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.0.16","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.7.3_1787549410335_0.012254272103795039","host":"s3://npm-registry-packages-npm-production"}},"1.7.4":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.7.4","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.7.4","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"homepage":"https://github.com/coffeerunhobby/mcp-ha-connect#readme","bugs":{"url":"https://github.com/coffeerunhobby/mcp-ha-connect/issues"},"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"2f60fb83748ee3f4890b6695fc9f68a8f3a85d1b","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.7.4.tgz","fileCount":667,"integrity":"sha512-Ndpu65uCPrtD/SSV03E9YvtUPKd1hF/AtKGzjHKR9o2P46aOWOGZl38IcG14csfC1EyQsMXIdnepYYlNevaCdA==","signatures":[{"sig":"MEUCIAX94JqDRaXc1di6MRoyokxpufO0mBgbPQVRljcb3P5YAiEA2/AXXrBX81uGHgCmZC9yyAPJPC5wM5YbZ0QV+V+zRj4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGpc6yp8avgEKZdhPXogst0AY2QszxVtduUrZIeVr+iKAiEAkHuj4ksGvmgyhx7CR+rfpfyWl8zmnpilugG6RR6hFbQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeerunhobby%2fmcp-ha-connect@1.7.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2018601},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"1f45d1b8f1b1d18a063aac770de4fe4be0d9df98","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","check:sync":"node scripts/check-version-sync.mjs","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"e0be1108-0805-49be-af7e-27d33e1b0879"}},"repository":{"url":"git+https://github.com/coffeerunhobby/mcp-ha-connect.git","type":"git"},"_npmVersion":"11.19.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.1.11","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.1.11","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.7.4_1790748628313_0.3374689103726958","host":"s3://npm-registry-packages-npm-production"}},"1.7.5":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.7.5","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.7.5","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"homepage":"https://github.com/coffeerunhobby/mcp-ha-connect#readme","bugs":{"url":"https://github.com/coffeerunhobby/mcp-ha-connect/issues"},"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"09ffc3c357a07958e8ecf76d6d4bc317eae45b02","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.7.5.tgz","fileCount":675,"integrity":"sha512-grTUX2o/OpNEowGLNrrYl0K+uyu+ZeyMIX4Y85Xyrc9u8gBg9WcPxk5juYXwxWqzD5QKrTOtLIDcIesNqGOFWg==","signatures":[{"sig":"MEYCIQC2bN/T7q0vvNBAN98lg6Ew1IA129P6D81Wjc7+Xa/rsgIhANi7SvMBTlzPc2Hl4+Jlzj6lfjoaJOsN1By5EgupgoEc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGqw5B/TO5+sSqr31BN/hp937VkuYcPjSxtq8EtB8DtjAiA4o/0sC+EaF9pHjx9RQTjPbQNoXBFwaO/vfbSiNxAbKw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeerunhobby%2fmcp-ha-connect@1.7.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2055879},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"adf187d33613a61b849651c59cae25f33c40a627","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","check:sync":"node scripts/check-version-sync.mjs","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"e0be1108-0805-49be-af7e-27d33e1b0879"}},"repository":{"url":"git+https://github.com/coffeerunhobby/mcp-ha-connect.git","type":"git"},"_npmVersion":"11.19.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.1.11","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.1.11","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.7.5_1790919363342_0.47511352534276563","host":"s3://npm-registry-packages-npm-production"}},"1.7.6":{"name":"@coffeerunhobby/mcp-ha-connect","version":"1.7.6","keywords":["mcp","home-assistant","home-automation","smart-home"],"author":{"name":"Coffee Run Hobby"},"license":"MIT","_id":"@coffeerunhobby/mcp-ha-connect@1.7.6","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"homepage":"https://github.com/coffeerunhobby/mcp-ha-connect#readme","bugs":{"url":"https://github.com/coffeerunhobby/mcp-ha-connect/issues"},"bin":{"mcp-ha-connect":"dist/index.js"},"dist":{"shasum":"471ac6160043ec7c112a037d2b1b2d709f9e3243","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-1.7.6.tgz","fileCount":675,"integrity":"sha512-4s7zcsZmC6qaFV6n707YVnLns0oNY2WEyNguLPoU0AuXG0DbcZ5uNQu3+yr/xU21iIOf6Z0mUQ4gL+67nip7PQ==","signatures":[{"sig":"MEYCIQDvW6PjxaS2OgEctwtqy2luT501AZs/SzXLmU4qoAWZ7wIhAOhEd19NWYcnb+nd63WY6q+48yShpPem9gf8ozzelXB6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC0g4QTCJHuW3JFUZOlUlZFG1p68+keb8DP1kmYsgQKQQIgfXGLtqr0gMlZ7iZ0YMELOG9OgWDDtpbZm9RhGSuldKY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeerunhobby%2fmcp-ha-connect@1.7.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2063558},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"7b5075bf3c7203a130f18cb5e6ab2cc4094a703a","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","check:sync":"node scripts/check-version-sync.mjs","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"e0be1108-0805-49be-af7e-27d33e1b0879"}},"repository":{"url":"git+https://github.com/coffeerunhobby/mcp-ha-connect.git","type":"git"},"_npmVersion":"11.19.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^3.24.1","undici":"^6.26.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.1.11","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.1.11","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ha-connect_1.7.6_1790921715760_0.7714933158569222","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"_id":"@coffeerunhobby/mcp-ha-connect@2.0.0","bin":{"mcp-ha-connect":"dist/index.js"},"bugs":{"url":"https://github.com/coffeerunhobby/mcp-ha-connect/issues"},"dist":{"shasum":"10aa25afcf7530bc45bbff75203f2a165d88adad","tarball":"https://registry.npmjs.org/@coffeerunhobby/mcp-ha-connect/-/mcp-ha-connect-2.0.0.tgz","fileCount":677,"integrity":"sha512-kpUNNRiZ/+isoQfYRBVCCaPAv43TlTJ6oAVpT0tygRbujKZwmh0cUavJB7YYIasQDwpCkab9LY/7K5M6CM5NLg==","signatures":[{"sig":"MEYCIQDXghnVOw39DUdabXFMsQqNDOvuVRA0zNM9ihlbt4wzfAIhAM/Zij/yN4Ea2HXo1i4bE7nuLLGksh9I/z763afCrnGC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCW0DDdRDQOiF1ks4w8GIqKCu2wgHi/WkuKz5yZcdvFYgIgT/Knk8wcWMUdbz4W6YgysI19Sgvj4nJ0gNMHiWaYHBk="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coffeerunhobby%2fmcp-ha-connect@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2068810},"main":"dist/index.js","name":"@coffeerunhobby/mcp-ha-connect","type":"module","types":"./dist/index.d.ts","author":{"name":"Coffee Run Hobby"},"engines":{"node":">=20.0.0"},"gitHead":"41c0d2f6a2b347e431b68071d429d0ae5cf84802","license":"MIT","scripts":{"dev":"tsx watch --env-file=.env src/index.ts","lint":"eslint src tests","test":"vitest run --no-color --exclude 'tests/integration/**'","bench":"vitest bench --run --no-color","build":"tsc -p tsconfig.json","check":"npm run lint && tsc --noEmit","start":"node --env-file=.env dist/index.js","dev:http":"tsx watch --env-file=.env src/index.ts","check:sync":"node scripts/check-version-sync.mjs","start:http":"node --env-file=.env dist/index.js","test:watch":"vitest --no-color --exclude 'tests/integration/**'","generate:jwt":"tsx --env-file=.env scripts/generate-jwt.ts","test:coverage":"vitest run --coverage --no-color --exclude 'tests/integration/**'","test:integration":"node --env-file=.env node_modules/vitest/vitest.mjs run --no-color tests/integration/"},"version":"2.0.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"e0be1108-0805-49be-af7e-27d33e1b0879"}},"homepage":"https://github.com/coffeerunhobby/mcp-ha-connect#readme","keywords":["mcp","home-assistant","home-automation","smart-home"],"repository":{"url":"git+https://github.com/coffeerunhobby/mcp-ha-connect.git","type":"git"},"_npmVersion":"11.19.0","description":"Smart home MCP server for Home Assistant plus Local AI integration","directories":{},"maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.6.5","undici":"^6.26.0","@modelcontextprotocol/node":"^2.1.0","@modelcontextprotocol/server":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.18.0","vitest":"^4.1.11","esbuild":"^0.27.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^22.10.5","typescript-eslint":"^8.52.0","@vitest/coverage-v8":"^4.1.11","@amiceli/vitest-cucumber":"^6.2.0","@typescript-eslint/parser":"^8.19.1","@modelcontextprotocol/client":"^2.2.0","@typescript-eslint/eslint-plugin":"^8.19.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-ha-connect_2.0.0_1790941159534_0.15908156262052686"}}},"time":{"created":"2026-01-10T15:53:15.534Z","modified":"2026-10-02T11:39:19.950Z","0.5.0":"2026-01-10T15:53:15.790Z","0.6.0":"2026-01-11T01:36:06.273Z","0.7.0":"2026-01-11T13:26:33.789Z","0.8.0":"2026-01-12T22:16:42.417Z","0.9.0":"2026-01-13T11:02:23.180Z","1.0.0":"2026-01-17T22:40:18.483Z","1.1.0":"2026-06-07T16:09:47.623Z","1.2.0":"2026-06-07T17:09:04.028Z","1.3.0":"2026-06-07T18:59:32.411Z","1.3.1":"2026-06-07T19:11:29.040Z","1.3.4":"2026-06-08T04:55:35.422Z","1.4.0":"2026-06-08T05:21:03.741Z","1.5.0":"2026-06-08T06:46:45.405Z","1.5.1":"2026-06-09T12:53:01.356Z","1.5.2":"2026-06-09T13:15:56.975Z","1.5.3":"2026-06-09T13:26:02.301Z","1.5.4":"2026-06-14T16:47:47.404Z","1.5.5":"2026-07-10T16:45:55.025Z","1.5.6":"2026-07-10T18:39:55.489Z","1.6.0":"2026-07-10T19:33:13.623Z","1.7.0":"2026-07-11T06:51:30.628Z","1.7.1":"2026-07-11T07:13:31.408Z","1.7.2":"2026-08-23T07:22:35.770Z","1.7.3":"2026-08-24T05:30:10.530Z","1.7.4":"2026-09-30T06:10:28.484Z","1.7.5":"2026-10-02T05:36:03.438Z","1.7.6":"2026-10-02T06:15:15.933Z","2.0.0":"2026-10-02T11:39:19.629Z"},"bugs":{"url":"https://github.com/coffeerunhobby/mcp-ha-connect/issues"},"author":{"name":"Coffee Run Hobby"},"license":"MIT","homepage":"https://github.com/coffeerunhobby/mcp-ha-connect#readme","keywords":["mcp","home-assistant","home-automation","smart-home"],"repository":{"url":"git+https://github.com/coffeerunhobby/mcp-ha-connect.git","type":"git"},"description":"Smart home MCP server for Home Assistant plus Local AI integration","maintainers":[{"name":"coffeerunhobby","email":"294crhwtf@mozmail.com"}],"readme":"# MCP-HA-Connect\n\nA production-ready Model Context Protocol (MCP) server for Home Assistant integration with AI assistants like Claude and LM Studio.\n\n[![npm version](https://img.shields.io/npm/v/%40coffeerunhobby%2Fmcp-ha-connect)](https://www.npmjs.com/package/@coffeerunhobby/mcp-ha-connect)\n[![Docker](https://img.shields.io/badge/docker-ghcr.io-blue)](https://github.com/coffeerunhobby/mcp-ha-connect/pkgs/container/mcp-ha-connect)\n[![Discord](https://img.shields.io/badge/Discord-join%20chat-5865F2?logo=discord&logoColor=white)](https://discord.gg/zeQ6aWVFgS)\n\nSee [docs/QUICK_START.md](docs/QUICK_START.md) for Docker, HTTP server mode, n8n integration, and more installation options.\n\n## Key Features\n\n### Core Functionality\n\n- Smart Device Control\n- Lights: Brightness, color temperature, RGB color, transitions\n- Climate: Temperature, HVAC modes, fan modes, humidity\n- Covers: Position and tilt control\n- Switches: On/off control\n- Sensors & Contacts: State monitoring\n- Media Players: Playback control, volume, source selection\n- Fans: Speed, oscillation, direction\n- Locks: Lock/unlock control\n- Vacuums: Start, stop, return to base\n- Cameras: Motion detection, snapshots\n\n### Automation Management\n\n- List all automations with status\n- Trigger automations manually with variables\n- Enable/disable/toggle automations\n- Create new automations via API\n- Delete automations\n- View automation execution traces\n- Reload automations from configuration\n\n### System Features\n\n- Direct Home Assistant API integration\n- Long-lived access token authentication\n- Entity state management\n- Service call support\n- Advanced entity search\n- AI-powered sensor analysis with Ollama\n- Multiple transport modes (stdio, Streamable HTTP)\n- HTTP server with health checks\n- CORS support for browser-based clients\n- Structured logging (plain, JSON, GCP-JSON formats)\n- Comprehensive configuration validation with Zod\n- Full type safety with TypeScript\n- Stateful and stateless session support\n- JWT authentication with role-based access control\n- MCP Server Instructions for improved LLM tool selection\n\n### Network Monitoring & Security (TP-Link Omada)\n\nBring your home network into the same assistant that runs your home. These are the\nhigh-value questions an LLM can actually answer about your network:\n\n- **Internet & WAN status** — \"Is my internet up? What's my WAN IP and uplink speed?\" Live\n  per-WAN status, plus multi-WAN / ISP health and load-balancing for the gateway.\n- **Event & alert logs** — \"What happened on my network?\" The site event and alert logs,\n  time-windowed (defaults to the last 7 days), to correlate with Home Assistant history.\n- **Wireless security** — rogue-AP scan results and (on Omada Pro) wireless intrusion\n  detection (WIDS) for genuine network-security awareness.\n- **Controller & device health** — dashboard overview plus top devices by CPU and memory\n  usage, HA-style monitoring of your network stack.\n- **Speed tests** — surface the controller's own speed-test results, pairing with\n  AI-powered `analyzeSensors` for anomaly detection.\n- **Pending devices** — \"Is there a new device waiting to be adopted?\"\n- **Firmware awareness** — per-device firmware info and a controller-wide critical-upgrade\n  overview, mirroring the Home Assistant `checkUpdates` philosophy across the network.\n- **Client management** — list/inspect connected clients, traffic activity, and apply\n  rate-limit profiles, with presence correlation against Home Assistant device trackers.\n\n> A discoverable resource-graph mode (`MCP_TOOL_REGISTRATION_MODE=graph`) exposes all of the\n> above through two tools — `omada_browse` + `omada_read` — keeping the tool-schema budget\n> small for low-context models. See the Omada tool tables below for the full eager surface.\n\n## Available Tools (60 Total)\n\n### Home Assistant Tools (35)\n\n#### State & Entity Tools\n\n| Tool | Description |\n|------|-------------|\n| `getStates` | Get all entity states (paginated, 50/page default). Use `includeAttributes=true` for full data |\n| `getState` | Get the state of a specific entity by entity_id |\n| `getEntitiesByDomain` | Get entities for a domain (paginated, 50/page default). Use `includeAttributes=true` for full data |\n| `searchEntities` | Search entities by name/entity_id (paginated, 50/page default). Use `includeAttributes=true` for full data |\n| `getAllSensors` | Get all sensors (paginated, 50/page default). Use `includeAttributes=true` for full data |\n| `listEntities` | List entities with filtering (domain, state, search, limit). Use `includeAttributes=true` for full data |\n| `getDomainSummary` | Get summary statistics for a domain |\n| `getHistory` | Get historical data for an entity |\n| `listPersons` | List all household members with location state (home/away) |\n\n#### Service & Control Tools\n\n| Tool | Description |\n|------|-------------|\n| `callService` | Call any Home Assistant service |\n| `entityAction` | Simple turn_on/turn_off/toggle actions |\n\n#### Device Control Tools\n\n| Tool | Description |\n|------|-------------|\n| `controlLight` | Control lights with brightness, color, temperature |\n| `controlClimate` | Control thermostats with temperature, HVAC mode |\n| `controlMediaPlayer` | Control media players with playback, volume |\n| `controlCover` | Control covers/blinds with position, tilt |\n| `controlFan` | Control fans with speed, oscillation, direction |\n| `activateScene` | Activate a Home Assistant scene |\n| `runScript` | Run a Home Assistant script |\n| `sendNotification` | Send notifications with full mobile app support (actions, priority, images) |\n| `listNotificationTargets` | Discover available mobile app notification targets |\n\n#### Automation Tools\n\n| Tool | Description |\n|------|-------------|\n| `listAutomations` | List all automations with status |\n| `triggerAutomation` | Manually trigger an automation |\n| `enableAutomation` | Enable a disabled automation |\n| `disableAutomation` | Disable an automation |\n| `toggleAutomation` | Toggle automation state |\n| `reloadAutomations` | Reload automations from config |\n| `createAutomation` | Create a new automation |\n| `deleteAutomation` | Delete an automation |\n| `getAutomationTrace` | Get automation execution history |\n\n#### System Tools\n\n| Tool | Description |\n|------|-------------|\n| `getVersion` | Get Home Assistant version and config info |\n| `restartHomeAssistant` | Restart the Home Assistant server |\n| `getSystemLog` | Get system log entries from logbook |\n| `checkUpdates` | Check for available updates |\n\n#### Calendar Tools\n\n| Tool | Description |\n|------|-------------|\n| `listCalendars` | List all calendar entities |\n| `getCalendarEvents` | Get events from one or all calendars |\n\n### Omada Network Tools (24)\n\n#### Site Tools\n\n| Tool | Description |\n|------|-------------|\n| `omada_listSites` | List all sites configured on the Omada controller |\n\n#### Device Tools\n\n| Tool | Description |\n|------|-------------|\n| `omada_listDevices` | List all network devices (APs, switches, gateways) in a site |\n| `omada_getDevice` | Get detailed information about a specific network device |\n| `omada_searchDevices` | Search for devices globally across all sites |\n| `omada_getSwitchStackDetail` | Get detailed information about a switch stack |\n| `omada_listDevicesStats` | Get statistics for global adopted devices with filtering |\n\n#### Client Tools\n\n| Tool | Description |\n|------|-------------|\n| `omada_listClients` | List all connected clients (devices/users) in a site |\n| `omada_getClient` | Get detailed information about a specific connected client |\n| `omada_listMostActiveClients` | Get the most active clients sorted by total traffic |\n| `omada_listClientsActivity` | Get client activity statistics over time |\n| `omada_listClientsPastConnections` | Get historical client connection data |\n\n#### Rate Limit Tools\n\n| Tool | Description |\n|------|-------------|\n| `omada_getRateLimitProfiles` | Get available rate limit profiles for a site |\n| `omada_setClientRateLimit` | Set custom bandwidth limits for a client (download/upload in Kbps) |\n| `omada_setClientRateLimitProfile` | Apply a rate limit profile to a client |\n| `omada_disableClientRateLimit` | Remove bandwidth limits from a client |\n\n#### Security Tools\n\n| Tool | Description |\n|------|-------------|\n| `omada_getThreatList` | Get security threat management list |\n\n#### Network Configuration Tools\n\n| Tool | Description |\n|------|-------------|\n| `omada_getInternetInfo` | Get internet connection configuration for a site |\n| `omada_getPortForwardingStatus` | Get port forwarding rules (User or UPnP) |\n| `omada_getLanNetworkList` | Get LAN network configuration list |\n| `omada_getLanProfileList` | Get LAN profile configuration list |\n| `omada_getWlanGroupList` | Get WLAN group configuration list |\n| `omada_getSsidList` | Get SSID list for a WLAN group |\n| `omada_getSsidDetail` | Get detailed SSID configuration |\n| `omada_getFirewallSetting` | Get firewall configuration for a site |\n\n### AI Tools (1)\n\n| Tool | Description |\n|------|-------------|\n| `analyzeSensors` | Analyze sensor data using AI (Ollama) to detect issues and provide recommendations |\n\n### MCP Resources\n\n| Resource URI | Description |\n|--------------|-------------|\n| `hass://entities` | List all entities grouped by domain |\n| `hass://entities/{entity_id}` | Get state of a specific entity |\n| `hass://entities/{entity_id}/detailed` | Get detailed entity info with all attributes |\n| `hass://entities/domain/{domain}` | Get all entities for a domain |\n| `hass://search/{query}/{limit}` | Search entities with result limit |\n\n## Prerequisites\n\n- **Node.js 20+** (tested with v20.19.6) - for npm/npx methods\n- **npm 10.8+** (tested with v10.8.2) - for npm/npx methods\n- **Docker** (optional) - for Docker method\n- Home Assistant instance with long-lived access token\n- Network access to your Home Assistant instance\n- (Optional) Ollama for AI-powered analysis\n\n## Getting Your Home Assistant Token\n\n1. Log into your Home Assistant instance\n2. Click on your profile (bottom left)\n3. Scroll down to \"Long-Lived Access Tokens\"\n4. Click \"Create Token\"\n5. Give it a name (e.g., \"MCP Server\")\n6. Copy the token (shown only once!)\n\n## Environment Variables\n\n### Required\n\n| Variable | Description | Example |\n|----------|-------------|---------|\n| `HA_URL` | Home Assistant URL | `http://homeassistant.10.0.0.19.nip.io:8123` |\n| `HA_TOKEN` | Long-lived access token | `eyJhbGciOiJIUzI1NiIsInR5cCI...` |\n\n### Optional - Home Assistant\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `HA_PLUGIN_ENABLED` | `true` | Enable Home Assistant plugin |\n| `HA_STRICT_SSL` | `true` | Validate SSL certificates |\n| `HA_TIMEOUT` | `30000` | API request timeout (ms) |\n\n### Optional - MCP Server\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `MCP_SERVER_LOG_LEVEL` | `info` | Log level: `debug`, `info`, `warn`, `error` |\n| `MCP_SERVER_LOG_FORMAT` | `plain` | Log format: `plain`, `json`, `gcp-json` |\n| `MCP_SERVER_USE_HTTP` | `false` | Enable HTTP mode (vs stdio) |\n| `MCP_SERVER_STATEFUL` | `false` | Enable stateful sessions in HTTP mode |\n\n### Optional - HTTP Mode\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `MCP_HTTP_PORT` | `3000` | HTTP server port |\n| `MCP_HTTP_BIND_ADDR` | `127.0.0.1` | Bind address |\n| `MCP_HTTP_PATH` | `/mcp` | MCP endpoint path |\n| `MCP_HTTP_ENABLE_HEALTHCHECK` | `true` | Enable health check endpoint |\n| `MCP_HTTP_HEALTHCHECK_PATH` | `/health` | Health check path |\n| `MCP_HTTP_ALLOW_CORS` | `true` | Enable CORS |\n| `MCP_HTTP_ALLOWED_ORIGINS` | `127.0.0.1,localhost` | Allowed CORS origins |\n\n### Optional - Chat face (OpenAPI/REST surface)\n\nThe server also serves an OpenAPI/REST face (`/openapi.json` + `/api/*`) for chat UIs\nlike Open WebUI. By default it exposes the classic 8 Home Assistant tools. Tools marked\nchat-eligible in code can be activated per category with read/write granularity:\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `MCP_CHAT_TOOLS` | unset (= legacy 8 HA tools) | Category slice, e.g. `ha-core:rw,ha-history:r,omada-read:r`. Categories: `ha-core`, `ha-history`, `ha-automations`, `omada-read`, `omada-write`. Config can only narrow what the code marks chat-eligible; ADMIN tools (`invokeAction`) can never appear on this face. |\n| `MCP_REST_ACTIONS` | unset (= tool not registered) | JSON map of pre-registered REST actions for the `invokeAction` MCP tool (ADMIN; MCP face only), e.g. `{\"deploy\":{\"url\":\"http://host:8425/v1/update\",\"bearerToken\":\"...\",\"cooldownMs\":300000}}`. Each action is rate-limited: min interval between firings = `cooldownMs` (default 60000; `0` disables) — caps deploy-storm blast radius if a model loops a legitimate action |\n\nActivated chat tools appear in the generated `/openapi.json` as `POST /api/tools/<name>`\nand dispatch through the same handlers, validation, and RBAC as the MCP face.\n\n### Optional - SSE Events\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `MCP_SSE_EVENTS_ENABLED` | `false` | Enable real-time SSE events |\n| `MCP_SSE_EVENTS_PATH` | `/subscribe_events` | SSE endpoint path |\n\n### Optional - Rate Limiting\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `MCP_RATE_LIMIT_ENABLED` | `false` | Enable rate limiting |\n| `MCP_RATE_LIMIT_WINDOW_MS` | `60000` | Rate limit window (ms) |\n| `MCP_RATE_LIMIT_MAX_REQUESTS` | `100` | Max requests per window |\n\n### Optional - Authentication\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `MCP_AUTH_METHOD` | `none` | Auth method: `none` or `bearer` |\n| `MCP_AUTH_SECRET` | - | JWT signing secret (min 32 chars, required for `bearer` method) |\n| `MCP_PERMISSIONS_CONFIG` | - | JSON config for user roles and permissions |\n\n#### JWT Authentication\n\nWhen `MCP_AUTH_METHOD=bearer`, clients must provide a JWT token in the Authorization header:\n\n```\nAuthorization: Bearer <jwt-token>\n```\n\nGenerate tokens with your `MCP_AUTH_SECRET` using HS256 algorithm. The JWT payload should include:\n- `sub` (subject): User identifier for permission lookup\n- `exp` (optional): Expiration timestamp\n\n#### Permission System\n\nThe server uses role-based access control with binary permission masks:\n\n| Permission | Flag | Description |\n|------------|------|-------------|\n| `ADMIN` | 1 | System operations (restart, updates) |\n| `CONFIGURE` | 2 | Create/modify automations, scripts |\n| `CONTROL` | 4 | Control devices (lights, climate, etc.) |\n| `QUERY` | 8 | Read entity states, history, lists |\n| `NOTIFY` | 16 | Send notifications |\n| `AI` | 32 | Use AI analysis features |\n\n**Predefined Roles:**\n\n| Role | Permissions |\n|------|-------------|\n| `NONE` | No permissions |\n| `READONLY` | QUERY only |\n| `OPERATOR` | QUERY + CONTROL + NOTIFY |\n| `CONTRIBUTOR` | QUERY + CONTROL + NOTIFY + CONFIGURE |\n| `ADMIN` | All six permissions (QUERY, CONTROL, NOTIFY, CONFIGURE, AI, ADMIN) |\n| `SUPERUSER` | All permissions |\n\n**Configuration Example:**\n\n```json\n{\n  \"users\": [\n    { \"sub\": \"admin@example.com\", \"role\": \"admin\" },\n    { \"sub\": \"user@example.com\", \"role\": \"operator\" },\n    { \"sub\": \"viewer@example.com\", \"role\": \"readonly\" }\n  ],\n  \"defaultRole\": \"NONE\"\n}\n```\n\nSet via environment variable (escape quotes for shell):\n```bash\nMCP_PERMISSIONS_CONFIG='{\"users\":[{\"sub\":\"admin\",\"role\":\"admin\"}],\"defaultRole\":\"NONE\"}'\n```\n\n**Recommended: `defaultRole: \"NONE\"` plus one `users` entry per client.** `defaultRole` applies to\n*every* validly signed token whose `sub` is not listed — a non-NONE default silently gives unmapped\nclients real access. The server logs a warning at startup when `defaultRole` grants anything. Map each\nclient (Open WebUI, n8n, agents…) explicitly before switching an existing deployment to `NONE`.\n\nClients only see the tools they may use: `tools/list` is filtered by the caller's permissions, so a\n`readonly` token is never offered control or admin tools (calls are still checked per tool).\n\n### Optional - AI Provider\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `AI_PLUGIN_ENABLED` | `true` | Enable AI plugin |\n| `AI_PROVIDER` | `ollama` | AI provider: `ollama`, `openai`, or `none` |\n| `AI_URL` | `http://localhost:11434` | AI server URL (Ollama) |\n| `AI_MODEL` | `llama2` | AI model name |\n| `AI_TIMEOUT` | `60000` | AI request timeout (ms) |\n\n### Optional - Omada Network Controller\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `OMADA_PLUGIN_ENABLED` | `false` | Enable Omada plugin |\n| `OMADA_BASE_URL` | - | Omada controller URL (e.g., `https://192.168.0.1:8043`) |\n| `OMADA_CLIENT_ID` | - | OAuth2 client ID from Omada controller |\n| `OMADA_CLIENT_SECRET` | - | OAuth2 client secret from Omada controller |\n| `OMADA_OMADAC_ID` | - | Omada controller ID |\n| `OMADA_SITE_ID` | - | Default site ID for operations |\n| `OMADA_STRICT_SSL` | `true` | Validate SSL certificates |\n| `OMADA_TIMEOUT` | `30000` | API request timeout (ms) |\n\n## Advanced Configuration Examples\n\n### With AI Analysis (Ollama)\n\n```json\n{\n  \"mcpServers\": {\n    \"homeassistant\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@coffeerunhobby/mcp-ha-connect\"],\n      \"env\": {\n        \"HA_URL\": \"http://homeassistant.10.0.0.19.nip.io:8123\",\n        \"HA_TOKEN\": \"your_token\",\n        \"AI_PROVIDER\": \"ollama\",\n        \"AI_URL\": \"http://ollama.10.0.0.17.nip.io:11434\",\n        \"AI_MODEL\": \"llama2\"\n      }\n    }\n  }\n}\n```\n\n### Disable AI Features\n\n```json\n{\n  \"mcpServers\": {\n    \"homeassistant\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@coffeerunhobby/mcp-ha-connect\"],\n      \"env\": {\n        \"HA_URL\": \"http://homeassistant.10.0.0.19.nip.io:8123\",\n        \"HA_TOKEN\": \"your_token\",\n        \"AI_PROVIDER\": \"none\"\n      }\n    }\n  }\n}\n```\n\n### Docker with Network Configuration\n\nFor Linux, you may need to add `host.docker.internal`:\n\n```json\n{\n  \"mcpServers\": {\n    \"homeassistant\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\",\n        \"--rm\",\n        \"-i\",\n        \"--add-host=host.docker.internal:host-gateway\",\n        \"-e\", \"HA_URL=http://host.docker.internal:8123\",\n        \"-e\", \"HA_TOKEN=your_token\",\n        \"ghcr.io/coffeerunhobby/mcp-ha-connect:latest\"\n      ]\n    }\n  }\n}\n```\n\n## Usage Modes\n\n### Mode 1: MCP Client (Claude Desktop / LM Studio)\n\nDefault stdio mode for MCP clients. See [Quick Start](#quick-start) section for configuration.\n\nFor detailed configuration options, see [docs/LOCAL_CLIENT.md](docs/LOCAL_CLIENT.md).\n\n### Mode 2: HTTP Server\n\nStart as standalone HTTP server for web applications:\n\n```bash\n# Using npx\nnpx @coffeerunhobby/mcp-ha-connect\n\n# Or with environment variables\nMCP_SERVER_USE_HTTP=true \\\nMCP_HTTP_PORT=3000 \\\nHA_URL=http://homeassistant.10.0.0.19.nip.io:8123 \\\nHA_TOKEN=your_token \\\nnpx @coffeerunhobby/mcp-ha-connect\n```\n\n#### Streamable HTTP Transport\n\nConfigure your MCP client to use:\n- **URL:** `http://localhost:3000/mcp`\n- **Transport:** Streamable HTTP (MCP 2025-03-26)\n\n#### SSE Event Subscription\n\nSubscribe to real-time events:\n\n```javascript\nconst eventSource = new EventSource(\n  'http://localhost:3000/subscribe_events?domain=light&entity_id=light.living_room'\n);\n\neventSource.addEventListener('state_changed', (event) => {\n  const data = JSON.parse(event.data);\n  console.log('Entity changed:', data.entity_id, data.new_state);\n});\n```\n\nSee [docs/SSE_API.md](docs/SSE_API.md) for complete SSE documentation.\n\n### Mode 3: Docker Standalone\n\n```bash\n# Pull image\ndocker pull ghcr.io/coffeerunhobby/mcp-ha-connect:latest\n\n# Run in HTTP mode\ndocker run -d --name mcp-ha-connect \\\n  -e HA_URL=http://homeassistant.10.0.0.19.nip.io:8123 \\\n  -e HA_TOKEN=your_token \\\n  -e MCP_SERVER_USE_HTTP=true \\\n  -p 3000:3000 \\\n  ghcr.io/coffeerunhobby/mcp-ha-connect:latest\n```\n\n### Mode 4: Docker Compose\n\n```yaml\nversion: '3.8'\n\nservices:\n  mcp-ha-connect:\n    image: ghcr.io/coffeerunhobby/mcp-ha-connect:latest\n    container_name: mcp-ha-connect\n    restart: unless-stopped\n    ports:\n      - \"3000:3000\"\n    environment:\n      - HA_URL=http://homeassistant.10.0.0.19.nip.io:8123\n      - HA_TOKEN=${HA_TOKEN}\n      - MCP_SERVER_USE_HTTP=true\n      - MCP_HTTP_BIND_ADDR=0.0.0.0\n    networks:\n      - home-automation\n\nnetworks:\n  home-automation:\n    driver: bridge\n```\n\n## Integration Examples\n\n### With Claude Desktop\n\nOnce configured, you can ask Claude:\n\n- \"Show me all lights in my house\"\n- \"Turn on the kitchen lights to 50% brightness\"\n- \"Set the living room temperature to 72 degrees\"\n- \"Create an automation that turns off all lights at midnight\"\n- \"What automations are currently enabled?\"\n- \"Trigger the morning routine automation\"\n- \"Search for entities with 'bedroom' in their name\"\n- \"Get all climate entities\"\n- \"Analyze my sensors for any issues\" (requires Ollama)\n- \"Check the history of my thermostat\"\n\n### With n8n Workflows\n\nThe server can be integrated with n8n for automated home monitoring. Pre-built workflows are available in the `n8n/` directory:\n\n1. **ai-agent-safety-monitor** - Critical safety monitoring every 5 minutes\n\n#### Importing Workflows\n\n**Method 1: n8n UI**\n1. Open n8n: `http://127.0.0.1:5678`\n2. Click **Workflows** → **Import from File**\n3. Select JSON file from `n8n-files/`\n4. Activate the workflow\n\n**Method 2: Docker CLI**\n```bash\n# Copy workflow to n8n container\ndocker cp \"n8n-files/AI Agent Safety Monitor - Updated.json\" n8n:/files/workflow.json\n\n# Import using n8n CLI\ndocker exec -it n8n n8n import:workflow --input=/files/workflow.json\n\n# Verify import\ndocker exec -it n8n n8n list:workflow\n```\n\n### With Web Applications\n\nUse the HTTP transport with your MCP-compatible web client:\n\n1. Start server in HTTP mode\n2. Configure client to use `http://localhost:3000/mcp`\n3. Set transport to Streamable HTTP (MCP 2025-03-26)\n4. Enable CORS by adding your origin to `MCP_HTTP_ALLOWED_ORIGINS`\n\n### With Remote MCP Proxy (mcp-remote)\n\nConnect a stdio-only client (Claude Desktop, LM Studio) to a remote HTTP MCP\nserver using [`mcp-remote`](https://www.npmjs.com/package/mcp-remote). On Windows,\nlaunch it through `cmd /c` and include `-y` so the first run never blocks on the\nnpx install prompt:\n\n```json\n{\n  \"mcpServers\": {\n    \"homeassistant\": {\n      \"command\": \"cmd\",\n      \"args\": [\n        \"/c\",\n        \"npx\",\n        \"-y\",\n        \"mcp-remote\",\n        \"https://your-server.example/mcp\",\n        \"--header\",\n        \"Authorization: Bearer <your-jwt-token>\"\n      ]\n    }\n  }\n}\n```\n\n> ⚠️ **Do not use `${VAR}` placeholders in the `--header` value.** A config like\n> `\"Authorization: Bearer ${MCP_AUTH_TOKEN}\"` with a matching `env` block does **not**\n> work on Windows: `cmd /c` only expands `%VAR%` (not `${VAR}`), and mcp-remote does\n> not substitute it either. The literal text `${MCP_AUTH_TOKEN}` is sent as the token,\n> the server replies `401`, and mcp-remote then falls into a failing OAuth flow that\n> surfaces as **\"Server disconnected\"**. Inline the actual JWT instead. (On macOS/Linux\n> you can instead let your shell expand the variable before the client launches.)\n\n## Network Configuration Notes\n\n- **`host.docker.internal`** - Use this to access services on your host machine from Docker\n  - Works on Windows and macOS by default\n  - On Linux, add `--add-host=host.docker.internal:host-gateway` to docker args\n- **Direct IP** - Use your machine's IP address (e.g., `http://10.0.0.19:8123`)\n- **nip.io domains** - Use wildcard DNS for easy local development (e.g., `http://homeassistant.10.0.0.19.nip.io:8123`)\n\n## Security Best Practices\n\n### Network Security\n\n- **Network Segmentation**: Run MCP server on private LAN only\n- **Docker Networks**: Use Docker networks for container isolation\n- **VLAN**: Consider VLAN for IoT devices\n- **No Internet Exposure**: Never expose MCP server directly to internet\n\n### Token & Configuration Security\n\n- Store `.env` securely (contains access token)\n- **Never** commit `.env` to version control\n- Set `.env` permissions: `chmod 600 .env`\n- Use `HA_STRICT_SSL=true` for HTTPS in production\n- Rotate access tokens periodically\n- Restrict `MCP_HTTP_ALLOWED_ORIGINS` (avoid wildcard `*`)\n- Bind to `127.0.0.1` for local-only access\n- Enable rate limiting in production (`MCP_RATE_LIMIT_ENABLED=true`)\n\n### MCP Client Configuration Security\n\n⚠️ **Important:** Storing tokens directly in MCP client config files (Claude Desktop, LM Studio) exposes them to anyone with filesystem access. Consider:\n\n- Using `.env` files with restricted permissions for Docker/local deployments\n- Setting file permissions on config files (e.g., `chmod 600`)\n- Using environment variable substitution if supported by your client\n- Never committing config files with real tokens to version control\n\n## Server Instructions\n\nThe server provides MCP Server Instructions during initialization to help LLMs understand how to optimally use the available tools. Instructions are dynamically generated based on enabled plugins and include:\n\n- **Entity Queries**: Guidance on pagination, attribute inclusion, and using specialized tools like `listPersons`\n- **Device Control**: When to use specialized control tools vs generic `callService`\n- **Automation Workflows**: Best practices for creating and testing automations\n- **Omada Operations**: Site context requirements, client vs device distinction, rate limiting safety\n- **Cross-Plugin Integration**: How HA presence detection correlates with Omada network clients\n\nInstructions follow MCP best practices: concise, actionable, and focused on tool relationships rather than repeating individual tool descriptions.\n\n## Troubleshooting\n\n### Claude Desktop / LM Studio Not Connecting\n\n1. **Check config file location** - Verify you're editing the correct file\n2. **Restart the application** - Close and reopen after config changes\n3. **Check logs** - Look for error messages in the application logs\n4. **Test connection manually**:\n\n```bash\n# Test npx\nnpx @coffeerunhobby/mcp-ha-connect\n\n# Test Docker\ndocker run --rm -i \\\n  -e HA_URL=http://homeassistant.10.0.0.19.nip.io:8123 \\\n  -e HA_TOKEN=your_token \\\n  ghcr.io/coffeerunhobby/mcp-ha-connect:latest\n```\n\n### mcp-remote Shows \"Server disconnected\" (401)\n\nIf `/health` returns `200` but the client shows **\"Server disconnected\"**, the\nauth header is almost certainly malformed. Most common cause: a `${VAR}`\nplaceholder in the `--header` value that never got expanded (see the warning under\n[With Remote MCP Proxy](#with-remote-mcp-proxy-mcp-remote)). Verify the endpoint\naccepts your token directly:\n\n```bash\ncurl -i -X POST https://your-server.example/mcp \\\n  -H \"Authorization: Bearer <your-jwt-token>\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Accept: application/json, text/event-stream\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"diag\",\"version\":\"1.0\"}}}'\n```\n\nA `200` with an `initialize` result means the server and token are fine — fix the\nclient config (inline the literal token). A `401` means the token itself is wrong.\n\n### Docker `host.docker.internal` Not Working (Linux)\n\nAdd host gateway:\n\n```json\n{\n  \"args\": [\n    \"run\",\n    \"--rm\",\n    \"-i\",\n    \"--add-host=host.docker.internal:host-gateway\",\n    \"-e\", \"HA_URL=http://host.docker.internal:8123\",\n    ...\n  ]\n}\n```\n\n### Home Assistant Connection Issues\n\n1. **Verify URL** - Try accessing `http://your-ha-url:8123/api/` in browser\n2. **Check token** - Ensure it's a valid long-lived access token\n3. **Network access** - Verify MCP server can reach Home Assistant\n4. **SSL issues** - Try `HA_STRICT_SSL=false` for testing\n\n### AI Analysis Not Working\n\n1. **Verify Ollama is running** - `curl http://your-ollama-url:11434/api/tags`\n2. **Check model is available** - Ensure model is pulled: `ollama pull llama2`\n3. **Set AI_PROVIDER** - Must be set to `ollama` (not `none`)\n\n## Development\n\n### Setup\n\n```bash\n# Clone repository\ngit clone https://github.com/coffeerunhobby/mcp-ha-connect.git\ncd mcp-ha-connect\n\n# Install dependencies\nnpm install\n\n# Copy environment template\ncp .env.example .env\n\n# Edit .env with your Home Assistant details\nnano .env\n\n# Build\nnpm run build\n\n# Run\nnpm start\n```\n\n### Available Scripts\n\n```bash\nnpm run build      # Build TypeScript to dist/\nnpm run dev        # Run in development mode with watch\nnpm start          # Run built version\nnpm test           # Run tests\nnpm run lint       # Run ESLint\nnpm run format     # Format code with Prettier\n```\n\n## License\n\nMIT\n\n## Author\n\nCoffee Run Hobby ([github.com/coffeerunhobby](https://github.com/coffeerunhobby))\n\n## Links\n\n- **GitHub**: [https://github.com/coffeerunhobby/mcp-ha-connect](https://github.com/coffeerunhobby/mcp-ha-connect)\n- **npm**: [https://www.npmjs.com/package/@coffeerunhobby/mcp-ha-connect](https://www.npmjs.com/package/@coffeerunhobby/mcp-ha-connect)\n- **Docker**: [https://github.com/coffeerunhobby/mcp-ha-connect/pkgs/container/mcp-ha-connect](https://github.com/coffeerunhobby/mcp-ha-connect/pkgs/container/mcp-ha-connect)\n\n## Documentation\n\n- [Quick Start Guide](docs/QUICK_START.md)\n- [Changelog](docs/CHANGELOG.md)\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n","readmeFilename":"README.md"}