文件操作 - Mcp.4172d451.js
返回文件管理
返回主菜单
删除本文件
文件: /home/www/public/wp-content/plugins/all-in-one-seo-pack/dist/Lite/assets/js/Mcp.4172d451.js
编辑文件内容
import{f as o,i as r,r as g,ai as st,j as n,U as l,O as _,ad as T,a0 as S,R as I,ae as w,M as p,P as R,Q as K,v as y,T as Q,Y as ve,u as c}from"./vendor-vue-ui.ad4935f9.js";import{b as at,c as it}from"./app-core.fa86622d.js";import{_ as he}from"./Button.aa421c00.js";import{C as Ce}from"./Card.121699e0.js";import{_ as Pe}from"./vendor-phone.2d68da8f.js";import{_ as ot}from"./_plugin-vue_export-helper.eefbdd86.js";import{S as nt}from"./Caret.d3343e56.js";import{a as Ie}from"./Pencil.8f53e16a.js";import{S as Oe}from"./Exclamation.dcc79491.js";import{T as me}from"./Slide.bdb08a3f.js";import{_ as t,a as O}from"./vendor-other.835e467b.js";import"./vendor-lodash.45e85310.js";import"./Tooltip.2fa6a359.js";import"./Trash.49bbc1a8.js";import"./Close.8e99996b.js";const lt={emits:["change","paste","blur"],props:{editorId:{type:String,required:!0},language:{type:String,default(){return"json"}},placeholder:{type:String,default(){return""}},value:{type:String,default(){return""}},readonly:{type:Boolean,default(){return!1}},wordWrap:{type:Boolean,default(){return!1}}},data(){return{editorInstance:null}},methods:{getValue(){return this.editorInstance?this.editorInstance.value:""},setValue(N){this.editorInstance&&this.editorInstance.setOptions({value:N})}},async mounted(){const[{createEditor:N}]=await Promise.all([Pe(()=>import("./vendor-prism-editor.dce1142f.js").then(v=>v.i),[],import.meta.url),Pe(()=>import("./vendor-prism-editor.dce1142f.js").then(v=>v.j),[],import.meta.url)]),e=document.getElementById(this.editorId);if(!e)return;const f=this;this.editorInstance=N(e,{language:this.language,value:this.value,readOnly:this.readonly,lineNumbers:!0,wordWrap:this.wordWrap,tabSize:4,insertSpaces:!1,onUpdate(v){f.$emit("change",v)}}),this.placeholder&&(this.editorInstance.textarea.placeholder=this.placeholder),this.editorInstance.textarea.addEventListener("paste",v=>{this.$emit("paste",{event:v})}),this.editorInstance.textarea.addEventListener("blur",v=>{this.$emit("blur",{event:v})})},beforeUnmount(){this.editorInstance&&(this.editorInstance.remove(),this.editorInstance=null)}},rt=["id"];function ct(N,e,f,v,U,A){return o(),r("div",{id:f.editorId,class:"aioseo-code-editor"},null,8,rt)}const ut=ot(lt,[["render",ct]]),dt={class:"aioseo-mcp-v2"},pt={class:"mcp-v2-hero"},vt={class:"mcp-v2-examples"},ht={class:"label"},mt={key:0,class:"mcp-v2-summary"},gt={class:"next-action"},bt={class:"mcp-v2-steps"},yt=["onClick"],ft={class:"mcp-v2-step-number"},_t={class:"mcp-v2-step-title"},wt=["innerHTML"],At=["href"],kt={class:"mcp-v2-step-body"},St=["innerHTML"],Ct={class:"mcp-v2-abilities"},Pt=["onClick"],It={class:"label"},Ot={class:"count"},Tt={class:"mcp-v2-abilities-list"},xt={class:"label"},Lt={class:"description"},Et={key:1},Mt={key:0},jt={key:1},$t=["innerHTML"],Dt=["innerHTML"],Ht={key:2,class:"mcp-v2-credentials"},Rt={class:"warning"},Nt={class:"cred-row"},Ut={class:"label"},Vt={class:"value"},Wt={type:"button",class:"copy-btn"},Bt={class:"cred-row"},Gt={class:"label"},zt={class:"value"},Ft={type:"button",class:"copy-btn"},Jt={class:"hint"},Yt={key:3,class:"mcp-v2-inline-message error"},qt={key:0},Kt={key:1,class:"mcp-v2-hint"},Qt={class:"detail"},Xt={class:"mcp-v2-clients-lede"},Zt={class:"mcp-v2-client-tabs"},es=["onClick"],ts={key:0,class:"mcp-v2-client-note"},ss={key:0,class:"mcp-v2-password-banner"},as={key:1,class:"mcp-v2-snippet-meta"},is={class:"meta-label"},os={class:"meta-paths"},ns={class:"mcp-v2-snippet-block"},ls={type:"button",class:"copy-corner"},rs={class:"mcp-v2-instruction-steps"},cs=["innerHTML"],Cs={__name:"Mcp",setup(N){const e="all-in-one-seo-pack",f=at(),v=c(()=>f.aioseo.aiInsights&&f.aioseo.aiInsights.mcp||{}),U=c(()=>v.value.abilities||[]),A=c(()=>v.value.abilitiesApiAvailable===!0),C=g(v.value.mcpAdapterActive===!0),X=c(()=>v.value.mcpAdapterInstalled===!0),ie=g(null),x=c(()=>ie.value!==null?ie.value:U.value.length),Te=c(()=>typeof v.value.totalAbilities=="number"?v.value.totalAbilities:U.value.length),L=g(!1),E=g({}),xe=i=>{E.value={...E.value,[i]:!E.value[i]}},Le=c(()=>{const i={};return U.value.forEach(u=>{const d=u.category||"general";i[d]||(i[d]={label:(u.categoryLabel||d).replace(/^AIOSEO\s*[—–-]+\s*/,""),items:[]}),i[d].items.push(u)}),Object.values(i)}),M=c(()=>{const i=f.aioseo&&f.aioseo.urls||{};return(i.home||i.mainSiteUrl||window.location.origin||"").replace(/\/+$/,"")}),Z=c(()=>(f.aioseo&&f.aioseo.user||{}).login||"<your-username>"),Ee=c(()=>M.value+"/wp-admin/profile.php#application-passwords-section"),Me=c(()=>M.value+"/wp-admin/update-core.php"),je=c(()=>it.utmUrl("aioseo-mcp","abilities-not-registered",f.isPro?"https://aioseo.com/plugin/pro-support":"https://aioseo.com/plugin/lite-support")),oe=c(()=>A.value&&0<x.value?"":A.value?Te.value===0?t("The Abilities API is available, but no abilities are registered on this site at all. It has likely been disabled by a security plugin or custom code. Re-enable it, then reload this page.",e):O(t("The Abilities API is working, but the AIOSEO abilities failed to register. Please %1$scontact our support team%2$s so we can help you troubleshoot this.",e),'<a href="'+je.value+'" target="_blank" rel="noopener">',"</a>"):O(t("This version of WordPress doesn't include the Abilities API. %1$sUpdate WordPress%2$s to version 6.9 or later, then revisit this page.",e),'<a href="'+Me.value+'">',"</a>")),V=g(!1),b=g(null),W=g(""),k=c(()=>v.value.hasAppPassword===!0||b.value!==null),$e=c(()=>v.value.appPasswordsSupported!==!1),B=c(()=>v.value.appPasswordsAvailable!==!1),ge=c(()=>B.value?"":$e.value?t("Application Passwords are disabled on this site, so a credential can't be generated here. A security plugin or a constant/filter in your site's code is most likely turning the feature off. Re-enable Application Passwords (check your security plugin's settings or remove the override), then reload this page.",e):O(t("Application Passwords are disabled because this site isn't served over HTTPS. Switch your site to HTTPS to enable them, or see %1$sthe WordPress documentation%2$s for details.",e),'<a href="https://wordpress.org/documentation/article/application-passwords/" target="_blank" rel="noopener">',"</a>")),be=c(()=>f.aioseo&&f.aioseo.nonce||""),ye=c(()=>M.value+"/wp-json/aioseo/v1"),fe=c(()=>M.value+"/wp-json/wp-abilities/v1/abilities"),G=g(!1),j=g(""),ee=g(!1),ne=()=>{const i={Accept:"application/json"};return be.value&&(i["X-WP-Nonce"]=be.value),i},De=async()=>{try{const i=await fetch(fe.value,{credentials:"same-origin",headers:ne()});if(!i.ok)return;const u=await i.json();if(!Array.isArray(u))return;ie.value=u.filter(d=>{const a=d&&(d.name||d.id||"");return typeof a=="string"&&a.indexOf("aioseo-")===0}).length}catch{}},He=async()=>{if(!G.value){G.value=!0,j.value="",ee.value=!1;try{const i=await fetch(ye.value+"/ai-agents/install-mcp-adapter",{method:"POST",credentials:"same-origin",headers:{...ne(),"Content-Type":"application/json"},body:JSON.stringify({})}),u=await i.json();i.ok&&u&&u.success?(j.value=u.message||t("MCP Adapter installed.",e),C.value=!0,await De()):(ee.value=!0,j.value=u&&u.message||t("Install failed.",e))}catch{ee.value=!0,j.value=t("Install failed. Check site connectivity and try again.",e)}G.value=!1}},Re=async()=>{if(!V.value){V.value=!0,W.value="";try{const i=await fetch(ye.value+"/ai-agents/generate-app-password",{method:"POST",credentials:"same-origin",headers:{...ne(),"Content-Type":"application/json"},body:JSON.stringify({})}),u=await i.json();i.ok&&u&&u.success?b.value={username:u.username,password:u.password}:W.value=u&&u.message||t("Failed to generate an Application Password.",e)}catch{W.value=t("Failed to generate an Application Password.",e)}V.value=!1}},z=c(()=>A.value&&0<x.value&&C.value&&k.value),te=c(()=>z.value&&b.value!==null),se=g(!1),h=g(null),F=c(()=>h.value?h.value.ok:z.value),Ne=async()=>{if(se.value||!te.value)return;se.value=!0;const i=Date.now();try{const u=window.btoa(b.value.username+":"+b.value.password),d=await fetch(fe.value,{credentials:"omit",headers:{Accept:"application/json",Authorization:"Basic "+u}}),a=d.ok?await d.json():null,m=Date.now()-i;if(d.ok&&Array.isArray(a)){const P=a.filter(H=>{const q=H&&(H.name||H.id||"");return typeof q=="string"&&q.indexOf("aioseo-")===0});h.value={ok:!0,detail:O(t("Authenticated with your Application Password and discovered %1$d AIOSEO abilities in %2$dms. Your site is ready to connect an AI client below.",e),P.length,m)}}else d.status===401||d.status===403?h.value={ok:!1,detail:t("Your Application Password was rejected — it may have been revoked. Generate a new one and test again.",e)}:h.value={ok:!1,detail:t("The abilities endpoint responded but the data was unexpected. Check the MCP Adapter is active and try again.",e)}}catch{h.value={ok:!1,detail:t("Could not reach the abilities endpoint. Check the site is reachable and try again.",e)}}se.value=!1},le=g(!1),Ue=()=>{le.value=!0,setTimeout(()=>{le.value=!1},2e3)},re=g(!1),Ve=()=>{re.value=!0,setTimeout(()=>{re.value=!1},2e3)},We=c(()=>G.value?X.value?s.steps.activating:s.steps.installing:X.value?s.steps.activateMcpAdapter:s.steps.installMcpAdapter),Be=c(()=>O(t("An Application Password lets an AI client sign in to this site as %1$s. It grants the same %2$sfull access%3$s as your user account and is generated for the currently logged-in user only. You can revoke it at any time from your profile page.",e),"<strong>"+Z.value+"</strong>","<strong>","</strong>")),J=g(null),Y=c(()=>{const i=[{key:"abilities",title:s.steps.abilitiesTitle,subtitle:O(t("%d SEO abilities registered with the WordPress Abilities API",e),x.value),done:A.value&&0<x.value,pillLabel:A.value&&0<x.value?s.steps.ready:A.value?s.steps.noAbilities:s.steps.upgradeWp,pillClass:A.value&&0<x.value?"green":"red",blocking:!A.value},{key:"mcpAdapter",title:s.steps.mcpAdapterTitle,subtitle:s.steps.mcpAdapterSubtitle,done:C.value,pillLabel:C.value?s.steps.active:(X.value,s.steps.actionNeeded),pillClass:C.value?"green":"orange",blocking:!C.value},{key:"appPassword",title:s.steps.appPasswordTitle,subtitle:k.value?O(t("Generated for %s",e),"<strong>"+Z.value+"</strong>"):B.value?s.steps.appPasswordSubtitle:s.steps.appPasswordDisabledSubtitle,done:k.value,pillLabel:k.value?s.steps.generated:B.value?s.steps.actionNeeded:s.steps.disabled,pillClass:k.value?"green":B.value?"orange":"red",blocking:!k.value},{key:"test",title:h.value?h.value.ok?s.steps.testSuccess:s.steps.testFailure:F.value?s.steps.testReadyTitle:s.steps.testTitle,subtitle:h.value?h.value.ok?s.steps.testJustRan:s.steps.testSubtitle:F.value?s.steps.testVerifiedSubtitle:s.steps.testSubtitle,done:F.value,pillLabel:F.value?s.steps.verified:h.value?s.steps.actionNeeded:s.steps.pending,pillClass:F.value?"green":h.value?"orange":"gray",blocking:!1}],u=i.find(a=>!a.done&&a.blocking),d=i.find(a=>!a.done);return i.map((a,m)=>{const P=m+1,H=a.key==="abilities"&&L.value,q=a.key==="test"&&h.value!==null,ke=a.key==="appPassword"&&b.value,tt=J.value===a.key||J.value===null&&a===(u||d)||H||ke||q,Se=!a.done||ke||a.key==="test"&&z.value&&!te.value||H||q;return{...a,number:P,blocking:!a.done&&a===u,toggleable:Se,expanded:tt&&Se}})}),_e=c(()=>Y.value.filter(i=>i.done).length),we=c(()=>_e.value===Y.value.length),Ge=c(()=>{const i=Y.value.find(u=>!u.done);return i?O(t("next up: %s",e),i.title):""}),ze=i=>{i.toggleable&&(J.value===i.key?J.value="":J.value=i.key)},Fe=c(()=>b.value?b.value.password:"<your-application-password>"),ce=c(()=>({command:"npx",args:["-y","@automattic/mcp-wordpress-remote"],env:{WP_API_URL:M.value+"/wp-json/",WP_API_USERNAME:Z.value,WP_API_PASSWORD:Fe.value}})),ue=c(()=>M.value+"/wp-json/mcp/mcp-adapter-default-server"),Ae=c(()=>{if(!b.value)return"<base64-of-username:application-password>";try{return window.btoa(Z.value+":"+b.value.password)}catch{return"<base64-of-username:application-password>"}}),Je=c(()=>({path:["macOS: ~/Library/Application Support/Claude/claude_desktop_config.json","Windows: %APPDATA%\\Claude\\claude_desktop_config.json"],body:JSON.stringify({mcpServers:{"aioseo-site":ce.value}},null,2)})),Ye=c(()=>({path:t("Terminal (Claude Code CLI)",e),body:["claude mcp add aioseo-site \\",` --transport http "${ue.value}" \\`,` --header "Authorization: Basic ${Ae.value}"`].join(` `)})),qe=c(()=>({path:"Cursor Settings → MCP → Add Server",body:JSON.stringify({name:"AIOSEO Site",...ce.value},null,2)})),Ke=c(()=>({path:"~/.gemini/settings.json",body:JSON.stringify({mcpServers:{"aioseo-site":ce.value}},null,2)})),Qe=c(()=>({path:".vscode/mcp.json",body:JSON.stringify({servers:{"aioseo-site":{type:"http",url:ue.value,headers:{Authorization:"Basic "+Ae.value}}}},null,2)})),Xe=c(()=>({path:"",body:ue.value})),de=[{id:"claude-desktop",label:"Claude Desktop",metaLabel:t("Save to:",e),instructions:[t("Open the file for your operating system shown above (create it if it doesn't exist). On Linux, use the Claude Code CLI tab instead.",e),t("Paste the snippet above into the file.",e),t("Restart Claude Desktop to load the AIOSEO abilities.",e)]},{id:"claude-code",label:"Claude Code CLI",lang:"shell",metaLabel:t("Run in:",e),instructions:[t("Open a terminal in your project directory.",e),t("Paste the command above and press enter.",e),t("Exit Claude Code (<code>/exit</code>) and start a new session to load the AIOSEO abilities.",e)]},{id:"gemini-cli",label:"Gemini CLI",metaLabel:t("Save to:",e),instructions:[t("Open the file shown above (create it if it doesn't exist).",e),t("Paste the snippet above into the file.",e),t("Restart the Gemini CLI to load the AIOSEO abilities.",e)]},{id:"cursor",label:"Cursor",metaLabel:t("Add in:",e),instructions:[t("In Cursor, go to <strong>Settings → MCP → Add Server</strong>.",e),t("Paste the snippet above as a new server.",e),t("Enable the server in the MCP list to load the AIOSEO abilities.",e)]},{id:"vscode",label:"VS Code",metaLabel:t("Save to:",e),instructions:[t("Create the file shown above in your workspace (or use the user-level file).",e),t("Paste the snippet above into the file.",e),t("Open the Chat view in agent mode and start the server (or trust it the first time) to load the AIOSEO abilities.",e)]},{id:"chatgpt",label:"ChatGPT",unsupported:!0,warning:t("ChatGPT's developer-mode connectors only support OAuth, which this site doesn't offer yet. Use Claude, Gemini, Cursor or VS Code instead.",e)}],$=g("claude-desktop"),D=c(()=>de.find(i=>i.id===$.value)||de[0]),ae=c(()=>{switch($.value){case"claude-code":return Ye.value;case"cursor":return qe.value;case"gemini-cli":return Ke.value;case"vscode":return Qe.value;case"chatgpt":return Xe.value;default:return Je.value}}),Ze=c(()=>{const i=ae.value.path;return Array.isArray(i)?i:[i]}),pe=g(!1),et=()=>{pe.value=!0,setTimeout(()=>{pe.value=!1},2e3)},s={hero:{heading:t("Let your AI assistant work on your SEO",e),lede:t("Connect any MCP-compatible AI client below to read and update your SEO data from chat.",e),examplesLabel:t("Try asking:",e),examplePrompts:[t("Find posts missing meta descriptions",e),t("Create a redirect from /old to /new",e),t("Summarise last month's Search Console performance",e),t("Update titles for all posts in /blog/",e)]},setup:{heading:t("Setup",e),complete:t("Setup Complete",e)},progress:{heading:t("Setup progress",e),complete:t("Setup complete",e),allSet:t("You're all set!",e),of:t("of",e),stepsComplete:t("steps complete",e)},steps:{abilitiesTitle:t("AIOSEO Abilities registered",e),abilitiesDescription:t("SEO functions AIOSEO has registered for agents to call — read posts, audit the site, manage redirects, and more.",e),viewAbilities:t("View all abilities",e),hideAbilities:t("Hide abilities",e),showDetails:t("Show details",e),hideDetails:t("Hide details",e),mcpAdapterTitle:t("MCP Adapter installed",e),mcpAdapterSubtitle:t("Bridges AIOSEO abilities to the Model Context Protocol",e),mcpAdapterInstallDescription:t("The MCP Adapter is a free WordPress plugin that exposes registered abilities over the Model Context Protocol. Install it so AI clients can call AIOSEO's SEO abilities.",e),mcpAdapterActivateDescription:t("The MCP Adapter plugin is installed but not active. Activate it so AI clients can call AIOSEO's SEO abilities.",e),installMcpAdapter:t("Install MCP Adapter",e),activateMcpAdapter:t("Activate MCP Adapter",e),installing:t("Installing…",e),activating:t("Activating…",e),appPasswordTitle:t("Application password generated",e),appPasswordSubtitle:t("Generate a password so an AI client can sign in to your site",e),appPasswordDisabledSubtitle:t("Application Passwords are disabled on this site",e),appPasswordShownOnce:t("This password will not be shown again. Copy it now.",e),appPasswordSessionHint:t("We've also pre-filled it into the configuration snippets below for this session. Once you leave the page, the snippets will show a placeholder instead.",e),generateAppPassword:t("Generate Application Password",e),generating:t("Generating…",e),manageInProfile:t("Manage in profile",e),username:t("Username",e),password:t("Password",e),copy:t("Copy",e),copied:t("Copied",e),testTitle:t("Test the connection",e),testReadyTitle:t("Connection ready",e),testSubtitle:t("We'll sign in with your Application Password and confirm an AI client can reach your AIOSEO abilities.",e),testVerifiedSubtitle:t("All steps are complete — your site is ready for an AI client to connect.",e),testJustRan:t("Last tested just now",e),testLocked:t("Available once the steps above are complete.",e),testServerVerifiedHint:t("Your site is set up and ready to connect an AI client. To run a live credential test, generate a new Application Password above.",e),testConnection:t("Test connection",e),testAgain:t("Test again",e),testSuccess:t("Connection successful",e),testFailure:t("Connection unsuccessful",e),ready:t("Ready",e),active:t("Active",e),actionNeeded:t("Action needed",e),disabled:t("Disabled",e),generated:t("Generated",e),verified:t("Verified",e),pending:t("Pending",e),upgradeWp:t("Requires WP 6.9+",e),noAbilities:t("Not registered",e)},clients:{heading:t("Connect to AI Client",e),lede:t("Pick the AI tool you want to connect, then copy its configuration. Your application password is filled in automatically once generated.",e),copySnippet:t("Copy snippet",e),copied:t("Copied",e),passwordFilled:t("Application password is filled in below. Just copy and paste.",e),notSupportedLabel:t("Not supported:",e)}};return(i,u)=>{const d=st("clipboard");return o(),r("div",dt,[n("div",pt,[n("h2",null,l(s.hero.heading),1),n("p",null,l(s.hero.lede),1),n("div",vt,[n("span",ht,l(s.hero.examplesLabel),1),(o(!0),r(_,null,T(s.hero.examplePrompts,a=>(o(),r("span",{key:a,class:"example"},l(a),1))),128))])]),S(y(Ce),{slug:"mcpSetup","header-text":we.value?s.setup.complete:s.setup.heading,toggles:!1,"no-slide":!0},{default:I(()=>[we.value?p("",!0):(o(),r("div",mt,[n("strong",null,l(_e.value),1),w(" "+l(s.progress.of)+" "+l(Y.value.length)+" "+l(s.progress.stepsComplete)+" — ",1),n("span",gt,l(Ge.value),1)])),n("div",bt,[(o(!0),r(_,null,T(Y.value,a=>(o(),r("div",{key:a.key,class:R(["mcp-v2-step",{done:a.done,blocking:a.blocking,expanded:a.expanded,toggleable:a.toggleable}])},[n("div",{class:"mcp-v2-step-header",onClick:m=>ze(a)},[n("div",ft,[a.done?(o(),K(y(Ie),{key:0})):(o(),r(_,{key:1},[w(l(a.number),1)],64))]),n("div",_t,[w(l(a.title)+" ",1),a.subtitle?(o(),r("span",{key:0,class:"subtle",innerHTML:a.subtitle},null,8,wt)):p("",!0)]),n("div",{class:"mcp-v2-step-status",onClick:u[1]||(u[1]=Q(()=>{},["stop"]))},[a.key==="abilities"&&U.value.length?(o(),r("button",{key:0,type:"button",class:"mcp-v2-link",onClick:u[0]||(u[0]=Q(m=>L.value=!L.value,["stop"]))},l(L.value?s.steps.hideAbilities:s.steps.viewAbilities),1)):p("",!0),a.key==="mcpAdapter"&&!C.value?(o(),K(y(he),{key:1,type:"blue",size:"small",loading:G.value,onClick:Q(He,["stop"])},{default:I(()=>[w(l(We.value),1)]),_:1},8,["loading"])):p("",!0),a.key==="appPassword"&&!k.value&&B.value?(o(),K(y(he),{key:2,type:"blue",size:"small",loading:V.value,onClick:Q(Re,["stop"])},{default:I(()=>[w(l(V.value?s.steps.generating:s.steps.generateAppPassword),1)]),_:1},8,["loading"])):p("",!0),a.key==="appPassword"&&k.value?(o(),r("a",{key:3,href:Ee.value,target:"_blank",rel:"noopener",class:"mcp-v2-link"},l(s.steps.manageInProfile),9,At)):p("",!0),a.key==="test"&&te.value?(o(),K(y(he),{key:4,type:"blue",size:"small",loading:se.value,onClick:Q(Ne,["stop"])},{default:I(()=>[w(l(h.value?s.steps.testAgain:s.steps.testConnection),1)]),_:1},8,["loading"])):p("",!0)])],8,yt),S(y(me),{active:a.expanded},{default:I(()=>[n("div",kt,[a.key==="abilities"?(o(),r(_,{key:0},[oe.value?(o(),r("p",{key:0,innerHTML:oe.value},null,8,St)):p("",!0),S(y(me),{active:L.value},{default:I(()=>[n("div",Ct,[(o(!0),r(_,null,T(Le.value,m=>(o(),r("div",{key:m.label,class:R(["mcp-v2-abilities-group",{open:E.value[m.label]}])},[n("button",{type:"button",class:"mcp-v2-abilities-category-row",onClick:P=>xe(m.label)},[n("span",It,l(m.label),1),n("span",Ot,l(m.items.length),1),S(y(nt),{class:R(["caret",{rotated:E.value[m.label]}])},null,8,["class"])],8,Pt),S(y(me),{active:!!E.value[m.label]},{default:I(()=>[n("div",Tt,[(o(!0),r(_,null,T(m.items,P=>(o(),r("div",{key:P.name,class:"mcp-v2-ability"},[n("span",xt,l(P.label),1),n("span",Lt,l(P.description),1)]))),128))])]),_:2},1032,["active"])],2))),128))])]),_:1},8,["active"]),!L.value&&!oe.value?(o(),r("p",Et,l(s.steps.abilitiesDescription),1)):p("",!0)],64)):p("",!0),a.key==="mcpAdapter"?(o(),r(_,{key:1},[X.value&&!C.value?(o(),r("p",Mt,l(s.steps.mcpAdapterActivateDescription),1)):(o(),r("p",jt,l(s.steps.mcpAdapterInstallDescription),1)),j.value?(o(),r("div",{key:2,class:R(["mcp-v2-inline-message",{error:ee.value}])},l(j.value),3)):p("",!0)],64)):p("",!0),a.key==="appPassword"?(o(),r(_,{key:2},[ge.value&&!k.value?(o(),r("div",{key:0,class:"mcp-v2-inline-message error",innerHTML:ge.value},null,8,$t)):(o(),r("p",{key:1,innerHTML:Be.value},null,8,Dt)),b.value?(o(),r("div",Ht,[n("div",Rt,[S(y(Oe)),w(" "+l(s.steps.appPasswordShownOnce),1)]),n("div",Nt,[n("span",Ut,l(s.steps.username),1),n("code",Vt,l(b.value.username),1),ve((o(),r("button",Wt,[w(l(re.value?s.steps.copied:s.steps.copy),1)])),[[d,b.value.username,"copy"],[d,Ve,"success"]])]),n("div",Bt,[n("span",Gt,l(s.steps.password),1),n("code",zt,l(b.value.password),1),ve((o(),r("button",Ft,[w(l(le.value?s.steps.copied:s.steps.copy),1)])),[[d,b.value.password,"copy"],[d,Ue,"success"]])]),n("p",Jt,l(s.steps.appPasswordSessionHint),1)])):p("",!0),W.value?(o(),r("div",Yt,l(W.value),1)):p("",!0)],64)):p("",!0),a.key==="test"?(o(),r(_,{key:3},[!z.value&&!h.value?(o(),r("p",qt,l(s.steps.testLocked),1)):z.value&&!te.value&&!h.value?(o(),r("p",Kt,l(s.steps.testServerVerifiedHint),1)):p("",!0),h.value?(o(),r("div",{key:2,class:R(["mcp-v2-test-result",{error:!h.value.ok}])},[n("div",Qt,l(h.value.detail),1)],2)):p("",!0)],64)):p("",!0)])]),_:2},1032,["active"])],2))),128))])]),_:1},8,["header-text"]),S(y(Ce),{slug:"mcpClients","header-text":s.clients.heading,toggles:!1,"no-slide":!0},{default:I(()=>[n("p",Xt,l(s.clients.lede),1),n("div",Zt,[(o(),r(_,null,T(de,a=>n("button",{key:a.id,type:"button",class:R(["mcp-v2-client-tab",{active:$.value===a.id}]),onClick:m=>$.value=a.id},l(a.label),11,es)),64))]),D.value.warning?(o(),r("div",ts,[S(y(Oe)),n("span",null,[n("strong",null,l(s.clients.notSupportedLabel),1),w(" "+l(D.value.warning),1)])])):p("",!0),D.value.unsupported?p("",!0):(o(),r(_,{key:1},[b.value?(o(),r("div",ss,[S(y(Ie)),w(" "+l(s.clients.passwordFilled),1)])):p("",!0),ae.value.path?(o(),r("div",as,[u[2]||(u[2]=n("svg",{viewBox:"0 0 24 24",width:"14",height:"14",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[n("path",{d:"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"}),n("polyline",{points:"14 2 14 8 20 8"})],-1)),n("span",is,l(D.value.metaLabel),1),n("span",os,[(o(!0),r(_,null,T(Ze.value,(a,m)=>(o(),r("code",{key:m},l(a),1))),128))])])):p("",!0),n("div",ns,[(o(),K(y(ut),{key:$.value,"editor-id":`aioseo-mcp-v2-snippet-${$.value}`,language:D.value.lang||"json",value:ae.value.body,readonly:!0},null,8,["editor-id","language","value"])),ve((o(),r("button",ls,[u[3]||(u[3]=n("svg",{viewBox:"0 0 24 24",width:"13",height:"13",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[n("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),n("path",{d:"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"})],-1)),w(" "+l(pe.value?s.clients.copied:s.clients.copySnippet),1)])),[[d,ae.value.body,"copy"],[d,et,"success"]])]),n("ol",rs,[(o(!0),r(_,null,T(D.value.instructions,(a,m)=>(o(),r("li",{key:m,innerHTML:a},null,8,cs))),128))])],64))]),_:1},8,["header-text"])])}}};export{Cs as default};
修改文件时间
将文件时间修改为当前时间的前一年
删除文件