[{"data":1,"prerenderedAt":572},["ShallowReactive",2],{"docs-doc-en-ai-assistant":3,"docs-list-en":474},{"doc":4,"locale":471,"available":472},{"id":5,"title":6,"body":7,"description":459,"extension":460,"group":461,"meta":462,"navigation":463,"order":464,"path":465,"section":466,"seo":467,"stem":468,"updated":469,"__hash__":470},"docs_en\u002Fdocs\u002Fai-assistant.md","Smart Assistant",{"type":8,"value":9,"toc":451},"minimark",[10,15,24,27,31,49,52,55,59,66,74,229,232,236,381,388,392,399,403,406,447],[11,12,14],"h2",{"id":13},"what-it-is","What it is",[16,17,18,19,23],"p",{},"SCNexus can start an MCP service that ",[20,21,22],"strong",{},"listens only on loopback",", letting your AI client (any desktop tool that supports MCP) query local campaigns, works, download tasks and weekly mutation data, and activate or uninstall campaigns once you approve it.",[16,25,26],{},"The service is off by default and never starts with the app; you start it by hand each time. It has nothing to do with your account or the official online services and needs no sign-in.",[11,28,30],{"id":29},"starting-the-service","Starting the service",[32,33,34,38,46],"ol",{},[35,36,37],"li",{},"Open Settings → Feature management and turn on Smart Assistant; only then does Smart Assistant appear in the sidebar.",[35,39,40,41,45],{},"Go to Smart Assistant → Service configuration and check the port (",[42,43,44],"code",{},"17861"," by default, anything from 1024 to 65535).",[35,47,48],{},"Select Start service and the status badge switches to running.",[16,50,51],{},"There are three ways to stop it: select Stop service, turn the switch off in Feature management, or quit the app.",[16,53,54],{},"If the port is taken it reports that the port is in use and to pick another one; choose a different port and start again.",[11,56,58],{"id":57},"connecting-a-client","Connecting a client",[16,60,61,62,65],{},"The service lives at ",[42,63,64],{},"http:\u002F\u002F127.0.0.1:\u003Cport>\u002Fmcp"," and requires a token:",[32,67,68,71],{},[35,69,70],{},"Select Show token to read it, or Copy token to copy it directly.",[35,72,73],{},"Select Copy connection configuration to get JSON you can paste straight into your client's configuration:",[75,76,81],"pre",{"className":77,"code":78,"language":79,"meta":80,"style":80},"language-json shiki shiki-themes material-theme-lighter github-light github-dark","{\n  \"mcpServers\": {\n    \"scnexus\": {\n      \"type\": \"http\",\n      \"url\": \"http:\u002F\u002F127.0.0.1:17861\u002Fmcp\",\n      \"headers\": { \"Authorization\": \"Bearer \u003Ctoken>\" }\n    }\n  }\n}\n","json","",[42,82,83,92,112,128,155,176,211,217,223],{"__ignoreMap":80},[84,85,88],"span",{"class":86,"line":87},"line",1,[84,89,91],{"class":90},"sP7_E","{\n",[84,93,95,99,103,106,109],{"class":86,"line":94},2,[84,96,98],{"class":97},"s39Yj","  \"",[84,100,102],{"class":101},"sseR_","mcpServers",[84,104,105],{"class":97},"\"",[84,107,108],{"class":90},":",[84,110,111],{"class":90}," {\n",[84,113,115,118,122,124,126],{"class":86,"line":114},3,[84,116,117],{"class":97},"    \"",[84,119,121],{"class":120},"sZMiF","scnexus",[84,123,105],{"class":97},[84,125,108],{"class":90},[84,127,111],{"class":90},[84,129,131,134,138,140,142,146,150,152],{"class":86,"line":130},4,[84,132,133],{"class":97},"      \"",[84,135,137],{"class":136},"srdBf","type",[84,139,105],{"class":97},[84,141,108],{"class":90},[84,143,145],{"class":144},"sjJ54"," \"",[84,147,149],{"class":148},"s_sjI","http",[84,151,105],{"class":144},[84,153,154],{"class":90},",\n",[84,156,158,160,163,165,167,169,172,174],{"class":86,"line":157},5,[84,159,133],{"class":97},[84,161,162],{"class":136},"url",[84,164,105],{"class":97},[84,166,108],{"class":90},[84,168,145],{"class":144},[84,170,171],{"class":148},"http:\u002F\u002F127.0.0.1:17861\u002Fmcp",[84,173,105],{"class":144},[84,175,154],{"class":90},[84,177,179,181,184,186,188,191,193,197,199,201,203,206,208],{"class":86,"line":178},6,[84,180,133],{"class":97},[84,182,183],{"class":136},"headers",[84,185,105],{"class":97},[84,187,108],{"class":90},[84,189,190],{"class":90}," {",[84,192,145],{"class":97},[84,194,196],{"class":195},"swQdS","Authorization",[84,198,105],{"class":97},[84,200,108],{"class":90},[84,202,145],{"class":144},[84,204,205],{"class":148},"Bearer \u003Ctoken>",[84,207,105],{"class":144},[84,209,210],{"class":90}," }\n",[84,212,214],{"class":86,"line":213},7,[84,215,216],{"class":90},"    }\n",[84,218,220],{"class":86,"line":219},8,[84,221,222],{"class":90},"  }\n",[84,224,226],{"class":86,"line":225},9,[84,227,228],{"class":90},"}\n",[16,230,231],{},"The token is regenerated every time the app starts and only ever lives in memory. Restarting the app or selecting Regenerate token invalidates the old configuration immediately, so copy it again; regenerating also disconnects every connected client.",[11,233,235],{"id":234},"tools-it-exposes","Tools it exposes",[237,238,239,255],"table",{},[240,241,242],"thead",{},[243,244,245,249,252],"tr",{},[246,247,248],"th",{},"Tool",[246,250,251],{},"Purpose",[246,253,254],{},"Permission",[256,257,258,270,280,290,300,310,320,330,340,351,361,371],"tbody",{},[243,259,260,264,267],{},[261,262,263],"td",{},"Get app status",[261,265,266],{},"Read the app and game configuration state",[261,268,269],{},"Read-only",[243,271,272,275,278],{},[261,273,274],{},"List campaigns",[261,276,277],{},"Browse installed campaigns",[261,279,269],{},[243,281,282,285,288],{},[261,283,284],{},"Get campaign details",[261,286,287],{},"Look up one campaign by its local identifier",[261,289,269],{},[243,291,292,295,298],{},[261,293,294],{},"List custom content",[261,296,297],{},"Browse installed maps and mods",[261,299,269],{},[243,301,302,305,308],{},[261,303,304],{},"List downloads",[261,306,307],{},"See summaries of visible download tasks",[261,309,269],{},[243,311,312,315,318],{},[261,313,314],{},"Get task status",[261,316,317],{},"Check the progress of one task",[261,319,269],{},[243,321,322,325,328],{},[261,323,324],{},"Search mutators",[261,326,327],{},"Search and page through mutators",[261,329,269],{},[243,331,332,335,338],{},[261,333,334],{},"Get weekly mutation",[261,336,337],{},"See the current week's mutation for a region",[261,339,269],{},[243,341,342,345,348],{},[261,343,344],{},"Activate campaign",[261,346,347],{},"Activate an installed campaign when there are no conflicts",[261,349,350],{},"Writes game files",[243,352,353,356,359],{},[261,354,355],{},"Switch campaign",[261,357,358],{},"Restore the current campaign, then activate the target",[261,360,350],{},[243,362,363,366,369],{},[261,364,365],{},"Restore campaign",[261,367,368],{},"Deactivate a campaign and restore the original files",[261,370,350],{},[243,372,373,376,379],{},[261,374,375],{},"Uninstall campaign",[261,377,378],{},"Remove an installed campaign",[261,380,350],{},[16,382,383,384,387],{},"Every modifying tool asks for confirmation in a dialog by default. Each of the four campaign cards — activate, switch, restore, uninstall — offers Always approve automatically, which first shows a risk confirmation; even then, ",[20,385,386],{},"file conflicts still have to be handled by hand in the app",", and automatic approval only skips the tool-level confirmation for that one tool.",[11,389,391],{"id":390},"activity-log","Activity log",[16,393,394,395,398],{},"The Activity log page keeps the last 500 entries, in memory only: tool name, status (running \u002F succeeded \u002F failed \u002F cancelled), start time and duration. ",[20,396,397],{},"Request parameters are never recorded",", and the log is cleared when the app restarts. For durable logs, use Settings → Logging & privacy → Log directory.",[11,400,402],{"id":401},"security-boundaries","Security boundaries",[16,404,405],{},"The service is deliberately narrow, and knowing these saves time when troubleshooting:",[407,408,409,416,423,433,444],"ul",{},[35,410,411,412,415],{},"It listens on ",[42,413,414],{},"127.0.0.1"," only and never accepts outside connections.",[35,417,418,419,422],{},"Every request must carry ",[42,420,421],{},"Authorization: Bearer \u003Ctoken>","; a wrong token gets a 401 straight away.",[35,424,425,428,429,432],{},[42,426,427],{},"Host"," must be a local address, and requests carrying an ",[42,430,431],{},"Origin"," header are rejected (403) — a browser page cannot call it, only a local client that sets its own headers.",[35,434,435,436,439,440,443],{},"Only ",[42,437,438],{},"POST \u002Fmcp"," with ",[42,441,442],{},"Content-Type: application\u002Fjson"," is accepted; request bodies are capped at 64 KiB and concurrency at 16.",[35,445,446],{},"It offers no arbitrary command execution, arbitrary file access or ability to start downloads.",[448,449,450],"style",{},"html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sseR_, html code.shiki .sseR_{--shiki-light:#9C3EDA;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .swQdS, html code.shiki .swQdS{--shiki-light:#E53935;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":80,"searchDepth":114,"depth":114,"links":452},[453,454,455,456,457,458],{"id":13,"depth":94,"text":14},{"id":29,"depth":94,"text":30},{"id":57,"depth":94,"text":58},{"id":234,"depth":94,"text":235},{"id":390,"depth":94,"text":391},{"id":401,"depth":94,"text":402},"A controlled MCP service connecting local data to AI clients on the same machine","md","usage",{},true,90,"\u002Fdocs\u002Fai-assistant","app",{"title":6,"description":459},"docs\u002Fai-assistant","2026-11-01","5XDXwse-B2BqHWaso6XlE-LOZy_Tg-CBp-XF-fH_wyA","en",[471,473],"zh-CN",[475,481,485,490,495,499,503,508,512,516,521,525,530,535,540,545,550,551,556,561,567],{"path":476,"title":477,"description":478,"order":87,"group":479,"section":480,"contentLocale":473},"\u002Fdocs\u002Feditor","创作流程概览","从在《星际争霸II》编辑器中制作，到打包、分发与更新，说明星际枢纽在创作流程里承担的环节。","start","editor",{"path":482,"title":483,"description":484,"order":87,"group":479,"section":466,"contentLocale":471},"\u002Fdocs\u002Foverview","Getting started","SCNexus is a hub app built for the StarCraft community",{"path":486,"title":487,"description":488,"order":87,"group":489,"section":489,"contentLocale":471},"\u002Fdocs\u002Freference","Overview","The packaging and source conventions that importing, installing and distributing content depends on.","reference",{"path":491,"title":492,"description":493,"order":494,"group":461,"section":466,"contentLocale":471},"\u002Fdocs\u002Fcampaign","Campaign management","Import your own campaigns into the library, activate them in the game, and restore the official campaigns at any time",10,{"path":496,"title":497,"description":498,"order":494,"group":461,"section":480,"contentLocale":473},"\u002Fdocs\u002Fpackaging","打包安装包","把编辑器产出的地图、模组与 package.json 组织成一个能被星际枢纽自动识别并安装的压缩包。",{"path":500,"title":501,"description":502,"order":494,"group":489,"section":489,"contentLocale":471},"\u002Fdocs\u002Fscnexus-package","SCNexus package standard","Directory layout, package.json manifest fields, map and mod resource declarations, and how launchers and bundled documents are written for SCNexus work packages.",{"path":504,"title":505,"description":506,"order":507,"group":489,"section":489,"contentLocale":471},"\u002Fdocs\u002Fccm-package","CCM package standard","How CCM describes a campaign in metadata.txt, the key-value format, the directory layout and install targets, and how SCNexus reads these packages.",20,{"path":509,"title":510,"description":511,"order":507,"group":461,"section":466,"contentLocale":471},"\u002Fdocs\u002Fcustomize","Custom content","Install maps and mods straight into the game, then pick a launcher map and start in one click",{"path":513,"title":514,"description":515,"order":507,"group":461,"section":480,"contentLocale":473},"\u002Fdocs\u002Ftoolbox","创作工具 · 编码转换","把中文等非 ASCII 文本转成 Galaxy 代码里可用的转义写法，可选直接转码、字符串、文本与触发调试四种输出。",{"path":517,"title":518,"description":519,"order":520,"group":489,"section":489,"contentLocale":471},"\u002Fdocs\u002Fgithub-source","GitHub source standard","The manifest and structural requirements a public GitHub repository has to meet to serve as an install source, and how addresses and branches are written.",30,{"path":522,"title":523,"description":524,"order":520,"group":461,"section":466,"contentLocale":471},"\u002Fdocs\u002Fweekly-mutations","Weekly mutations","This week's mutation map, mutators and community rating, plus the full mutator reference",{"path":526,"title":527,"description":528,"order":529,"group":461,"section":466,"contentLocale":471},"\u002Fdocs\u002Freplays","Replays","Index replays by StarCraft profile and replay type, with duplicate detection, bulk export and match data",40,{"path":531,"title":532,"description":533,"order":534,"group":461,"section":466,"contentLocale":471},"\u002Fdocs\u002Fworkshop","Workshop","Browse community works, open their details and download reviewed releases",50,{"path":536,"title":537,"description":538,"order":539,"group":461,"section":466,"contentLocale":471},"\u002Fdocs\u002Fcreator","Creator center and uploads","Create works, maintain their details, upload new versions and track upload tasks",60,{"path":541,"title":542,"description":543,"order":544,"group":461,"section":466,"contentLocale":471},"\u002Fdocs\u002Fdownloads","Downloads","Fetch content from GitHub or the Workshop, then install it once you have checked it",70,{"path":546,"title":547,"description":548,"order":549,"group":461,"section":466,"contentLocale":471},"\u002Fdocs\u002Ftools","Creation tools","Local helpers such as the encoding converter; input is never uploaded or stored",80,{"path":465,"title":6,"description":459,"order":464,"group":461,"section":466,"contentLocale":471},{"path":552,"title":553,"description":554,"order":555,"group":461,"section":466,"contentLocale":471},"\u002Fdocs\u002Faccount","Account and personal center","Signing in, your profile and level progression, and setting up and maintaining two-step verification",100,{"path":557,"title":558,"description":559,"order":560,"group":461,"section":466,"contentLocale":471},"\u002Fdocs\u002Fsettings","Settings","Language, game directories, feature switches and logging privacy, tab by tab",110,{"path":562,"title":563,"description":564,"order":565,"group":566,"section":466,"contentLocale":471},"\u002Fdocs\u002Fcontributing","Contributing","How to contribute to SCNexus: where the repositories live, how to set up a development environment, what to run before submitting, the code and documentation conventions, the code of conduct, and how to report security issues.",200,"contribute",{"path":568,"title":569,"description":570,"order":571,"group":566,"section":466,"contentLocale":471},"\u002Fdocs\u002Flocalization","Translating the interface","Where the interface translation files live, how keys are named, how to submit changes, how to verify them locally, and what adding a language touches.",210,1793550744913]