From 6b9c5189b1695928f2a9f797972a3d9e05af1301 Mon Sep 17 00:00:00 2001 From: ispyisail Date: Tue, 29 Sep 2026 13:00:30 +1300 Subject: [PATCH] Offer Python with the Windows installer, for the MCP server Most Windows users have no Python, which the MCP server needs. The installer now offers "Python for the AI assistant", unticked by default: the official embeddable package from python.org (3.14.7, ~12 MB, no registry, removed with QElectroTech), in \mcp\python. The portable folder and the MSI, which pack all of files/, carry it. The workflow downloads it pinned by version and by python.org's own sha256 for the file (checked against python.org's download API), and fails the build on a mismatch. The script stays plain text beside it. Checked under Wine (64-bit, qet-wine-smoke image), on an installer built with makensis 3.10 (0 warnings, strings in all 29 languages): - a silent default install puts mcp\qet_mcp.py in place and no Python; the same installer with the section ticked by default installs it, so the check tells the two apart; - the installed Python runs the installed server: 15 tools listed, qet_project_info on an example answers as on Linux, and the server finds bin\QElectroTech.exe and elements\ by itself. Not checked: a real Windows machine; the CI download step (fork run). Co-Authored-By: Claude Opus 5.5 --- .github/workflows/windows-build.yml | 14 ++++++ build-aux/windows/QET64.nsi | 9 ++++ build-aux/windows/lang_extra.nsh | 64 ++++++++++++++++++------ build-aux/windows/lang_extra_fr.nsh | 4 +- build-aux/windows/lang_extra_missing.nsh | 48 +++++++++++++----- misc/qet-mcp/README.md | 6 ++- 6 files changed, 115 insertions(+), 30 deletions(-) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index 0338cfffd..b7ef44a9d 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -230,6 +230,20 @@ jobs: # The MCP server finds bin/QElectroTech.exe and elements/ from mcp/. mkdir -p "$FILES/mcp" cp "$GITHUB_WORKSPACE/misc/qet-mcp/qet_mcp.py" "$GITHUB_WORKSPACE/misc/qet-mcp/README.md" "$FILES/mcp/" + # Python for it, so Windows users need not install one: the official + # embeddable package, pinned by version and checksum (python.org's + # own sha256 for this file). The installer offers it unticked; the + # portable folder and the MSI carry it. + PY_EMBED_VERSION=3.14.7 + PY_EMBED_SHA256=d297e5ff019966817ad8502465176139f2d3d840fa4ed84b13bed399a6ab1f15 + PY_ZIP="$GITHUB_WORKSPACE/python-embed.zip" + curl -fsSL -o "$PY_ZIP" \ + "https://www.python.org/ftp/python/$PY_EMBED_VERSION/python-$PY_EMBED_VERSION-embed-amd64.zip" + echo "$PY_EMBED_SHA256 $PY_ZIP" | sha256sum -c - \ + || { echo "ERROR: embeddable Python checksum mismatch"; exit 1; } + python3 -m zipfile -e "$PY_ZIP" "$FILES/mcp/python" + [ -f "$FILES/mcp/python/python.exe" ] \ + || { echo "ERROR: python.exe missing from the embeddable package"; exit 1; } # --- Translations --- # Since PR #751 the .qm files are no longer tracked in git: lrelease diff --git a/build-aux/windows/QET64.nsi b/build-aux/windows/QET64.nsi index b1967b08f..fe1522457 100644 --- a/build-aux/windows/QET64.nsi +++ b/build-aux/windows/QET64.nsi @@ -281,6 +281,14 @@ Section "$(Mcp)" SEC06 File /nonfatal "./files/mcp/*" SectionEnd +; Python for the MCP server, from python.org (about 12 MB). Unticked by +; default: only someone setting up an AI assistant needs it, and then only +; without a Python of their own. Uninstall removes it with $INSTDIR. +Section /o "$(McpPython)" SEC07 + SetOutPath "$INSTDIR\mcp\python" + File /nonfatal /r "./files/mcp/python/*" +SectionEnd + ;-------------------------------- ; Component descriptions !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN @@ -290,6 +298,7 @@ SectionEnd !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $(var4) !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} $(var5) !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} $(var6) + !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} $(var7) !insertmacro MUI_FUNCTION_DESCRIPTION_END ;-------------------------------- diff --git a/build-aux/windows/lang_extra.nsh b/build-aux/windows/lang_extra.nsh index 2f51fafa6..2c6dcb45c 100644 --- a/build-aux/windows/lang_extra.nsh +++ b/build-aux/windows/lang_extra.nsh @@ -20,7 +20,9 @@ LangString var4 ${LANG_ENGLISH} "Examples of diagrams" LangString var5 ${LANG_ENGLISH} "Fonts" LangString Mcp ${LANG_ENGLISH} "AI assistant (MCP)" - LangString var6 ${LANG_ENGLISH} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_ENGLISH} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_ENGLISH} "Python for the AI assistant" + LangString var7 ${LANG_ENGLISH} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_ENGLISH} "Uninstallation of the previous version failed.$\nPlease uninstall ${SOFT_NAME} manually before continuing." @@ -46,7 +48,9 @@ LangString var4 ${LANG_KOREAN} "도면 예제" LangString var5 ${LANG_KOREAN} "글꼴" LangString Mcp ${LANG_KOREAN} "AI assistant (MCP)" - LangString var6 ${LANG_KOREAN} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_KOREAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_KOREAN} "Python for the AI assistant" + LangString var7 ${LANG_KOREAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_KOREAN} "이전 버전을 제거하지 못했습니다.$\n계속하기 전에 ${SOFT_NAME}을(를) 수동으로 제거해 주세요." @@ -72,7 +76,9 @@ LangString var4 ${LANG_POLISH} "Przykłady schematów" LangString var5 ${LANG_POLISH} "Czcionki" LangString Mcp ${LANG_POLISH} "AI assistant (MCP)" - LangString var6 ${LANG_POLISH} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_POLISH} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_POLISH} "Python for the AI assistant" + LangString var7 ${LANG_POLISH} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_POLISH} "Odinstalowanie poprzedniej wersji nie powiodło się.$\nPrzed kontynuowaniem odinstaluj ręcznie program ${SOFT_NAME}." @@ -98,7 +104,9 @@ LangString var4 ${LANG_GREEK} "Παραδείγματα διαγραμμάτων" LangString var5 ${LANG_GREEK} "Γραμματοσειρές" LangString Mcp ${LANG_GREEK} "AI assistant (MCP)" - LangString var6 ${LANG_GREEK} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_GREEK} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_GREEK} "Python for the AI assistant" + LangString var7 ${LANG_GREEK} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_GREEK} "Η απεγκατάσταση της προηγούμενης έκδοσης απέτυχε.$\nΠαρακαλώ απεγκαταστήστε χειροκίνητα το ${SOFT_NAME} πριν συνεχίσετε." @@ -124,7 +132,9 @@ LangString var4 ${LANG_CZECH} "Příklady schémat" LangString var5 ${LANG_CZECH} "Písma" LangString Mcp ${LANG_CZECH} "AI assistant (MCP)" - LangString var6 ${LANG_CZECH} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_CZECH} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_CZECH} "Python for the AI assistant" + LangString var7 ${LANG_CZECH} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_CZECH} "Odinstalování předchozí verze se nezdařilo.$\nPřed pokračováním prosím odinstalujte ${SOFT_NAME} ručně." @@ -150,7 +160,9 @@ LangString var4 ${LANG_SPANISH} "Ejemplos de esquemas" LangString var5 ${LANG_SPANISH} "Fuentes" LangString Mcp ${LANG_SPANISH} "AI assistant (MCP)" - LangString var6 ${LANG_SPANISH} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_SPANISH} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_SPANISH} "Python for the AI assistant" + LangString var7 ${LANG_SPANISH} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_SPANISH} "La desinstalación de la versión anterior ha fallado.$\nPor favor, desinstale ${SOFT_NAME} manualmente antes de continuar." @@ -176,7 +188,9 @@ LangString var4 ${LANG_GERMAN} "Schaltplan-Beispiele" LangString var5 ${LANG_GERMAN} "Schriften" LangString Mcp ${LANG_GERMAN} "AI assistant (MCP)" - LangString var6 ${LANG_GERMAN} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_GERMAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_GERMAN} "Python for the AI assistant" + LangString var7 ${LANG_GERMAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_GERMAN} "Die Deinstallation der vorherigen Version ist fehlgeschlagen.$\nBitte deinstallieren Sie ${SOFT_NAME} manuell, bevor Sie fortfahren." @@ -202,7 +216,9 @@ LangString var4 ${LANG_RUSSIAN} "Примеры схем" LangString var5 ${LANG_RUSSIAN} "Шрифты" LangString Mcp ${LANG_RUSSIAN} "AI assistant (MCP)" - LangString var6 ${LANG_RUSSIAN} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_RUSSIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_RUSSIAN} "Python for the AI assistant" + LangString var7 ${LANG_RUSSIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_RUSSIAN} "Удаление предыдущей версии завершилось с ошибкой.$\nПожалуйста, удалите ${SOFT_NAME} вручную перед продолжением." @@ -228,7 +244,9 @@ LangString var4 ${LANG_ARABIC} "أمثلة على المخططات" LangString var5 ${LANG_ARABIC} "الخطوط" LangString Mcp ${LANG_ARABIC} "AI assistant (MCP)" - LangString var6 ${LANG_ARABIC} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_ARABIC} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_ARABIC} "Python for the AI assistant" + LangString var7 ${LANG_ARABIC} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_ARABIC} "فشل إلغاء تثبيت الإصدار السابق. يرجى إلغاء تثبيت ${SOFT_NAME} يدويًا قبل المتابعة." @@ -254,7 +272,9 @@ LangString var4 ${LANG_CATALAN} "Exemples d'esquemes" LangString var5 ${LANG_CATALAN} "Tipus de lletra" LangString Mcp ${LANG_CATALAN} "AI assistant (MCP)" - LangString var6 ${LANG_CATALAN} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_CATALAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_CATALAN} "Python for the AI assistant" + LangString var7 ${LANG_CATALAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_CATALAN} "La desinstal·lació de la versió anterior ha fallat.$\nSi us plau, desinstal·leu ${SOFT_NAME} manualment abans de continuar." @@ -280,7 +300,9 @@ LangString var4 ${LANG_ITALIAN} "Schemi di esempio" LangString var5 ${LANG_ITALIAN} "Caratteri" LangString Mcp ${LANG_ITALIAN} "AI assistant (MCP)" - LangString var6 ${LANG_ITALIAN} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_ITALIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_ITALIAN} "Python for the AI assistant" + LangString var7 ${LANG_ITALIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_ITALIAN} "La disinstallazione della versione precedente non è riuscita.$\nSi prega di disinstallare ${SOFT_NAME} manualmente prima di continuare." @@ -306,7 +328,9 @@ LangString var4 ${LANG_PORTUGUESE} "Exemplos de esquemas" LangString var5 ${LANG_PORTUGUESE} "Fontes" LangString Mcp ${LANG_PORTUGUESE} "AI assistant (MCP)" - LangString var6 ${LANG_PORTUGUESE} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_PORTUGUESE} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_PORTUGUESE} "Python for the AI assistant" + LangString var7 ${LANG_PORTUGUESE} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_PORTUGUESE} "A desinstalação da versão anterior falhou.$\nPor favor, desinstale ${SOFT_NAME} manualmente antes de continuar." @@ -332,7 +356,9 @@ LangString var4 ${LANG_ROMANIAN} "Exemple de scheme" LangString var5 ${LANG_ROMANIAN} "Fonturi" LangString Mcp ${LANG_ROMANIAN} "AI assistant (MCP)" - LangString var6 ${LANG_ROMANIAN} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_ROMANIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_ROMANIAN} "Python for the AI assistant" + LangString var7 ${LANG_ROMANIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_ROMANIAN} "Dezinstalarea versiunii anterioare a eșuat.$\nVă rugăm să dezinstalați ${SOFT_NAME} manual înainte de a continua." @@ -358,7 +384,9 @@ LangString var4 ${LANG_CROATIAN} "Primjeri shema" LangString var5 ${LANG_CROATIAN} "Fontovi" LangString Mcp ${LANG_CROATIAN} "AI assistant (MCP)" - LangString var6 ${LANG_CROATIAN} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_CROATIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_CROATIAN} "Python for the AI assistant" + LangString var7 ${LANG_CROATIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_CROATIAN} "Deinstalacija prethodne verzije nije uspjela.$\nMolimo deinstalirajte ${SOFT_NAME} ručno prije nastavka." @@ -384,7 +412,9 @@ LangString var4 ${LANG_DUTCH} "Voorbeelden van schema's" LangString var5 ${LANG_DUTCH} "Lettertypen" LangString Mcp ${LANG_DUTCH} "AI assistant (MCP)" - LangString var6 ${LANG_DUTCH} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_DUTCH} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_DUTCH} "Python for the AI assistant" + LangString var7 ${LANG_DUTCH} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_DUTCH} "Het verwijderen van de vorige versie is mislukt.$\nVerwijder ${SOFT_NAME} handmatig voordat u verdergaat." @@ -410,7 +440,9 @@ LangString var4 ${LANG_DANISH} "Diagram eksempler" LangString var5 ${LANG_DANISH} "Skrifttyper" LangString Mcp ${LANG_DANISH} "AI assistant (MCP)" - LangString var6 ${LANG_DANISH} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_DANISH} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_DANISH} "Python for the AI assistant" + LangString var7 ${LANG_DANISH} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_DANISH} "Afinstallation af den tidligere version mislykkedes.$\nAfinstaller venligst ${SOFT_NAME} manuelt, inden du fortsætter." diff --git a/build-aux/windows/lang_extra_fr.nsh b/build-aux/windows/lang_extra_fr.nsh index dfb527009..bcfd9988b 100644 --- a/build-aux/windows/lang_extra_fr.nsh +++ b/build-aux/windows/lang_extra_fr.nsh @@ -20,5 +20,7 @@ LangString var4 ${LANG_FRENCH} "Exemples de schémas" LangString var5 ${LANG_FRENCH} "Polices" LangString Mcp ${LANG_FRENCH} "Assistant IA (MCP)" - LangString var6 ${LANG_FRENCH} "Permet à un assistant IA d'ouvrir, vérifier et modifier vos schémas (nécessite Python)" + LangString var6 ${LANG_FRENCH} "Permet à un assistant IA d'ouvrir, vérifier et modifier vos schémas. Nécessite Python : le vôtre, ou celui proposé ci-dessous" + LangString McpPython ${LANG_FRENCH} "Python pour l'assistant IA" + LangString var7 ${LANG_FRENCH} "Python de python.org, utilisé uniquement par le composant Assistant IA. Inutile si Python est déjà installé (environ 12 Mo)" LangString uninstFailed ${LANG_FRENCH} "La désinstallation de la version précédente a échoué.$\nVeuillez désinstaller ${SOFT_NAME} manuellement avant de continuer." diff --git a/build-aux/windows/lang_extra_missing.nsh b/build-aux/windows/lang_extra_missing.nsh index a4a69bdd3..afae58e03 100644 --- a/build-aux/windows/lang_extra_missing.nsh +++ b/build-aux/windows/lang_extra_missing.nsh @@ -26,7 +26,9 @@ LangString var4 ${LANG_HUNGARIAN} "Kapcsolási rajz példák" LangString var5 ${LANG_HUNGARIAN} "Betűtípusok" LangString Mcp ${LANG_HUNGARIAN} "AI assistant (MCP)" - LangString var6 ${LANG_HUNGARIAN} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_HUNGARIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_HUNGARIAN} "Python for the AI assistant" + LangString var7 ${LANG_HUNGARIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_HUNGARIAN} "Az előző verzió eltávolítása nem sikerült.$\nKérjük, távolítsa el manuálisan a ${SOFT_NAME} programot, mielőtt folytatná." @@ -55,7 +57,9 @@ LangString var4 ${LANG_JAPANESE} "回路図の例" LangString var5 ${LANG_JAPANESE} "フォント" LangString Mcp ${LANG_JAPANESE} "AI assistant (MCP)" - LangString var6 ${LANG_JAPANESE} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_JAPANESE} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_JAPANESE} "Python for the AI assistant" + LangString var7 ${LANG_JAPANESE} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_JAPANESE} "前のバージョンのアンインストールに失敗しました。$\n続行する前に、${SOFT_NAME} を手動でアンインストールしてください。" @@ -84,7 +88,9 @@ LangString var4 ${LANG_MONGOLIAN} "Схемийн жишээнүүд" LangString var5 ${LANG_MONGOLIAN} "Фонт" LangString Mcp ${LANG_MONGOLIAN} "AI assistant (MCP)" - LangString var6 ${LANG_MONGOLIAN} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_MONGOLIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_MONGOLIAN} "Python for the AI assistant" + LangString var7 ${LANG_MONGOLIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_MONGOLIAN} "Өмнөх хувилбарыг устгаж чадсангүй.$\nҮргэлжлүүлэхийн өмнө ${SOFT_NAME}-г гараар устгана уу." @@ -113,7 +119,9 @@ LangString var4 ${LANG_NORWEGIAN} "Eksempler på skjemaer" LangString var5 ${LANG_NORWEGIAN} "Skrifttyper" LangString Mcp ${LANG_NORWEGIAN} "AI assistant (MCP)" - LangString var6 ${LANG_NORWEGIAN} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_NORWEGIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_NORWEGIAN} "Python for the AI assistant" + LangString var7 ${LANG_NORWEGIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_NORWEGIAN} "Avinstallasjon av forrige versjon mislyktes.$\nVennligst avinstaller ${SOFT_NAME} manuelt før du fortsetter." @@ -152,7 +160,9 @@ LangString var4 ${LANG_PORTUGUESEBR} "Exemplos de esquemas" LangString var5 ${LANG_PORTUGUESEBR} "Fontes" LangString Mcp ${LANG_PORTUGUESEBR} "AI assistant (MCP)" - LangString var6 ${LANG_PORTUGUESEBR} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_PORTUGUESEBR} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_PORTUGUESEBR} "Python for the AI assistant" + LangString var7 ${LANG_PORTUGUESEBR} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_PORTUGUESEBR} "A desinstalação da versão anterior falhou.$\nPor favor, desinstale ${SOFT_NAME} manualmente antes de continuar." @@ -181,7 +191,9 @@ LangString var4 ${LANG_SERBIAN} "Примери шема" LangString var5 ${LANG_SERBIAN} "Фонтови" LangString Mcp ${LANG_SERBIAN} "AI assistant (MCP)" - LangString var6 ${LANG_SERBIAN} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_SERBIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_SERBIAN} "Python for the AI assistant" + LangString var7 ${LANG_SERBIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_SERBIAN} "Деинсталација претходне верзије није успела.$\nМолимо деинсталирајте ${SOFT_NAME} ручно пре наставка." @@ -210,7 +222,9 @@ LangString var4 ${LANG_SLOVAK} "Príklady schém" LangString var5 ${LANG_SLOVAK} "Písma" LangString Mcp ${LANG_SLOVAK} "AI assistant (MCP)" - LangString var6 ${LANG_SLOVAK} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_SLOVAK} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_SLOVAK} "Python for the AI assistant" + LangString var7 ${LANG_SLOVAK} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_SLOVAK} "Odinštalovanie predchádzajúcej verzie zlyhalo.$\nPred pokračovaním odinštalujte ${SOFT_NAME} ručne." @@ -239,7 +253,9 @@ LangString var4 ${LANG_SLOVENIAN} "Primeri shem" LangString var5 ${LANG_SLOVENIAN} "Pisave" LangString Mcp ${LANG_SLOVENIAN} "AI assistant (MCP)" - LangString var6 ${LANG_SLOVENIAN} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_SLOVENIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_SLOVENIAN} "Python for the AI assistant" + LangString var7 ${LANG_SLOVENIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_SLOVENIAN} "Odstranitev prejšnje različice ni uspela.$\nPred nadaljevanjem ročno odstranite ${SOFT_NAME}." @@ -268,7 +284,9 @@ LangString var4 ${LANG_SWEDISH} "Exempel på scheman" LangString var5 ${LANG_SWEDISH} "Teckensnitt" LangString Mcp ${LANG_SWEDISH} "AI assistant (MCP)" - LangString var6 ${LANG_SWEDISH} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_SWEDISH} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_SWEDISH} "Python for the AI assistant" + LangString var7 ${LANG_SWEDISH} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_SWEDISH} "Avinstallationen av den föregående versionen misslyckades.$\nAvinstallera ${SOFT_NAME} manuellt innan du fortsätter." @@ -297,7 +315,9 @@ LangString var4 ${LANG_TURKISH} "Şema örnekleri" LangString var5 ${LANG_TURKISH} "Yazı Tipleri" LangString Mcp ${LANG_TURKISH} "AI assistant (MCP)" - LangString var6 ${LANG_TURKISH} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_TURKISH} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_TURKISH} "Python for the AI assistant" + LangString var7 ${LANG_TURKISH} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_TURKISH} "Önceki sürümün kaldırılması başarısız oldu.$\nDevam etmeden önce lütfen ${SOFT_NAME}'i manuel olarak kaldırın." @@ -326,7 +346,9 @@ LangString var4 ${LANG_UKRAINIAN} "Приклади схем" LangString var5 ${LANG_UKRAINIAN} "Шрифти" LangString Mcp ${LANG_UKRAINIAN} "AI assistant (MCP)" - LangString var6 ${LANG_UKRAINIAN} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_UKRAINIAN} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_UKRAINIAN} "Python for the AI assistant" + LangString var7 ${LANG_UKRAINIAN} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_UKRAINIAN} "Видалення попередньої версії завершилося помилкою.$\nБудь ласка, видаліть ${SOFT_NAME} вручну перед продовженням." @@ -355,5 +377,7 @@ LangString var4 ${LANG_SIMPCHINESE} "图纸示例" LangString var5 ${LANG_SIMPCHINESE} "字体" LangString Mcp ${LANG_SIMPCHINESE} "AI assistant (MCP)" - LangString var6 ${LANG_SIMPCHINESE} "Lets an AI assistant open, check and edit your drawings (needs Python)" + LangString var6 ${LANG_SIMPCHINESE} "Lets an AI assistant open, check and edit your drawings. Needs Python: your own, or the one offered below" + LangString McpPython ${LANG_SIMPCHINESE} "Python for the AI assistant" + LangString var7 ${LANG_SIMPCHINESE} "Python from python.org, used only by the AI assistant component. Not needed if Python is already installed (about 12 MB)" LangString uninstFailed ${LANG_SIMPCHINESE} "卸载旧版本失败。$\n请在继续之前手动卸载 ${SOFT_NAME}。" diff --git a/misc/qet-mcp/README.md b/misc/qet-mcp/README.md index 3c082ace9..391956b4e 100644 --- a/misc/qet-mcp/README.md +++ b/misc/qet-mcp/README.md @@ -93,9 +93,13 @@ there it finds that QElectroTech and its element collection by itself: | Windows installer, MSI, portable folder | `\mcp\qet_mcp.py` (the "AI assistant (MCP)" component) | `\bin\QElectroTech.exe`, `\elements` | So a client configuration needs only the path to the server and the -workspace, for example on Windows: +workspace. On Windows, the installer also offers **Python for the AI +assistant** (unticked by default; always in the portable folder and the +MSI): Python from python.org in `\mcp\python`, for anyone without +a Python of their own. Then: ```json +"command": "C:\\Program Files\\QElectroTech\\mcp\\python\\python.exe", "args": ["C:\\Program Files\\QElectroTech\\mcp\\qet_mcp.py"] ```