96 lines
62 KiB
HTML
96 lines
62 KiB
HTML
<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Home Assistant MCP Server Documentation"><link rel=canonical href=https://jango-blockchained.github.io/advanced-homeassistant-mcp/troubleshooting.html><link rel=prev href=development/test-migration-guide.html><link rel=next href=deployment.html><link rel=icon href=assets/images/favicon.ico><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.6.2"><title>Troubleshooting - MCP Server for Home Assistant</title><link rel=stylesheet href=assets/stylesheets/main.d7758b05.min.css><link rel=stylesheet href=assets/stylesheets/palette.06af60db.min.css><script src=https://unpkg.com/iframe-worker/shim></script><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=assets/_mkdocstrings.css><link rel=stylesheet href=stylesheets/extra.css><script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script><script id=__analytics>function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config",""),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script><script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script></head> <body dir=ltr data-md-color-scheme=slate data-md-color-primary=deep-purple data-md-color-accent=purple> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#troubleshooting-guide class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <div data-md-color-scheme=default data-md-component=outdated hidden> </div> <header class="md-header md-header--shadow md-header--lifted" data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=index.html title="MCP Server for Home Assistant" class="md-header__button md-logo" aria-label="MCP Server for Home Assistant" data-md-component=logo> <img src=assets/images/logo.png alt=logo> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> MCP Server for Home Assistant </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Troubleshooting </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Switch to light mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Switch to dark mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <a href=javascript:void(0) class="md-search__icon md-icon" title=Share aria-label=Share data-clipboard data-clipboard-text data-md-component=search-share tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg> </a> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> <div class=md-search__suggest data-md-component=search-suggest></div> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href=https://github.com/jango-blockchained/advanced-homeassistant-mcp title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> GitHub </div> </a> </div> </nav> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=index.html class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=getting-started/index.html class=md-tabs__link> Getting Started </a> </li> <li class=md-tabs__item> <a href=api/index.html class=md-tabs__link> API Reference </a> </li> <li class=md-tabs__item> <a href=usage.html class=md-tabs__link> Usage </a> </li> <li class=md-tabs__item> <a href=config/index.html class=md-tabs__link> Configuration </a> </li> <li class=md-tabs__item> <a href=tools/index.html class=md-tabs__link> Tools </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=development/index.html class=md-tabs__link> Development </a> </li> <li class=md-tabs__item> <a href=examples/index.html class=md-tabs__link> Examples </a> </li> </ul> </div> </nav> </header> <div class=md-container data-md-component=container> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted md-nav--integrated" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=index.html title="MCP Server for Home Assistant" class="md-nav__button md-logo" aria-label="MCP Server for Home Assistant" data-md-component=logo> <img src=assets/images/logo.png alt=logo> </a> MCP Server for Home Assistant </label> <div class=md-nav__source> <a href=https://github.com/jango-blockchained/advanced-homeassistant-mcp title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> GitHub </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=index.html class=md-nav__link> <span class=md-ellipsis> Home </span> </a> </li> <li class="md-nav__item md-nav__item--pruned md-nav__item--nested"> <a href=getting-started/index.html class=md-nav__link> <span class=md-ellipsis> Getting Started </span> <span class="md-nav__icon md-icon"></span> </a> </li> <li class="md-nav__item md-nav__item--pruned md-nav__item--nested"> <a href=api/index.html class=md-nav__link> <span class=md-ellipsis> API Reference </span> <span class="md-nav__icon md-icon"></span> </a> </li> <li class=md-nav__item> <a href=usage.html class=md-nav__link> <span class=md-ellipsis> Usage </span> </a> </li> <li class="md-nav__item md-nav__item--pruned md-nav__item--nested"> <a href=config/index.html class=md-nav__link> <span class=md-ellipsis> Configuration </span> <span class="md-nav__icon md-icon"></span> </a> </li> <li class="md-nav__item md-nav__item--pruned md-nav__item--nested"> <a href=tools/index.html class=md-nav__link> <span class=md-ellipsis> Tools </span> <span class="md-nav__icon md-icon"></span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_7 checked> <div class="md-nav__link md-nav__container"> <a href=development/index.html class="md-nav__link "> <span class=md-ellipsis> Development </span> </a> <label class="md-nav__link " for=__nav_7 id=__nav_7_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_7_label aria-expanded=true> <label class=md-nav__title for=__nav_7> <span class="md-nav__icon md-icon"></span> Development </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=development/environment.html class=md-nav__link> <span class=md-ellipsis> Environment Setup </span> </a> </li> <li class=md-nav__item> <a href=architecture.html class=md-nav__link> <span class=md-ellipsis> Architecture </span> </a> </li> <li class=md-nav__item> <a href=contributing.html class=md-nav__link> <span class=md-ellipsis> Contributing </span> </a> </li> <li class=md-nav__item> <a href=testing.html class=md-nav__link> <span class=md-ellipsis> Testing </span> </a> </li> <li class=md-nav__item> <a href=development/best-practices.html class=md-nav__link> <span class=md-ellipsis> Best Practices </span> </a> </li> <li class=md-nav__item> <a href=development/interfaces.html class=md-nav__link> <span class=md-ellipsis> Interfaces </span> </a> </li> <li class=md-nav__item> <a href=development/tools.html class=md-nav__link> <span class=md-ellipsis> Tool Development </span> </a> </li> <li class=md-nav__item> <a href=development/test-migration-guide.html class=md-nav__link> <span class=md-ellipsis> Test Migration Guide </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Troubleshooting </span> <span class="md-nav__icon md-icon"></span> </label> <a href=troubleshooting.html class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Troubleshooting </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#quick-diagnostics class=md-nav__link> <span class=md-ellipsis> Quick Diagnostics </span> </a> <nav class=md-nav aria-label="Quick Diagnostics"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#health-check class=md-nav__link> <span class=md-ellipsis> Health Check </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#common-issues class=md-nav__link> <span class=md-ellipsis> Common Issues </span> </a> <nav class=md-nav aria-label="Common Issues"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#1-connection-issues class=md-nav__link> <span class=md-ellipsis> 1. Connection Issues </span> </a> <nav class=md-nav aria-label="1. Connection Issues"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#cannot-connect-to-mcp-server class=md-nav__link> <span class=md-ellipsis> Cannot Connect to MCP Server </span> </a> </li> <li class=md-nav__item> <a href=#home-assistant-connection-failed class=md-nav__link> <span class=md-ellipsis> Home Assistant Connection Failed </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#2-authentication-issues class=md-nav__link> <span class=md-ellipsis> 2. Authentication Issues </span> </a> <nav class=md-nav aria-label="2. Authentication Issues"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#invalid-token class=md-nav__link> <span class=md-ellipsis> Invalid Token </span> </a> </li> <li class=md-nav__item> <a href=#rate-limiting class=md-nav__link> <span class=md-ellipsis> Rate Limiting </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#3-real-time-updates-issues class=md-nav__link> <span class=md-ellipsis> 3. Real-time Updates Issues </span> </a> <nav class=md-nav aria-label="3. Real-time Updates Issues"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#sse-connection-drops class=md-nav__link> <span class=md-ellipsis> SSE Connection Drops </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#4-performance-issues class=md-nav__link> <span class=md-ellipsis> 4. Performance Issues </span> </a> <nav class=md-nav aria-label="4. Performance Issues"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#high-latency class=md-nav__link> <span class=md-ellipsis> High Latency </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#5-device-control-issues class=md-nav__link> <span class=md-ellipsis> 5. Device Control Issues </span> </a> <nav class=md-nav aria-label="5. Device Control Issues"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#commands-not-executing class=md-nav__link> <span class=md-ellipsis> Commands Not Executing </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#debugging-tools class=md-nav__link> <span class=md-ellipsis> Debugging Tools </span> </a> <nav class=md-nav aria-label="Debugging Tools"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#log-analysis class=md-nav__link> <span class=md-ellipsis> Log Analysis </span> </a> </li> <li class=md-nav__item> <a href=#network-debugging class=md-nav__link> <span class=md-ellipsis> Network Debugging </span> </a> </li> <li class=md-nav__item> <a href=#performance-profiling class=md-nav__link> <span class=md-ellipsis> Performance Profiling </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#getting-help class=md-nav__link> <span class=md-ellipsis> Getting Help </span> </a> </li> <li class=md-nav__item> <a href=#maintenance class=md-nav__link> <span class=md-ellipsis> Maintenance </span> </a> <nav class=md-nav aria-label=Maintenance> <ul class=md-nav__list> <li class=md-nav__item> <a href=#regular-health-checks class=md-nav__link> <span class=md-ellipsis> Regular Health Checks </span> </a> </li> <li class=md-nav__item> <a href=#log-rotation class=md-nav__link> <span class=md-ellipsis> Log Rotation </span> </a> </li> <li class=md-nav__item> <a href=#backup-configuration class=md-nav__link> <span class=md-ellipsis> Backup Configuration </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#faq class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> <nav class=md-nav aria-label=FAQ> <ul class=md-nav__list> <li class=md-nav__item> <a href=#general-questions class=md-nav__link> <span class=md-ellipsis> General Questions </span> </a> <nav class=md-nav aria-label="General Questions"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#q-what-is-mcp-server class=md-nav__link> <span class=md-ellipsis> Q: What is MCP Server? </span> </a> </li> <li class=md-nav__item> <a href=#q-what-are-the-system-requirements class=md-nav__link> <span class=md-ellipsis> Q: What are the system requirements? </span> </a> </li> <li class=md-nav__item> <a href=#q-how-do-i-update-mcp-server class=md-nav__link> <span class=md-ellipsis> Q: How do I update MCP Server? </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#integration-questions class=md-nav__link> <span class=md-ellipsis> Integration Questions </span> </a> <nav class=md-nav aria-label="Integration Questions"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#q-can-i-use-mcp-server-with-any-home-assistant-instance class=md-nav__link> <span class=md-ellipsis> Q: Can I use MCP Server with any Home Assistant instance? </span> </a> </li> <li class=md-nav__item> <a href=#q-does-mcp-server-support-all-home-assistant-integrations class=md-nav__link> <span class=md-ellipsis> Q: Does MCP Server support all Home Assistant integrations? </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#security-questions class=md-nav__link> <span class=md-ellipsis> Security Questions </span> </a> <nav class=md-nav aria-label="Security Questions"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#q-is-my-home-assistant-token-secure class=md-nav__link> <span class=md-ellipsis> Q: Is my Home Assistant token secure? </span> </a> </li> <li class=md-nav__item> <a href=#q-can-i-use-mcp-server-remotely class=md-nav__link> <span class=md-ellipsis> Q: Can I use MCP Server remotely? </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#troubleshooting-questions class=md-nav__link> <span class=md-ellipsis> Troubleshooting Questions </span> </a> <nav class=md-nav aria-label="Troubleshooting Questions"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#q-why-are-my-device-states-not-updating class=md-nav__link> <span class=md-ellipsis> Q: Why are my device states not updating? </span> </a> </li> <li class=md-nav__item> <a href=#q-why-are-my-commands-not-working class=md-nav__link> <span class=md-ellipsis> Q: Why are my commands not working? </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=deployment.html class=md-nav__link> <span class=md-ellipsis> Deployment </span> </a> </li> <li class=md-nav__item> <a href=roadmap.html class=md-nav__link> <span class=md-ellipsis> Roadmap </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--pruned md-nav__item--nested"> <a href=examples/index.html class=md-nav__link> <span class=md-ellipsis> Examples </span> <span class="md-nav__icon md-icon"></span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <h1 id=troubleshooting-guide>Troubleshooting Guide 🔧</h1> <p>This guide helps you diagnose and resolve common issues with MCP Server.</p> <h2 id=quick-diagnostics>Quick Diagnostics</h2> <h3 id=health-check>Health Check</h3> <p>First, verify the server's health:</p> <div class="language-bash highlight"><pre><span></span><code><span id=__span-0-1><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a>curl<span class=w> </span>http://localhost:3000/health
|
|
</span></code></pre></div> <p>Expected response: <div class="language-json highlight"><pre><span></span><code><span id=__span-1-1><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=p>{</span>
|
|
</span><span id=__span-1-2><a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a><span class=w> </span><span class=nt>"status"</span><span class=p>:</span><span class=w> </span><span class=s2>"healthy"</span><span class=p>,</span>
|
|
</span><span id=__span-1-3><a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=w> </span><span class=nt>"version"</span><span class=p>:</span><span class=w> </span><span class=s2>"1.0.0"</span><span class=p>,</span>
|
|
</span><span id=__span-1-4><a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a><span class=w> </span><span class=nt>"uptime"</span><span class=p>:</span><span class=w> </span><span class=mi>3600</span><span class=p>,</span>
|
|
</span><span id=__span-1-5><a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a><span class=w> </span><span class=nt>"homeAssistant"</span><span class=p>:</span><span class=w> </span><span class=p>{</span>
|
|
</span><span id=__span-1-6><a id=__codelineno-1-6 name=__codelineno-1-6 href=#__codelineno-1-6></a><span class=w> </span><span class=nt>"connected"</span><span class=p>:</span><span class=w> </span><span class=kc>true</span><span class=p>,</span>
|
|
</span><span id=__span-1-7><a id=__codelineno-1-7 name=__codelineno-1-7 href=#__codelineno-1-7></a><span class=w> </span><span class=nt>"version"</span><span class=p>:</span><span class=w> </span><span class=s2>"2024.1.0"</span>
|
|
</span><span id=__span-1-8><a id=__codelineno-1-8 name=__codelineno-1-8 href=#__codelineno-1-8></a><span class=w> </span><span class=p>}</span>
|
|
</span><span id=__span-1-9><a id=__codelineno-1-9 name=__codelineno-1-9 href=#__codelineno-1-9></a><span class=p>}</span>
|
|
</span></code></pre></div></p> <h2 id=common-issues>Common Issues</h2> <h3 id=1-connection-issues>1. Connection Issues</h3> <h4 id=cannot-connect-to-mcp-server>Cannot Connect to MCP Server</h4> <p><strong>Symptoms:</strong> - Server not responding - Connection refused errors - Timeout errors</p> <p><strong>Solutions:</strong></p> <ol> <li> <p>Check if the server is running: <div class="language-bash highlight"><pre><span></span><code><span id=__span-2-1><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=c1># For Docker installation</span>
|
|
</span><span id=__span-2-2><a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a>docker<span class=w> </span>compose<span class=w> </span>ps
|
|
</span><span id=__span-2-3><a id=__codelineno-2-3 name=__codelineno-2-3 href=#__codelineno-2-3></a>
|
|
</span><span id=__span-2-4><a id=__codelineno-2-4 name=__codelineno-2-4 href=#__codelineno-2-4></a><span class=c1># For manual installation</span>
|
|
</span><span id=__span-2-5><a id=__codelineno-2-5 name=__codelineno-2-5 href=#__codelineno-2-5></a>ps<span class=w> </span>aux<span class=w> </span><span class=p>|</span><span class=w> </span>grep<span class=w> </span>mcp
|
|
</span></code></pre></div></p> </li> <li> <p>Verify port availability: <div class="language-bash highlight"><pre><span></span><code><span id=__span-3-1><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=c1># Check if port is in use</span>
|
|
</span><span id=__span-3-2><a id=__codelineno-3-2 name=__codelineno-3-2 href=#__codelineno-3-2></a>netstat<span class=w> </span>-tuln<span class=w> </span><span class=p>|</span><span class=w> </span>grep<span class=w> </span><span class=m>3000</span>
|
|
</span></code></pre></div></p> </li> <li> <p>Check logs: <div class="language-bash highlight"><pre><span></span><code><span id=__span-4-1><a id=__codelineno-4-1 name=__codelineno-4-1 href=#__codelineno-4-1></a><span class=c1># Docker logs</span>
|
|
</span><span id=__span-4-2><a id=__codelineno-4-2 name=__codelineno-4-2 href=#__codelineno-4-2></a>docker<span class=w> </span>compose<span class=w> </span>logs<span class=w> </span>mcp
|
|
</span><span id=__span-4-3><a id=__codelineno-4-3 name=__codelineno-4-3 href=#__codelineno-4-3></a>
|
|
</span><span id=__span-4-4><a id=__codelineno-4-4 name=__codelineno-4-4 href=#__codelineno-4-4></a><span class=c1># Manual installation logs</span>
|
|
</span><span id=__span-4-5><a id=__codelineno-4-5 name=__codelineno-4-5 href=#__codelineno-4-5></a>bun<span class=w> </span>run<span class=w> </span>dev
|
|
</span></code></pre></div></p> </li> </ol> <h4 id=home-assistant-connection-failed>Home Assistant Connection Failed</h4> <p><strong>Symptoms:</strong> - "Connection Error" in health check - Cannot control devices - State updates not working</p> <p><strong>Solutions:</strong></p> <ol> <li> <p>Verify Home Assistant URL and token in <code>.env</code>: <div class="language-text highlight"><pre><span></span><code><span id=__span-5-1><a id=__codelineno-5-1 name=__codelineno-5-1 href=#__codelineno-5-1></a>HA_URL=http://homeassistant:8123
|
|
</span><span id=__span-5-2><a id=__codelineno-5-2 name=__codelineno-5-2 href=#__codelineno-5-2></a>HA_TOKEN=your_long_lived_access_token
|
|
</span></code></pre></div></p> </li> <li> <p>Test Home Assistant connection: <div class="language-bash highlight"><pre><span></span><code><span id=__span-6-1><a id=__codelineno-6-1 name=__codelineno-6-1 href=#__codelineno-6-1></a>curl<span class=w> </span>-H<span class=w> </span><span class=s2>"Authorization: Bearer YOUR_HA_TOKEN"</span><span class=w> </span><span class=se>\</span>
|
|
</span><span id=__span-6-2><a id=__codelineno-6-2 name=__codelineno-6-2 href=#__codelineno-6-2></a><span class=w> </span>http://your-homeassistant:8123/api/
|
|
</span></code></pre></div></p> </li> <li> <p>Check network connectivity: <div class="language-bash highlight"><pre><span></span><code><span id=__span-7-1><a id=__codelineno-7-1 name=__codelineno-7-1 href=#__codelineno-7-1></a><span class=c1># For Docker setup</span>
|
|
</span><span id=__span-7-2><a id=__codelineno-7-2 name=__codelineno-7-2 href=#__codelineno-7-2></a>docker<span class=w> </span>compose<span class=w> </span><span class=nb>exec</span><span class=w> </span>mcp<span class=w> </span>ping<span class=w> </span>homeassistant
|
|
</span></code></pre></div></p> </li> </ol> <h3 id=2-authentication-issues>2. Authentication Issues</h3> <h4 id=invalid-token>Invalid Token</h4> <p><strong>Symptoms:</strong> - 401 Unauthorized responses - "Invalid token" errors</p> <p><strong>Solutions:</strong></p> <ol> <li> <p>Generate a new token: <div class="language-bash highlight"><pre><span></span><code><span id=__span-8-1><a id=__codelineno-8-1 name=__codelineno-8-1 href=#__codelineno-8-1></a>curl<span class=w> </span>-X<span class=w> </span>POST<span class=w> </span>http://localhost:3000/auth/token<span class=w> </span><span class=se>\</span>
|
|
</span><span id=__span-8-2><a id=__codelineno-8-2 name=__codelineno-8-2 href=#__codelineno-8-2></a><span class=w> </span>-H<span class=w> </span><span class=s2>"Content-Type: application/json"</span><span class=w> </span><span class=se>\</span>
|
|
</span><span id=__span-8-3><a id=__codelineno-8-3 name=__codelineno-8-3 href=#__codelineno-8-3></a><span class=w> </span>-d<span class=w> </span><span class=s1>'{"username": "your_username", "password": "your_password"}'</span>
|
|
</span></code></pre></div></p> </li> <li> <p>Verify token format: <div class="language-javascript highlight"><pre><span></span><code><span id=__span-9-1><a id=__codelineno-9-1 name=__codelineno-9-1 href=#__codelineno-9-1></a><span class=c1>// Token should be in format:</span>
|
|
</span><span id=__span-9-2><a id=__codelineno-9-2 name=__codelineno-9-2 href=#__codelineno-9-2></a><span class=nx>Authorization</span><span class=o>:</span><span class=w> </span><span class=nx>Bearer</span><span class=w> </span><span class=nx>eyJhbGciOiJIUzI1NiIs</span><span class=p>...</span>
|
|
</span></code></pre></div></p> </li> </ol> <h4 id=rate-limiting>Rate Limiting</h4> <p><strong>Symptoms:</strong> - 429 Too Many Requests - "Rate limit exceeded" errors</p> <p><strong>Solutions:</strong></p> <ol> <li> <p>Check current rate limit status: <div class="language-bash highlight"><pre><span></span><code><span id=__span-10-1><a id=__codelineno-10-1 name=__codelineno-10-1 href=#__codelineno-10-1></a>curl<span class=w> </span>-I<span class=w> </span>http://localhost:3000/api/state
|
|
</span></code></pre></div></p> </li> <li> <p>Adjust rate limits in configuration: <div class="language-yaml highlight"><pre><span></span><code><span id=__span-11-1><a id=__codelineno-11-1 name=__codelineno-11-1 href=#__codelineno-11-1></a><span class=nt>security</span><span class=p>:</span>
|
|
</span><span id=__span-11-2><a id=__codelineno-11-2 name=__codelineno-11-2 href=#__codelineno-11-2></a><span class=w> </span><span class=nt>rateLimit</span><span class=p>:</span><span class=w> </span><span class="l l-Scalar l-Scalar-Plain">100</span><span class=w> </span><span class=c1># Increase if needed</span>
|
|
</span><span id=__span-11-3><a id=__codelineno-11-3 name=__codelineno-11-3 href=#__codelineno-11-3></a><span class=w> </span><span class=nt>rateLimitWindow</span><span class=p>:</span><span class=w> </span><span class="l l-Scalar l-Scalar-Plain">60000</span><span class=w> </span><span class=c1># Window in milliseconds</span>
|
|
</span></code></pre></div></p> </li> </ol> <h3 id=3-real-time-updates-issues>3. Real-time Updates Issues</h3> <h4 id=sse-connection-drops>SSE Connection Drops</h4> <p><strong>Symptoms:</strong> - Frequent disconnections - Missing state updates - EventSource errors</p> <p><strong>Solutions:</strong></p> <ol> <li> <p>Implement proper reconnection logic: <div class="language-javascript highlight"><pre><span></span><code><span id=__span-12-1><a id=__codelineno-12-1 name=__codelineno-12-1 href=#__codelineno-12-1></a><span class=kd>class</span><span class=w> </span><span class=nx>SSEClient</span><span class=w> </span><span class=p>{</span>
|
|
</span><span id=__span-12-2><a id=__codelineno-12-2 name=__codelineno-12-2 href=#__codelineno-12-2></a><span class=w> </span><span class=kr>constructor</span><span class=p>()</span><span class=w> </span><span class=p>{</span>
|
|
</span><span id=__span-12-3><a id=__codelineno-12-3 name=__codelineno-12-3 href=#__codelineno-12-3></a><span class=w> </span><span class=k>this</span><span class=p>.</span><span class=nx>connect</span><span class=p>();</span>
|
|
</span><span id=__span-12-4><a id=__codelineno-12-4 name=__codelineno-12-4 href=#__codelineno-12-4></a><span class=w> </span><span class=p>}</span>
|
|
</span><span id=__span-12-5><a id=__codelineno-12-5 name=__codelineno-12-5 href=#__codelineno-12-5></a>
|
|
</span><span id=__span-12-6><a id=__codelineno-12-6 name=__codelineno-12-6 href=#__codelineno-12-6></a><span class=w> </span><span class=nx>connect</span><span class=p>()</span><span class=w> </span><span class=p>{</span>
|
|
</span><span id=__span-12-7><a id=__codelineno-12-7 name=__codelineno-12-7 href=#__codelineno-12-7></a><span class=w> </span><span class=k>this</span><span class=p>.</span><span class=nx>eventSource</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=ow>new</span><span class=w> </span><span class=nx>EventSource</span><span class=p>(</span><span class=s1>'/subscribe_events'</span><span class=p>);</span>
|
|
</span><span id=__span-12-8><a id=__codelineno-12-8 name=__codelineno-12-8 href=#__codelineno-12-8></a><span class=w> </span><span class=k>this</span><span class=p>.</span><span class=nx>eventSource</span><span class=p>.</span><span class=nx>onerror</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=k>this</span><span class=p>.</span><span class=nx>handleError</span><span class=p>.</span><span class=nx>bind</span><span class=p>(</span><span class=k>this</span><span class=p>);</span>
|
|
</span><span id=__span-12-9><a id=__codelineno-12-9 name=__codelineno-12-9 href=#__codelineno-12-9></a><span class=w> </span><span class=p>}</span>
|
|
</span><span id=__span-12-10><a id=__codelineno-12-10 name=__codelineno-12-10 href=#__codelineno-12-10></a>
|
|
</span><span id=__span-12-11><a id=__codelineno-12-11 name=__codelineno-12-11 href=#__codelineno-12-11></a><span class=w> </span><span class=nx>handleError</span><span class=p>(</span><span class=nx>error</span><span class=p>)</span><span class=w> </span><span class=p>{</span>
|
|
</span><span id=__span-12-12><a id=__codelineno-12-12 name=__codelineno-12-12 href=#__codelineno-12-12></a><span class=w> </span><span class=nx>console</span><span class=p>.</span><span class=nx>error</span><span class=p>(</span><span class=s1>'SSE Error:'</span><span class=p>,</span><span class=w> </span><span class=nx>error</span><span class=p>);</span>
|
|
</span><span id=__span-12-13><a id=__codelineno-12-13 name=__codelineno-12-13 href=#__codelineno-12-13></a><span class=w> </span><span class=k>this</span><span class=p>.</span><span class=nx>eventSource</span><span class=p>.</span><span class=nx>close</span><span class=p>();</span>
|
|
</span><span id=__span-12-14><a id=__codelineno-12-14 name=__codelineno-12-14 href=#__codelineno-12-14></a><span class=w> </span><span class=nx>setTimeout</span><span class=p>(()</span><span class=w> </span><span class=p>=></span><span class=w> </span><span class=k>this</span><span class=p>.</span><span class=nx>connect</span><span class=p>(),</span><span class=w> </span><span class=mf>1000</span><span class=p>);</span>
|
|
</span><span id=__span-12-15><a id=__codelineno-12-15 name=__codelineno-12-15 href=#__codelineno-12-15></a><span class=w> </span><span class=p>}</span>
|
|
</span><span id=__span-12-16><a id=__codelineno-12-16 name=__codelineno-12-16 href=#__codelineno-12-16></a><span class=p>}</span>
|
|
</span></code></pre></div></p> </li> <li> <p>Check network stability: <div class="language-bash highlight"><pre><span></span><code><span id=__span-13-1><a id=__codelineno-13-1 name=__codelineno-13-1 href=#__codelineno-13-1></a><span class=c1># Monitor connection stability</span>
|
|
</span><span id=__span-13-2><a id=__codelineno-13-2 name=__codelineno-13-2 href=#__codelineno-13-2></a>ping<span class=w> </span>-c<span class=w> </span><span class=m>100</span><span class=w> </span>localhost
|
|
</span></code></pre></div></p> </li> </ol> <h3 id=4-performance-issues>4. Performance Issues</h3> <h4 id=high-latency>High Latency</h4> <p><strong>Symptoms:</strong> - Slow response times - Command execution delays - UI lag</p> <p><strong>Solutions:</strong></p> <ol> <li> <p>Enable Redis caching: <div class="language-text highlight"><pre><span></span><code><span id=__span-14-1><a id=__codelineno-14-1 name=__codelineno-14-1 href=#__codelineno-14-1></a>REDIS_ENABLED=true
|
|
</span><span id=__span-14-2><a id=__codelineno-14-2 name=__codelineno-14-2 href=#__codelineno-14-2></a>REDIS_URL=redis://localhost:6379
|
|
</span></code></pre></div></p> </li> <li> <p>Monitor system resources: <div class="language-bash highlight"><pre><span></span><code><span id=__span-15-1><a id=__codelineno-15-1 name=__codelineno-15-1 href=#__codelineno-15-1></a><span class=c1># Check CPU and memory usage</span>
|
|
</span><span id=__span-15-2><a id=__codelineno-15-2 name=__codelineno-15-2 href=#__codelineno-15-2></a>docker<span class=w> </span>stats
|
|
</span><span id=__span-15-3><a id=__codelineno-15-3 name=__codelineno-15-3 href=#__codelineno-15-3></a>
|
|
</span><span id=__span-15-4><a id=__codelineno-15-4 name=__codelineno-15-4 href=#__codelineno-15-4></a><span class=c1># Or for manual installation</span>
|
|
</span><span id=__span-15-5><a id=__codelineno-15-5 name=__codelineno-15-5 href=#__codelineno-15-5></a>top<span class=w> </span>-p<span class=w> </span><span class=k>$(</span>pgrep<span class=w> </span>-f<span class=w> </span>mcp<span class=k>)</span>
|
|
</span></code></pre></div></p> </li> <li> <p>Optimize database queries and caching: <div class="language-typescript highlight"><pre><span></span><code><span id=__span-16-1><a id=__codelineno-16-1 name=__codelineno-16-1 href=#__codelineno-16-1></a><span class=c1>// Use batch operations</span>
|
|
</span><span id=__span-16-2><a id=__codelineno-16-2 name=__codelineno-16-2 href=#__codelineno-16-2></a><span class=kd>const</span><span class=w> </span><span class=nx>results</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=k>await</span><span class=w> </span><span class=nb>Promise</span><span class=p>.</span><span class=nx>all</span><span class=p>([</span>
|
|
</span><span id=__span-16-3><a id=__codelineno-16-3 name=__codelineno-16-3 href=#__codelineno-16-3></a><span class=w> </span><span class=nx>cache</span><span class=p>.</span><span class=nx>get</span><span class=p>(</span><span class=s1>'key1'</span><span class=p>),</span>
|
|
</span><span id=__span-16-4><a id=__codelineno-16-4 name=__codelineno-16-4 href=#__codelineno-16-4></a><span class=w> </span><span class=nx>cache</span><span class=p>.</span><span class=nx>get</span><span class=p>(</span><span class=s1>'key2'</span><span class=p>)</span>
|
|
</span><span id=__span-16-5><a id=__codelineno-16-5 name=__codelineno-16-5 href=#__codelineno-16-5></a><span class=p>]);</span>
|
|
</span></code></pre></div></p> </li> </ol> <h3 id=5-device-control-issues>5. Device Control Issues</h3> <h4 id=commands-not-executing>Commands Not Executing</h4> <p><strong>Symptoms:</strong> - Commands appear successful but no device response - Inconsistent device states - Error messages from Home Assistant</p> <p><strong>Solutions:</strong></p> <ol> <li> <p>Verify device availability: <div class="language-bash highlight"><pre><span></span><code><span id=__span-17-1><a id=__codelineno-17-1 name=__codelineno-17-1 href=#__codelineno-17-1></a>curl<span class=w> </span>http://localhost:3000/api/state/light.living_room
|
|
</span></code></pre></div></p> </li> <li> <p>Check command syntax: <div class="language-bash highlight"><pre><span></span><code><span id=__span-18-1><a id=__codelineno-18-1 name=__codelineno-18-1 href=#__codelineno-18-1></a><span class=c1># Test basic command</span>
|
|
</span><span id=__span-18-2><a id=__codelineno-18-2 name=__codelineno-18-2 href=#__codelineno-18-2></a>curl<span class=w> </span>-X<span class=w> </span>POST<span class=w> </span>http://localhost:3000/api/command<span class=w> </span><span class=se>\</span>
|
|
</span><span id=__span-18-3><a id=__codelineno-18-3 name=__codelineno-18-3 href=#__codelineno-18-3></a><span class=w> </span>-H<span class=w> </span><span class=s2>"Content-Type: application/json"</span><span class=w> </span><span class=se>\</span>
|
|
</span><span id=__span-18-4><a id=__codelineno-18-4 name=__codelineno-18-4 href=#__codelineno-18-4></a><span class=w> </span>-d<span class=w> </span><span class=s1>'{"command": "Turn on living room lights"}'</span>
|
|
</span></code></pre></div></p> </li> <li> <p>Review Home Assistant logs: <div class="language-bash highlight"><pre><span></span><code><span id=__span-19-1><a id=__codelineno-19-1 name=__codelineno-19-1 href=#__codelineno-19-1></a>docker<span class=w> </span>compose<span class=w> </span><span class=nb>exec</span><span class=w> </span>homeassistant<span class=w> </span>journalctl<span class=w> </span>-f
|
|
</span></code></pre></div></p> </li> </ol> <h2 id=debugging-tools>Debugging Tools</h2> <h3 id=log-analysis>Log Analysis</h3> <p>Enable debug logging:</p> <div class="language-text highlight"><pre><span></span><code><span id=__span-20-1><a id=__codelineno-20-1 name=__codelineno-20-1 href=#__codelineno-20-1></a>LOG_LEVEL=debug
|
|
</span><span id=__span-20-2><a id=__codelineno-20-2 name=__codelineno-20-2 href=#__codelineno-20-2></a>DEBUG=mcp:*
|
|
</span></code></pre></div> <h3 id=network-debugging>Network Debugging</h3> <p>Monitor network traffic:</p> <div class="language-bash highlight"><pre><span></span><code><span id=__span-21-1><a id=__codelineno-21-1 name=__codelineno-21-1 href=#__codelineno-21-1></a><span class=c1># TCP dump for API traffic</span>
|
|
</span><span id=__span-21-2><a id=__codelineno-21-2 name=__codelineno-21-2 href=#__codelineno-21-2></a>tcpdump<span class=w> </span>-i<span class=w> </span>any<span class=w> </span>port<span class=w> </span><span class=m>3000</span><span class=w> </span>-w<span class=w> </span>debug.pcap
|
|
</span></code></pre></div> <h3 id=performance-profiling>Performance Profiling</h3> <p>Enable performance monitoring:</p> <div class="language-text highlight"><pre><span></span><code><span id=__span-22-1><a id=__codelineno-22-1 name=__codelineno-22-1 href=#__codelineno-22-1></a>ENABLE_METRICS=true
|
|
</span><span id=__span-22-2><a id=__codelineno-22-2 name=__codelineno-22-2 href=#__codelineno-22-2></a>METRICS_PORT=9090
|
|
</span></code></pre></div> <h2 id=getting-help>Getting Help</h2> <p>If you're still experiencing issues:</p> <ol> <li>Check the <a href=https://github.com/jango-blockchained/advanced-homeassistant-mcp/issues>GitHub Issues</a></li> <li>Search <a href=https://github.com/jango-blockchained/advanced-homeassistant-mcp/discussions>Discussions</a></li> <li>Create a new issue with:</li> <li>Detailed description</li> <li>Logs</li> <li>Configuration (sanitized)</li> <li>Steps to reproduce</li> </ol> <h2 id=maintenance>Maintenance</h2> <h3 id=regular-health-checks>Regular Health Checks</h3> <p>Run periodic health checks:</p> <div class="language-bash highlight"><pre><span></span><code><span id=__span-23-1><a id=__codelineno-23-1 name=__codelineno-23-1 href=#__codelineno-23-1></a><span class=c1># Create a cron job</span>
|
|
</span><span id=__span-23-2><a id=__codelineno-23-2 name=__codelineno-23-2 href=#__codelineno-23-2></a>*/5<span class=w> </span>*<span class=w> </span>*<span class=w> </span>*<span class=w> </span>*<span class=w> </span>curl<span class=w> </span>-f<span class=w> </span>http://localhost:3000/health<span class=w> </span><span class=o>||</span><span class=w> </span>notify-admin
|
|
</span></code></pre></div> <h3 id=log-rotation>Log Rotation</h3> <p>Configure log rotation:</p> <div class="language-yaml highlight"><pre><span></span><code><span id=__span-24-1><a id=__codelineno-24-1 name=__codelineno-24-1 href=#__codelineno-24-1></a><span class=nt>logging</span><span class=p>:</span>
|
|
</span><span id=__span-24-2><a id=__codelineno-24-2 name=__codelineno-24-2 href=#__codelineno-24-2></a><span class=w> </span><span class=nt>maxSize</span><span class=p>:</span><span class=w> </span><span class=s>"100m"</span>
|
|
</span><span id=__span-24-3><a id=__codelineno-24-3 name=__codelineno-24-3 href=#__codelineno-24-3></a><span class=w> </span><span class=nt>maxFiles</span><span class=p>:</span><span class=w> </span><span class=s>"7d"</span>
|
|
</span><span id=__span-24-4><a id=__codelineno-24-4 name=__codelineno-24-4 href=#__codelineno-24-4></a><span class=w> </span><span class=nt>compress</span><span class=p>:</span><span class=w> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
|
|
</span></code></pre></div> <h3 id=backup-configuration>Backup Configuration</h3> <p>Regularly backup your configuration:</p> <div class="language-bash highlight"><pre><span></span><code><span id=__span-25-1><a id=__codelineno-25-1 name=__codelineno-25-1 href=#__codelineno-25-1></a><span class=c1># Backup script</span>
|
|
</span><span id=__span-25-2><a id=__codelineno-25-2 name=__codelineno-25-2 href=#__codelineno-25-2></a>tar<span class=w> </span>-czf<span class=w> </span>mcp-backup-<span class=k>$(</span>date<span class=w> </span>+%Y%m%d<span class=k>)</span>.tar.gz<span class=w> </span><span class=se>\</span>
|
|
</span><span id=__span-25-3><a id=__codelineno-25-3 name=__codelineno-25-3 href=#__codelineno-25-3></a><span class=w> </span>.env<span class=w> </span><span class=se>\</span>
|
|
</span><span id=__span-25-4><a id=__codelineno-25-4 name=__codelineno-25-4 href=#__codelineno-25-4></a><span class=w> </span>config/<span class=w> </span><span class=se>\</span>
|
|
</span><span id=__span-25-5><a id=__codelineno-25-5 name=__codelineno-25-5 href=#__codelineno-25-5></a><span class=w> </span>data/
|
|
</span></code></pre></div> <h2 id=faq>FAQ</h2> <h3 id=general-questions>General Questions</h3> <h4 id=q-what-is-mcp-server>Q: What is MCP Server?</h4> <p>A: MCP Server is a bridge between Home Assistant and Language Learning Models, enabling natural language control and automation of your smart home devices.</p> <h4 id=q-what-are-the-system-requirements>Q: What are the system requirements?</h4> <p>A: MCP Server requires: - Node.js 16 or higher - Home Assistant instance - 1GB RAM minimum - 1GB disk space</p> <h4 id=q-how-do-i-update-mcp-server>Q: How do I update MCP Server?</h4> <p>A: For Docker installation: <div class="language-bash highlight"><pre><span></span><code><span id=__span-26-1><a id=__codelineno-26-1 name=__codelineno-26-1 href=#__codelineno-26-1></a>docker<span class=w> </span>compose<span class=w> </span>pull
|
|
</span><span id=__span-26-2><a id=__codelineno-26-2 name=__codelineno-26-2 href=#__codelineno-26-2></a>docker<span class=w> </span>compose<span class=w> </span>up<span class=w> </span>-d
|
|
</span></code></pre></div> For manual installation: <div class="language-bash highlight"><pre><span></span><code><span id=__span-27-1><a id=__codelineno-27-1 name=__codelineno-27-1 href=#__codelineno-27-1></a>git<span class=w> </span>pull
|
|
</span><span id=__span-27-2><a id=__codelineno-27-2 name=__codelineno-27-2 href=#__codelineno-27-2></a>bun<span class=w> </span>install
|
|
</span><span id=__span-27-3><a id=__codelineno-27-3 name=__codelineno-27-3 href=#__codelineno-27-3></a>bun<span class=w> </span>run<span class=w> </span>build
|
|
</span></code></pre></div></p> <h3 id=integration-questions>Integration Questions</h3> <h4 id=q-can-i-use-mcp-server-with-any-home-assistant-instance>Q: Can I use MCP Server with any Home Assistant instance?</h4> <p>A: Yes, MCP Server works with any Home Assistant instance that has the REST API enabled and a valid long-lived access token.</p> <h4 id=q-does-mcp-server-support-all-home-assistant-integrations>Q: Does MCP Server support all Home Assistant integrations?</h4> <p>A: MCP Server supports all Home Assistant devices and services that are accessible via the REST API.</p> <h3 id=security-questions>Security Questions</h3> <h4 id=q-is-my-home-assistant-token-secure>Q: Is my Home Assistant token secure?</h4> <p>A: Yes, your Home Assistant token is stored securely and only used for authenticated communication between MCP Server and your Home Assistant instance.</p> <h4 id=q-can-i-use-mcp-server-remotely>Q: Can I use MCP Server remotely?</h4> <p>A: Yes, but we recommend using a secure connection (HTTPS) and proper authentication when exposing MCP Server to the internet.</p> <h3 id=troubleshooting-questions>Troubleshooting Questions</h3> <h4 id=q-why-are-my-device-states-not-updating>Q: Why are my device states not updating?</h4> <p>A: Check: 1. Home Assistant connection 2. WebSocket connection status 3. Device availability in Home Assistant 4. Network connectivity</p> <h4 id=q-why-are-my-commands-not-working>Q: Why are my commands not working?</h4> <p>A: Verify: 1. Command syntax 2. Device availability 3. User permissions 4. Home Assistant API access </p> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">February 5, 2025</span> </span> <span class=md-source-file__fact> <span class=md-icon title=Created> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M14.47 15.08 11 13V7h1.5v5.25l3.08 1.83c-.41.28-.79.62-1.11 1m-1.39 4.84c-.36.05-.71.08-1.08.08-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8c0 .37-.03.72-.08 1.08.69.1 1.33.32 1.92.64.1-.56.16-1.13.16-1.72 0-5.5-4.5-10-10-10S2 6.5 2 12s4.47 10 10 10c.59 0 1.16-.06 1.72-.16-.32-.59-.54-1.23-.64-1.92M18 15v3h-3v2h3v3h2v-3h3v-2h-3v-3z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">February 4, 2025</span> </span> </aside> <form class=md-feedback name=feedback hidden> <fieldset> <legend class=md-feedback__title> Was this page helpful? </legend> <div class=md-feedback__inner> <div class=md-feedback__list> <button class="md-feedback__icon md-icon" type=submit title="This page was helpful" data-md-value=1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 12a8 8 0 0 0-8-8 8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8m2 0a10 10 0 0 1-10 10A10 10 0 0 1 2 12 10 10 0 0 1 12 2a10 10 0 0 1 10 10M10 9.5c0 .8-.7 1.5-1.5 1.5S7 10.3 7 9.5 7.7 8 8.5 8s1.5.7 1.5 1.5m7 0c0 .8-.7 1.5-1.5 1.5S14 10.3 14 9.5 14.7 8 15.5 8s1.5.7 1.5 1.5m-5 7.73c-1.75 0-3.29-.73-4.19-1.81L9.23 14c.45.72 1.52 1.23 2.77 1.23s2.32-.51 2.77-1.23l1.42 1.42c-.9 1.08-2.44 1.81-4.19 1.81"/></svg> </button> <button class="md-feedback__icon md-icon" type=submit title="This page could be improved" data-md-value=0> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 12a8 8 0 0 0-8-8 8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8m2 0a10 10 0 0 1-10 10A10 10 0 0 1 2 12 10 10 0 0 1 12 2a10 10 0 0 1 10 10m-6.5-4c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5-1.5-.7-1.5-1.5.7-1.5 1.5-1.5M10 9.5c0 .8-.7 1.5-1.5 1.5S7 10.3 7 9.5 7.7 8 8.5 8s1.5.7 1.5 1.5m2 4.5c1.75 0 3.29.72 4.19 1.81l-1.42 1.42C14.32 16.5 13.25 16 12 16s-2.32.5-2.77 1.23l-1.42-1.42C8.71 14.72 10.25 14 12 14"/></svg> </button> </div> <div class=md-feedback__note> <div data-md-value=1 hidden> Thanks for your feedback! </div> <div data-md-value=0 hidden> Thanks for your feedback! Please consider creating an issue to help us improve. </div> </div> </div> </fieldset> </form> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> </main> <footer class=md-footer> <nav class="md-footer__inner md-grid" aria-label=Footer> <a href=development/test-migration-guide.html class="md-footer__link md-footer__link--prev" aria-label="Previous: Test Migration Guide"> <div class="md-footer__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </div> <div class=md-footer__title> <span class=md-footer__direction> Previous </span> <div class=md-ellipsis> Test Migration Guide </div> </div> </a> <a href=deployment.html class="md-footer__link md-footer__link--next" aria-label="Next: Deployment"> <div class=md-footer__title> <span class=md-footer__direction> Next </span> <div class=md-ellipsis> Deployment </div> </div> <div class="md-footer__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg> </div> </a> </nav> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright © 2025 jango-blockchained </div> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-social> <a href=https://github.com/jango-blockchained/homeassistant-mcp target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href=https://hub.docker.com/r/jangoblockchained/homeassistant-mcp target=_blank rel=noopener title=hub.docker.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 640 512"><!-- Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M349.9 236.3h-66.1v-59.4h66.1zm0-204.3h-66.1v60.7h66.1zm78.2 144.8H362v59.4h66.1zm-156.3-72.1h-66.1v60.1h66.1zm78.1 0h-66.1v60.1h66.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1zm78.1 0h-66.1v59.4h66.1zm-78.1-72.1h-66.1v60.1h66.1z"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <div class=md-consent data-md-component=consent id=__consent hidden> <div class=md-consent__overlay></div> <aside class=md-consent__inner> <form class="md-consent__form md-grid md-typeset" name=consent> <h4>Cookie consent</h4> <p>We use cookies to recognize your repeated visits and preferences, as well as to measure the effectiveness of our documentation and whether users find what they're searching for. With your consent, you're helping us to make our documentation better.</p> <input class=md-toggle type=checkbox id=__settings> <div class=md-consent__settings> <ul class=task-list> <li class=task-list-item> <label class=task-list-control> <input type=checkbox name=analytics checked> <span class=task-list-indicator></span> Google Analytics </label> </li> <li class=task-list-item> <label class=task-list-control> <input type=checkbox name=github checked> <span class=task-list-indicator></span> GitHub </label> </li> </ul> </div> <div class=md-consent__controls> <button class="md-button md-button--primary">Accept</button> <button type=reset class="md-button md-button--primary">Reject</button> <label class=md-button for=__settings>Manage settings</label> </div> </form> </aside> </div> <script>var consent=__md_get("__consent");if(consent)for(var input of document.forms.consent.elements)input.name&&(input.checked=consent[input.name]||!1);else"file:"!==location.protocol&&setTimeout((function(){document.querySelector("[data-md-component=consent]").hidden=!1}),250);var form=document.forms.consent;for(var action of["submit","reset"])form.addEventListener(action,(function(e){if(e.preventDefault(),"reset"===e.type)for(var n of document.forms.consent.elements)n.name&&(n.checked=!1);__md_set("__consent",Object.fromEntries(Array.from(new FormData(form).keys()).map((function(e){return[e,!0]})))),location.hash="",location.reload()}))</script> <script id=__config type=application/json>{"base": ".", "features": ["navigation.tabs", "navigation.tabs.sticky", "navigation.indexes", "navigation.sections", "navigation.expand", "navigation.path", "navigation.footer", "navigation.prune", "navigation.tracking", "navigation.instant", "header.autohide", "toc.integrate", "toc.follow", "announce.dismiss", "search.suggest", "search.highlight", "search.share", "content.code.annotate", "content.code.copy", "content.code.select", "content.tabs.link", "content.tooltips"], "search": "assets/javascripts/workers/search.f8cc74c7.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"default": "latest", "provider": "mike"}}</script> <script src=assets/javascripts/bundle.f13b1293.min.js></script> <script src=javascripts/mathjax.js></script> <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> <script src=https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js></script> <script src=javascripts/extra.js></script> </body> </html> |