[{"data":1,"prerenderedAt":3426},["ShallowReactive",2],{"navigation_docs":3,"-advanced-dynamic-definitions":139,"-advanced-dynamic-definitions-surround":3421},[4,40,65,110],{"title":5,"path":6,"stem":7,"children":8,"page":39},"入门指南","\u002Fgetting-started","1.getting-started",[9,14,19,24,29,34],{"title":10,"path":11,"stem":12,"icon":13},"简介","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-book-open",{"title":15,"path":16,"stem":17,"icon":18},"安装","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"配置","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F3.configuration","i-lucide-settings",{"title":25,"path":26,"stem":27,"icon":28},"MCP Inspector","\u002Fgetting-started\u002Finspector","1.getting-started\u002F4.inspector","i-lucide-circuit-board",{"title":30,"path":31,"stem":32,"icon":33},"连接","\u002Fgetting-started\u002Fconnection","1.getting-started\u002F5.connection","i-lucide-plug",{"title":35,"path":36,"stem":37,"icon":38},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F6.agent-skills","i-lucide-sparkles",false,{"title":41,"path":42,"stem":43,"children":44,"page":39},"核心概念","\u002Fcore-concepts","2.core-concepts",[45,50,55,60],{"title":46,"path":47,"stem":48,"icon":49},"工具","\u002Fcore-concepts\u002Ftools","2.core-concepts\u002F2.tools","i-lucide-wrench",{"title":51,"path":52,"stem":53,"icon":54},"资源","\u002Fcore-concepts\u002Fresources","2.core-concepts\u002F3.resources","i-lucide-package",{"title":56,"path":57,"stem":58,"icon":59},"提示词 (Prompts)","\u002Fcore-concepts\u002Fprompts","2.core-concepts\u002F4.prompts","i-lucide-message-square",{"title":61,"path":62,"stem":63,"icon":64},"处理器 (Handlers)","\u002Fcore-concepts\u002Fhandlers","2.core-concepts\u002F5.handlers","i-lucide-server",{"title":66,"path":67,"stem":68,"children":69,"page":39},"进阶主题","\u002Fadvanced","3.advanced",[70,75,80,85,90,95,100,105],{"title":71,"path":72,"stem":73,"icon":74},"自定义路径","\u002Fadvanced\u002Fcustom-paths","3.advanced\u002F1.custom-paths","i-lucide-folder",{"title":76,"path":77,"stem":78,"icon":79},"中间件","\u002Fadvanced\u002Fmiddleware","3.advanced\u002F2.middleware","i-lucide-shield",{"title":81,"path":82,"stem":83,"icon":84},"TypeScript","\u002Fadvanced\u002Ftypescript","3.advanced\u002F3.typescript","i-lucide-type",{"title":86,"path":87,"stem":88,"icon":89},"钩子","\u002Fadvanced\u002Fhooks","3.advanced\u002F4.hooks","i-lucide-webhook",{"title":91,"path":92,"stem":93,"icon":94},"MCP 评估","\u002Fadvanced\u002Fevals","3.advanced\u002F5.evals","i-lucide-flask-conical",{"title":96,"path":97,"stem":98,"icon":99},"会话 (Sessions)","\u002Fadvanced\u002Fsessions","3.advanced\u002F6.sessions","i-lucide-database",{"title":101,"path":102,"stem":103,"icon":104},"动态定义","\u002Fadvanced\u002Fdynamic-definitions","3.advanced\u002F7.dynamic-definitions","i-lucide-toggle-right",{"title":106,"path":107,"stem":108,"icon":109},"代码模式 (Code Mode)","\u002Fadvanced\u002Fcode-mode","3.advanced\u002F8.code-mode","i-lucide-code",{"title":111,"path":112,"stem":113,"children":114,"page":39},"示例","\u002Fexamples","4.examples",[115,120,125,130,135],{"title":116,"path":117,"stem":118,"icon":119},"身份验证","\u002Fexamples\u002Fauthentication","4.examples\u002F1.authentication","i-lucide-shield-check",{"title":121,"path":122,"stem":123,"icon":124},"API 集成","\u002Fexamples\u002Fapi-integration","4.examples\u002F2.api-integration","i-lucide-globe",{"title":126,"path":127,"stem":128,"icon":129},"常见模式","\u002Fexamples\u002Fcommon-patterns","4.examples\u002F3.common-patterns","i-lucide-lightbulb",{"title":131,"path":132,"stem":133,"icon":134},"文件操作","\u002Fexamples\u002Ffile-operations","4.examples\u002F4.file-operations","i-lucide-file",{"title":136,"path":137,"stem":138,"icon":59},"提示词示例","\u002Fexamples\u002Fprompt-examples","4.examples\u002F5.prompt-examples",{"id":140,"title":101,"body":141,"description":3412,"extension":3413,"links":3414,"meta":3415,"navigation":3416,"path":102,"seo":3417,"stem":103,"__hash__":3420},"docs\u002F3.advanced\u002F7.dynamic-definitions.md",{"type":142,"value":143,"toc":3390},"minimark",[144,148,162,165,188,199,228,233,243,246,565,567,775,778,1054,1057,1062,1241,1319,1321,1342,1659,1662,1674,1677,1685,1821,1937,1950,1953,1965,1968,1979,1982,1985,2002,2011,2015,2127,2130,2485,2488,2491,2497,3052,3055,3065,3218,3228,3231,3255,3263,3265,3268,3365,3368,3386],[145,146,147],"h2",{"id":147},"概述",[149,150,151,152,156,157,161],"p",{},"默认情况下，",[153,154,155],"code",{},"server\u002Fmcp\u002F"," 中定义的每个工具、资源和提示词都会为所有客户端注册。动态定义允许你根据请求上下文控制",[158,159,160],"strong",{},"哪些定义是可见的","——例如，仅向已认证的管理员显示仅限管理员使用的工具，而对普通用户隐藏它们。",[149,163,164],{},"有两种互补的机制：",[166,167,168,178],"ol",{},[169,170,171,177],"li",{},[158,172,173,176],{},[153,174,175],{},"enabled"," 守卫"," — 每个定义的回调函数，用于控制可见性",[169,179,180,183,184,187],{},[158,181,182],{},"动态处理器定义"," — ",[153,185,186],{},"defineMcpHandler"," 中的一个函数，根据上下文返回定义",[149,189,190,191,194,195,198],{},"这两种机制都在",[158,192,193],{},"中间件之后","运行，因此 ",[153,196,197],{},"event.context","（例如身份验证数据）是可用的。",[200,201,204,205,208,209,212,213,215,216,219,220,223,224,227],"callout",{"color":202,"icon":203},"info","i-lucide-info","如果你只需要更改工具\u002F提示词的",[158,206,207],{},"行为","（而不是可见性），你完全可以通过在处理器中使用 ",[153,210,211],{},"useEvent()"," 读取 ",[153,214,197],{}," 来实现。动态定义用于控制哪些定义会出现在 ",[153,217,218],{},"tools\u002Flist","、",[153,221,222],{},"prompts\u002Flist"," 和 ",[153,225,226],{},"resources\u002Flist"," 中。",[145,229,231,176],{"id":230},"enabled-守卫",[153,232,175],{},[149,234,235,236,238,239,242],{},"向任何工具、资源或提示词定义添加 ",[153,237,175],{}," 回调。当回调返回 ",[153,240,241],{},"false"," 时，该定义将对客户端隐藏。",[244,245,46],"h3",{"id":46},[247,248,254],"pre",{"className":249,"code":250,"filename":251,"language":252,"meta":253,"style":253},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  name: 'delete-all',\n  description: 'Delete all records (admin only)',\n  inputSchema: {\n    confirm: z.boolean().describe('Confirm deletion'),\n  },\n  enabled: event => event.context.user?.role === 'admin',\n  handler: async ({ confirm }) => {\n    if (!confirm) return 'Deletion cancelled'\n    await deleteAllRecords()\n    return 'All records deleted'\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fdelete-all.ts","typescript","",[153,255,256,289,310,317,335,356,373,384,422,428,474,498,526,538,551,556],{"__ignoreMap":253},[257,258,261,265,269,273,276,279,282,286],"span",{"class":259,"line":260},"line",1,[257,262,264],{"class":263},"s7zQu","import",[257,266,268],{"class":267},"sMK4o"," {",[257,270,272],{"class":271},"sTEyZ"," z",[257,274,275],{"class":267}," }",[257,277,278],{"class":263}," from",[257,280,281],{"class":267}," '",[257,283,285],{"class":284},"sfazB","zod",[257,287,288],{"class":267},"'\n",[257,290,292,294,296,299,301,303,305,308],{"class":259,"line":291},2,[257,293,264],{"class":263},[257,295,268],{"class":267},[257,297,298],{"class":271}," defineMcpTool",[257,300,275],{"class":267},[257,302,278],{"class":263},[257,304,281],{"class":267},[257,306,307],{"class":284},"@nuxtjs\u002Fmcp-toolkit\u002Fserver",[257,309,288],{"class":267},[257,311,313],{"class":259,"line":312},3,[257,314,316],{"emptyLinePlaceholder":315},true,"\n",[257,318,320,323,326,329,332],{"class":259,"line":319},4,[257,321,322],{"class":263},"export",[257,324,325],{"class":263}," default",[257,327,298],{"class":328},"s2Zo4",[257,330,331],{"class":271},"(",[257,333,334],{"class":267},"{\n",[257,336,338,342,345,347,350,353],{"class":259,"line":337},5,[257,339,341],{"class":340},"swJcz","  name",[257,343,344],{"class":267},":",[257,346,281],{"class":267},[257,348,349],{"class":284},"delete-all",[257,351,352],{"class":267},"'",[257,354,355],{"class":267},",\n",[257,357,359,362,364,366,369,371],{"class":259,"line":358},6,[257,360,361],{"class":340},"  description",[257,363,344],{"class":267},[257,365,281],{"class":267},[257,367,368],{"class":284},"Delete all records (admin only)",[257,370,352],{"class":267},[257,372,355],{"class":267},[257,374,376,379,381],{"class":259,"line":375},7,[257,377,378],{"class":340},"  inputSchema",[257,380,344],{"class":267},[257,382,383],{"class":267}," {\n",[257,385,387,390,392,394,397,400,403,405,408,410,412,415,417,420],{"class":259,"line":386},8,[257,388,389],{"class":340},"    confirm",[257,391,344],{"class":267},[257,393,272],{"class":271},[257,395,396],{"class":267},".",[257,398,399],{"class":328},"boolean",[257,401,402],{"class":271},"()",[257,404,396],{"class":267},[257,406,407],{"class":328},"describe",[257,409,331],{"class":271},[257,411,352],{"class":267},[257,413,414],{"class":284},"Confirm deletion",[257,416,352],{"class":267},[257,418,419],{"class":271},")",[257,421,355],{"class":267},[257,423,425],{"class":259,"line":424},9,[257,426,427],{"class":267},"  },\n",[257,429,431,434,436,440,444,446,448,451,453,456,459,462,465,467,470,472],{"class":259,"line":430},10,[257,432,433],{"class":328},"  enabled",[257,435,344],{"class":267},[257,437,439],{"class":438},"sHdIc"," event",[257,441,443],{"class":442},"spNyl"," =>",[257,445,439],{"class":271},[257,447,396],{"class":267},[257,449,450],{"class":271},"context",[257,452,396],{"class":267},[257,454,455],{"class":271},"user",[257,457,458],{"class":267},"?.",[257,460,461],{"class":271},"role ",[257,463,464],{"class":267},"===",[257,466,281],{"class":267},[257,468,469],{"class":284},"admin",[257,471,352],{"class":267},[257,473,355],{"class":267},[257,475,477,480,482,485,488,491,494,496],{"class":259,"line":476},11,[257,478,479],{"class":328},"  handler",[257,481,344],{"class":267},[257,483,484],{"class":442}," async",[257,486,487],{"class":267}," ({",[257,489,490],{"class":438}," confirm",[257,492,493],{"class":267}," })",[257,495,443],{"class":442},[257,497,383],{"class":267},[257,499,501,504,507,510,513,516,519,521,524],{"class":259,"line":500},12,[257,502,503],{"class":263},"    if",[257,505,506],{"class":340}," (",[257,508,509],{"class":267},"!",[257,511,512],{"class":271},"confirm",[257,514,515],{"class":340},") ",[257,517,518],{"class":263},"return",[257,520,281],{"class":267},[257,522,523],{"class":284},"Deletion cancelled",[257,525,288],{"class":267},[257,527,529,532,535],{"class":259,"line":528},13,[257,530,531],{"class":263},"    await",[257,533,534],{"class":328}," deleteAllRecords",[257,536,537],{"class":340},"()\n",[257,539,541,544,546,549],{"class":259,"line":540},14,[257,542,543],{"class":263},"    return",[257,545,281],{"class":267},[257,547,548],{"class":284},"All records deleted",[257,550,288],{"class":267},[257,552,554],{"class":259,"line":553},15,[257,555,427],{"class":267},[257,557,559,562],{"class":259,"line":558},16,[257,560,561],{"class":267},"}",[257,563,564],{"class":271},")\n",[244,566,51],{"id":51},[247,568,571],{"className":249,"code":569,"filename":570,"language":252,"meta":253,"style":253},"import { defineMcpResource } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpResource({\n  name: 'internal-logs',\n  description: 'Application logs (admin only)',\n  uri: 'app:\u002F\u002Flogs',\n  enabled: event => event.context.user?.role === 'admin',\n  handler: async (uri) => ({\n    contents: [{ uri: uri.toString(), text: await readLogs() }],\n  }),\n})\n","server\u002Fmcp\u002Fresources\u002Finternal-logs.ts",[153,572,573,592,596,608,623,638,654,688,709,760,769],{"__ignoreMap":253},[257,574,575,577,579,582,584,586,588,590],{"class":259,"line":260},[257,576,264],{"class":263},[257,578,268],{"class":267},[257,580,581],{"class":271}," defineMcpResource",[257,583,275],{"class":267},[257,585,278],{"class":263},[257,587,281],{"class":267},[257,589,307],{"class":284},[257,591,288],{"class":267},[257,593,594],{"class":259,"line":291},[257,595,316],{"emptyLinePlaceholder":315},[257,597,598,600,602,604,606],{"class":259,"line":312},[257,599,322],{"class":263},[257,601,325],{"class":263},[257,603,581],{"class":328},[257,605,331],{"class":271},[257,607,334],{"class":267},[257,609,610,612,614,616,619,621],{"class":259,"line":319},[257,611,341],{"class":340},[257,613,344],{"class":267},[257,615,281],{"class":267},[257,617,618],{"class":284},"internal-logs",[257,620,352],{"class":267},[257,622,355],{"class":267},[257,624,625,627,629,631,634,636],{"class":259,"line":337},[257,626,361],{"class":340},[257,628,344],{"class":267},[257,630,281],{"class":267},[257,632,633],{"class":284},"Application logs (admin only)",[257,635,352],{"class":267},[257,637,355],{"class":267},[257,639,640,643,645,647,650,652],{"class":259,"line":358},[257,641,642],{"class":340},"  uri",[257,644,344],{"class":267},[257,646,281],{"class":267},[257,648,649],{"class":284},"app:\u002F\u002Flogs",[257,651,352],{"class":267},[257,653,355],{"class":267},[257,655,656,658,660,662,664,666,668,670,672,674,676,678,680,682,684,686],{"class":259,"line":375},[257,657,433],{"class":328},[257,659,344],{"class":267},[257,661,439],{"class":438},[257,663,443],{"class":442},[257,665,439],{"class":271},[257,667,396],{"class":267},[257,669,450],{"class":271},[257,671,396],{"class":267},[257,673,455],{"class":271},[257,675,458],{"class":267},[257,677,461],{"class":271},[257,679,464],{"class":267},[257,681,281],{"class":267},[257,683,469],{"class":284},[257,685,352],{"class":267},[257,687,355],{"class":267},[257,689,690,692,694,696,698,701,703,705,707],{"class":259,"line":386},[257,691,479],{"class":328},[257,693,344],{"class":267},[257,695,484],{"class":442},[257,697,506],{"class":267},[257,699,700],{"class":438},"uri",[257,702,419],{"class":267},[257,704,443],{"class":442},[257,706,506],{"class":271},[257,708,334],{"class":267},[257,710,711,714,716,719,722,725,727,729,731,734,736,739,742,744,747,750,753,755,758],{"class":259,"line":424},[257,712,713],{"class":340},"    contents",[257,715,344],{"class":267},[257,717,718],{"class":271}," [",[257,720,721],{"class":267},"{",[257,723,724],{"class":340}," uri",[257,726,344],{"class":267},[257,728,724],{"class":271},[257,730,396],{"class":267},[257,732,733],{"class":328},"toString",[257,735,402],{"class":271},[257,737,738],{"class":267},",",[257,740,741],{"class":340}," text",[257,743,344],{"class":267},[257,745,746],{"class":263}," await",[257,748,749],{"class":328}," readLogs",[257,751,752],{"class":271},"() ",[257,754,561],{"class":267},[257,756,757],{"class":271},"]",[257,759,355],{"class":267},[257,761,762,765,767],{"class":259,"line":430},[257,763,764],{"class":267},"  }",[257,766,419],{"class":271},[257,768,355],{"class":267},[257,770,771,773],{"class":259,"line":476},[257,772,561],{"class":267},[257,774,564],{"class":271},[244,776,777],{"id":777},"提示词",[247,779,782],{"className":249,"code":780,"filename":781,"language":252,"meta":253,"style":253},"import { useEvent } from 'h3'\nimport { defineMcpPrompt } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpPrompt({\n  name: 'onboarding',\n  description: 'Personalized onboarding (authenticated users only)',\n  enabled: event => !!event.context.user,\n  handler: async () => {\n    const event = useEvent()\n    return {\n      messages: [{\n        role: 'user',\n        content: {\n          type: 'text',\n          text: `Welcome ${event.context.user.name}! Here's how to get started...`,\n        },\n      }],\n    }\n  },\n})\n","server\u002Fmcp\u002Fprompts\u002Fonboarding.ts",[153,783,784,803,822,826,838,853,868,894,909,923,929,940,955,964,980,1021,1026,1036,1042,1047],{"__ignoreMap":253},[257,785,786,788,790,793,795,797,799,801],{"class":259,"line":260},[257,787,264],{"class":263},[257,789,268],{"class":267},[257,791,792],{"class":271}," useEvent",[257,794,275],{"class":267},[257,796,278],{"class":263},[257,798,281],{"class":267},[257,800,244],{"class":284},[257,802,288],{"class":267},[257,804,805,807,809,812,814,816,818,820],{"class":259,"line":291},[257,806,264],{"class":263},[257,808,268],{"class":267},[257,810,811],{"class":271}," defineMcpPrompt",[257,813,275],{"class":267},[257,815,278],{"class":263},[257,817,281],{"class":267},[257,819,307],{"class":284},[257,821,288],{"class":267},[257,823,824],{"class":259,"line":312},[257,825,316],{"emptyLinePlaceholder":315},[257,827,828,830,832,834,836],{"class":259,"line":319},[257,829,322],{"class":263},[257,831,325],{"class":263},[257,833,811],{"class":328},[257,835,331],{"class":271},[257,837,334],{"class":267},[257,839,840,842,844,846,849,851],{"class":259,"line":337},[257,841,341],{"class":340},[257,843,344],{"class":267},[257,845,281],{"class":267},[257,847,848],{"class":284},"onboarding",[257,850,352],{"class":267},[257,852,355],{"class":267},[257,854,855,857,859,861,864,866],{"class":259,"line":358},[257,856,361],{"class":340},[257,858,344],{"class":267},[257,860,281],{"class":267},[257,862,863],{"class":284},"Personalized onboarding (authenticated users only)",[257,865,352],{"class":267},[257,867,355],{"class":267},[257,869,870,872,874,876,878,881,884,886,888,890,892],{"class":259,"line":375},[257,871,433],{"class":328},[257,873,344],{"class":267},[257,875,439],{"class":438},[257,877,443],{"class":442},[257,879,880],{"class":267}," !!",[257,882,883],{"class":271},"event",[257,885,396],{"class":267},[257,887,450],{"class":271},[257,889,396],{"class":267},[257,891,455],{"class":271},[257,893,355],{"class":267},[257,895,896,898,900,902,905,907],{"class":259,"line":386},[257,897,479],{"class":328},[257,899,344],{"class":267},[257,901,484],{"class":442},[257,903,904],{"class":267}," ()",[257,906,443],{"class":442},[257,908,383],{"class":267},[257,910,911,914,916,919,921],{"class":259,"line":424},[257,912,913],{"class":442},"    const",[257,915,439],{"class":271},[257,917,918],{"class":267}," =",[257,920,792],{"class":328},[257,922,537],{"class":340},[257,924,925,927],{"class":259,"line":430},[257,926,543],{"class":263},[257,928,383],{"class":267},[257,930,931,934,936,938],{"class":259,"line":476},[257,932,933],{"class":340},"      messages",[257,935,344],{"class":267},[257,937,718],{"class":340},[257,939,334],{"class":267},[257,941,942,945,947,949,951,953],{"class":259,"line":500},[257,943,944],{"class":340},"        role",[257,946,344],{"class":267},[257,948,281],{"class":267},[257,950,455],{"class":284},[257,952,352],{"class":267},[257,954,355],{"class":267},[257,956,957,960,962],{"class":259,"line":528},[257,958,959],{"class":340},"        content",[257,961,344],{"class":267},[257,963,383],{"class":267},[257,965,966,969,971,973,976,978],{"class":259,"line":540},[257,967,968],{"class":340},"          type",[257,970,344],{"class":267},[257,972,281],{"class":267},[257,974,975],{"class":284},"text",[257,977,352],{"class":267},[257,979,355],{"class":267},[257,981,982,985,987,990,993,996,998,1000,1002,1004,1006,1008,1011,1013,1016,1019],{"class":259,"line":553},[257,983,984],{"class":340},"          text",[257,986,344],{"class":267},[257,988,989],{"class":267}," `",[257,991,992],{"class":284},"Welcome ",[257,994,995],{"class":267},"${",[257,997,883],{"class":271},[257,999,396],{"class":267},[257,1001,450],{"class":271},[257,1003,396],{"class":267},[257,1005,455],{"class":271},[257,1007,396],{"class":267},[257,1009,1010],{"class":271},"name",[257,1012,561],{"class":267},[257,1014,1015],{"class":284},"! Here's how to get started...",[257,1017,1018],{"class":267},"`",[257,1020,355],{"class":267},[257,1022,1023],{"class":259,"line":558},[257,1024,1025],{"class":267},"        },\n",[257,1027,1029,1032,1034],{"class":259,"line":1028},17,[257,1030,1031],{"class":267},"      }",[257,1033,757],{"class":340},[257,1035,355],{"class":267},[257,1037,1039],{"class":259,"line":1038},18,[257,1040,1041],{"class":267},"    }\n",[257,1043,1045],{"class":259,"line":1044},19,[257,1046,427],{"class":267},[257,1048,1050,1052],{"class":259,"line":1049},20,[257,1051,561],{"class":267},[257,1053,564],{"class":271},[244,1055,1056],{"id":1056},"中间件设置",[149,1058,1059,1061],{},[153,1060,175],{}," 守卫在中间件之后运行，因此请在中间件中设置你的身份验证上下文：",[247,1063,1066],{"className":249,"code":1064,"filename":1065,"language":252,"meta":253,"style":253},"import { getHeader } from 'h3'\nimport { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpHandler({\n  middleware: async (event) => {\n    const token = getHeader(event, 'authorization')?.replace('Bearer ', '')\n    if (token) {\n      event.context.user = await verifyToken(token)\n    }\n  },\n})\n","server\u002Fmcp\u002Findex.ts",[153,1067,1068,1087,1106,1110,1122,1141,1188,1201,1227,1231,1235],{"__ignoreMap":253},[257,1069,1070,1072,1074,1077,1079,1081,1083,1085],{"class":259,"line":260},[257,1071,264],{"class":263},[257,1073,268],{"class":267},[257,1075,1076],{"class":271}," getHeader",[257,1078,275],{"class":267},[257,1080,278],{"class":263},[257,1082,281],{"class":267},[257,1084,244],{"class":284},[257,1086,288],{"class":267},[257,1088,1089,1091,1093,1096,1098,1100,1102,1104],{"class":259,"line":291},[257,1090,264],{"class":263},[257,1092,268],{"class":267},[257,1094,1095],{"class":271}," defineMcpHandler",[257,1097,275],{"class":267},[257,1099,278],{"class":263},[257,1101,281],{"class":267},[257,1103,307],{"class":284},[257,1105,288],{"class":267},[257,1107,1108],{"class":259,"line":312},[257,1109,316],{"emptyLinePlaceholder":315},[257,1111,1112,1114,1116,1118,1120],{"class":259,"line":319},[257,1113,322],{"class":263},[257,1115,325],{"class":263},[257,1117,1095],{"class":328},[257,1119,331],{"class":271},[257,1121,334],{"class":267},[257,1123,1124,1127,1129,1131,1133,1135,1137,1139],{"class":259,"line":337},[257,1125,1126],{"class":328},"  middleware",[257,1128,344],{"class":267},[257,1130,484],{"class":442},[257,1132,506],{"class":267},[257,1134,883],{"class":438},[257,1136,419],{"class":267},[257,1138,443],{"class":442},[257,1140,383],{"class":267},[257,1142,1143,1145,1148,1150,1152,1154,1156,1158,1160,1163,1165,1167,1169,1172,1174,1176,1179,1181,1183,1186],{"class":259,"line":358},[257,1144,913],{"class":442},[257,1146,1147],{"class":271}," token",[257,1149,918],{"class":267},[257,1151,1076],{"class":328},[257,1153,331],{"class":340},[257,1155,883],{"class":271},[257,1157,738],{"class":267},[257,1159,281],{"class":267},[257,1161,1162],{"class":284},"authorization",[257,1164,352],{"class":267},[257,1166,419],{"class":340},[257,1168,458],{"class":267},[257,1170,1171],{"class":328},"replace",[257,1173,331],{"class":340},[257,1175,352],{"class":267},[257,1177,1178],{"class":284},"Bearer ",[257,1180,352],{"class":267},[257,1182,738],{"class":267},[257,1184,1185],{"class":267}," ''",[257,1187,564],{"class":340},[257,1189,1190,1192,1194,1197,1199],{"class":259,"line":375},[257,1191,503],{"class":263},[257,1193,506],{"class":340},[257,1195,1196],{"class":271},"token",[257,1198,515],{"class":340},[257,1200,334],{"class":267},[257,1202,1203,1206,1208,1210,1212,1214,1216,1218,1221,1223,1225],{"class":259,"line":386},[257,1204,1205],{"class":271},"      event",[257,1207,396],{"class":267},[257,1209,450],{"class":271},[257,1211,396],{"class":267},[257,1213,455],{"class":271},[257,1215,918],{"class":267},[257,1217,746],{"class":263},[257,1219,1220],{"class":328}," verifyToken",[257,1222,331],{"class":340},[257,1224,1196],{"class":271},[257,1226,564],{"class":340},[257,1228,1229],{"class":259,"line":424},[257,1230,1041],{"class":267},[257,1232,1233],{"class":259,"line":430},[257,1234,427],{"class":267},[257,1236,1237,1239],{"class":259,"line":476},[257,1238,561],{"class":267},[257,1240,564],{"class":271},[200,1242,1244,1254],{"color":1243,"icon":129},"primary",[149,1245,1246,1247,1249,1250,1253],{},"要在处理器内部使用 ",[153,1248,211],{},"，请在 Nuxt 配置中启用 ",[153,1251,1252],{},"asyncContext","：",[247,1255,1258],{"className":249,"code":1256,"filename":1257,"language":252,"meta":253,"style":253},"export default defineNuxtConfig({\n  nitro: {\n    experimental: {\n      asyncContext: true,\n    },\n  },\n})\n","nuxt.config.ts",[153,1259,1260,1273,1282,1291,1304,1309,1313],{"__ignoreMap":253},[257,1261,1262,1264,1266,1269,1271],{"class":259,"line":260},[257,1263,322],{"class":263},[257,1265,325],{"class":263},[257,1267,1268],{"class":328}," defineNuxtConfig",[257,1270,331],{"class":271},[257,1272,334],{"class":267},[257,1274,1275,1278,1280],{"class":259,"line":291},[257,1276,1277],{"class":340},"  nitro",[257,1279,344],{"class":267},[257,1281,383],{"class":267},[257,1283,1284,1287,1289],{"class":259,"line":312},[257,1285,1286],{"class":340},"    experimental",[257,1288,344],{"class":267},[257,1290,383],{"class":267},[257,1292,1293,1296,1298,1302],{"class":259,"line":319},[257,1294,1295],{"class":340},"      asyncContext",[257,1297,344],{"class":267},[257,1299,1301],{"class":1300},"sfNiH"," true",[257,1303,355],{"class":267},[257,1305,1306],{"class":259,"line":337},[257,1307,1308],{"class":267},"    },\n",[257,1310,1311],{"class":259,"line":358},[257,1312,427],{"class":267},[257,1314,1315,1317],{"class":259,"line":375},[257,1316,561],{"class":267},[257,1318,564],{"class":271},[145,1320,182],{"id":182},[149,1322,1323,1324,1326,1327,219,1330,1333,1334,1337,1338,1341],{},"为了获得更高的控制权，可以在 ",[153,1325,186],{}," 中将 ",[153,1328,1329],{},"tools",[153,1331,1332],{},"resources"," 或 ",[153,1335,1336],{},"prompts"," 传递为一个",[158,1339,1340],{},"函数","。该函数接收 H3 事件并返回一个定义数组。",[247,1343,1345],{"className":249,"code":1344,"filename":1065,"language":252,"meta":253,"style":253},"import { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\nimport { adminTools } from '.\u002Fadmin-tools'\nimport { publicTools } from '.\u002Fpublic-tools'\n\nexport default defineMcpHandler({\n  middleware: async (event) => {\n    event.context.user = await getUser(event)\n  },\n  tools: async (event) => {\n    const base = [...publicTools]\n    if (event.context.user?.role === 'admin') {\n      base.push(...adminTools)\n    }\n    return base\n  },\n  prompts: async (event) => {\n    if (event.context.user) {\n      return [authenticatedPrompt, dashboardPrompt]\n    }\n    return [guestPrompt]\n  },\n})\n",[153,1346,1347,1365,1385,1405,1409,1421,1439,1465,1469,1488,1508,1542,1561,1565,1572,1576,1595,1615,1632,1636,1647,1652],{"__ignoreMap":253},[257,1348,1349,1351,1353,1355,1357,1359,1361,1363],{"class":259,"line":260},[257,1350,264],{"class":263},[257,1352,268],{"class":267},[257,1354,1095],{"class":271},[257,1356,275],{"class":267},[257,1358,278],{"class":263},[257,1360,281],{"class":267},[257,1362,307],{"class":284},[257,1364,288],{"class":267},[257,1366,1367,1369,1371,1374,1376,1378,1380,1383],{"class":259,"line":291},[257,1368,264],{"class":263},[257,1370,268],{"class":267},[257,1372,1373],{"class":271}," adminTools",[257,1375,275],{"class":267},[257,1377,278],{"class":263},[257,1379,281],{"class":267},[257,1381,1382],{"class":284},".\u002Fadmin-tools",[257,1384,288],{"class":267},[257,1386,1387,1389,1391,1394,1396,1398,1400,1403],{"class":259,"line":312},[257,1388,264],{"class":263},[257,1390,268],{"class":267},[257,1392,1393],{"class":271}," publicTools",[257,1395,275],{"class":267},[257,1397,278],{"class":263},[257,1399,281],{"class":267},[257,1401,1402],{"class":284},".\u002Fpublic-tools",[257,1404,288],{"class":267},[257,1406,1407],{"class":259,"line":319},[257,1408,316],{"emptyLinePlaceholder":315},[257,1410,1411,1413,1415,1417,1419],{"class":259,"line":337},[257,1412,322],{"class":263},[257,1414,325],{"class":263},[257,1416,1095],{"class":328},[257,1418,331],{"class":271},[257,1420,334],{"class":267},[257,1422,1423,1425,1427,1429,1431,1433,1435,1437],{"class":259,"line":358},[257,1424,1126],{"class":328},[257,1426,344],{"class":267},[257,1428,484],{"class":442},[257,1430,506],{"class":267},[257,1432,883],{"class":438},[257,1434,419],{"class":267},[257,1436,443],{"class":442},[257,1438,383],{"class":267},[257,1440,1441,1444,1446,1448,1450,1452,1454,1456,1459,1461,1463],{"class":259,"line":375},[257,1442,1443],{"class":271},"    event",[257,1445,396],{"class":267},[257,1447,450],{"class":271},[257,1449,396],{"class":267},[257,1451,455],{"class":271},[257,1453,918],{"class":267},[257,1455,746],{"class":263},[257,1457,1458],{"class":328}," getUser",[257,1460,331],{"class":340},[257,1462,883],{"class":271},[257,1464,564],{"class":340},[257,1466,1467],{"class":259,"line":386},[257,1468,427],{"class":267},[257,1470,1471,1474,1476,1478,1480,1482,1484,1486],{"class":259,"line":424},[257,1472,1473],{"class":328},"  tools",[257,1475,344],{"class":267},[257,1477,484],{"class":442},[257,1479,506],{"class":267},[257,1481,883],{"class":438},[257,1483,419],{"class":267},[257,1485,443],{"class":442},[257,1487,383],{"class":267},[257,1489,1490,1492,1495,1497,1499,1502,1505],{"class":259,"line":430},[257,1491,913],{"class":442},[257,1493,1494],{"class":271}," base",[257,1496,918],{"class":267},[257,1498,718],{"class":340},[257,1500,1501],{"class":267},"...",[257,1503,1504],{"class":271},"publicTools",[257,1506,1507],{"class":340},"]\n",[257,1509,1510,1512,1514,1516,1518,1520,1522,1524,1526,1529,1532,1534,1536,1538,1540],{"class":259,"line":476},[257,1511,503],{"class":263},[257,1513,506],{"class":340},[257,1515,883],{"class":271},[257,1517,396],{"class":267},[257,1519,450],{"class":271},[257,1521,396],{"class":267},[257,1523,455],{"class":271},[257,1525,458],{"class":267},[257,1527,1528],{"class":271},"role",[257,1530,1531],{"class":267}," ===",[257,1533,281],{"class":267},[257,1535,469],{"class":284},[257,1537,352],{"class":267},[257,1539,515],{"class":340},[257,1541,334],{"class":267},[257,1543,1544,1547,1549,1552,1554,1556,1559],{"class":259,"line":500},[257,1545,1546],{"class":271},"      base",[257,1548,396],{"class":267},[257,1550,1551],{"class":328},"push",[257,1553,331],{"class":340},[257,1555,1501],{"class":267},[257,1557,1558],{"class":271},"adminTools",[257,1560,564],{"class":340},[257,1562,1563],{"class":259,"line":528},[257,1564,1041],{"class":267},[257,1566,1567,1569],{"class":259,"line":540},[257,1568,543],{"class":263},[257,1570,1571],{"class":271}," base\n",[257,1573,1574],{"class":259,"line":553},[257,1575,427],{"class":267},[257,1577,1578,1581,1583,1585,1587,1589,1591,1593],{"class":259,"line":558},[257,1579,1580],{"class":328},"  prompts",[257,1582,344],{"class":267},[257,1584,484],{"class":442},[257,1586,506],{"class":267},[257,1588,883],{"class":438},[257,1590,419],{"class":267},[257,1592,443],{"class":442},[257,1594,383],{"class":267},[257,1596,1597,1599,1601,1603,1605,1607,1609,1611,1613],{"class":259,"line":1028},[257,1598,503],{"class":263},[257,1600,506],{"class":340},[257,1602,883],{"class":271},[257,1604,396],{"class":267},[257,1606,450],{"class":271},[257,1608,396],{"class":267},[257,1610,455],{"class":271},[257,1612,515],{"class":340},[257,1614,334],{"class":267},[257,1616,1617,1620,1622,1625,1627,1630],{"class":259,"line":1038},[257,1618,1619],{"class":263},"      return",[257,1621,718],{"class":340},[257,1623,1624],{"class":271},"authenticatedPrompt",[257,1626,738],{"class":267},[257,1628,1629],{"class":271}," dashboardPrompt",[257,1631,1507],{"class":340},[257,1633,1634],{"class":259,"line":1044},[257,1635,1041],{"class":267},[257,1637,1638,1640,1642,1645],{"class":259,"line":1049},[257,1639,543],{"class":263},[257,1641,718],{"class":340},[257,1643,1644],{"class":271},"guestPrompt",[257,1646,1507],{"class":340},[257,1648,1650],{"class":259,"line":1649},21,[257,1651,427],{"class":267},[257,1653,1655,1657],{"class":259,"line":1654},22,[257,1656,561],{"class":267},[257,1658,564],{"class":271},[149,1660,1661],{},"这在以下场景中非常有用：",[1663,1664,1665,1668,1671],"ul",{},[169,1666,1667],{},"以编程方式从数据库或配置构建工具列表",[169,1669,1670],{},"从多个模块组合定义",[169,1672,1673],{},"应用复杂的过滤逻辑",[145,1675,1676],{"id":1676},"结合两种方法",[149,1678,1679,1681,1682,1684],{},[153,1680,175],{}," 守卫和动态处理器定义可以协同工作。当你使用动态处理器定义时，返回的每个定义的 ",[153,1683,175],{}," 守卫仍然会被评估：",[247,1686,1688],{"className":249,"code":1687,"filename":1065,"language":252,"meta":253,"style":253},"import { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpHandler({\n  middleware: async (event) => {\n    event.context.user = await getUser(event)\n  },\n  tools: async (event) => {\n    const allTools = await loadToolsFromConfig()\n    return allTools\n  },\n})\n",[153,1689,1690,1708,1712,1724,1742,1766,1770,1788,1804,1811,1815],{"__ignoreMap":253},[257,1691,1692,1694,1696,1698,1700,1702,1704,1706],{"class":259,"line":260},[257,1693,264],{"class":263},[257,1695,268],{"class":267},[257,1697,1095],{"class":271},[257,1699,275],{"class":267},[257,1701,278],{"class":263},[257,1703,281],{"class":267},[257,1705,307],{"class":284},[257,1707,288],{"class":267},[257,1709,1710],{"class":259,"line":291},[257,1711,316],{"emptyLinePlaceholder":315},[257,1713,1714,1716,1718,1720,1722],{"class":259,"line":312},[257,1715,322],{"class":263},[257,1717,325],{"class":263},[257,1719,1095],{"class":328},[257,1721,331],{"class":271},[257,1723,334],{"class":267},[257,1725,1726,1728,1730,1732,1734,1736,1738,1740],{"class":259,"line":319},[257,1727,1126],{"class":328},[257,1729,344],{"class":267},[257,1731,484],{"class":442},[257,1733,506],{"class":267},[257,1735,883],{"class":438},[257,1737,419],{"class":267},[257,1739,443],{"class":442},[257,1741,383],{"class":267},[257,1743,1744,1746,1748,1750,1752,1754,1756,1758,1760,1762,1764],{"class":259,"line":337},[257,1745,1443],{"class":271},[257,1747,396],{"class":267},[257,1749,450],{"class":271},[257,1751,396],{"class":267},[257,1753,455],{"class":271},[257,1755,918],{"class":267},[257,1757,746],{"class":263},[257,1759,1458],{"class":328},[257,1761,331],{"class":340},[257,1763,883],{"class":271},[257,1765,564],{"class":340},[257,1767,1768],{"class":259,"line":358},[257,1769,427],{"class":267},[257,1771,1772,1774,1776,1778,1780,1782,1784,1786],{"class":259,"line":375},[257,1773,1473],{"class":328},[257,1775,344],{"class":267},[257,1777,484],{"class":442},[257,1779,506],{"class":267},[257,1781,883],{"class":438},[257,1783,419],{"class":267},[257,1785,443],{"class":442},[257,1787,383],{"class":267},[257,1789,1790,1792,1795,1797,1799,1802],{"class":259,"line":386},[257,1791,913],{"class":442},[257,1793,1794],{"class":271}," allTools",[257,1796,918],{"class":267},[257,1798,746],{"class":263},[257,1800,1801],{"class":328}," loadToolsFromConfig",[257,1803,537],{"class":340},[257,1805,1806,1808],{"class":259,"line":424},[257,1807,543],{"class":263},[257,1809,1810],{"class":271}," allTools\n",[257,1812,1813],{"class":259,"line":430},[257,1814,427],{"class":267},[257,1816,1817,1819],{"class":259,"line":476},[257,1818,561],{"class":267},[257,1820,564],{"class":271},[247,1822,1825],{"className":249,"code":1823,"filename":1824,"language":252,"meta":253,"style":253},"import { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  name: 'admin-delete',\n  enabled: event => event.context.user?.role === 'admin',\n  handler: async () => { \u002F* ... *\u002F },\n})\n","server\u002Fmcp\u002Ftools\u002Fadmin-delete.ts",[153,1826,1827,1845,1849,1861,1876,1910,1931],{"__ignoreMap":253},[257,1828,1829,1831,1833,1835,1837,1839,1841,1843],{"class":259,"line":260},[257,1830,264],{"class":263},[257,1832,268],{"class":267},[257,1834,298],{"class":271},[257,1836,275],{"class":267},[257,1838,278],{"class":263},[257,1840,281],{"class":267},[257,1842,307],{"class":284},[257,1844,288],{"class":267},[257,1846,1847],{"class":259,"line":291},[257,1848,316],{"emptyLinePlaceholder":315},[257,1850,1851,1853,1855,1857,1859],{"class":259,"line":312},[257,1852,322],{"class":263},[257,1854,325],{"class":263},[257,1856,298],{"class":328},[257,1858,331],{"class":271},[257,1860,334],{"class":267},[257,1862,1863,1865,1867,1869,1872,1874],{"class":259,"line":319},[257,1864,341],{"class":340},[257,1866,344],{"class":267},[257,1868,281],{"class":267},[257,1870,1871],{"class":284},"admin-delete",[257,1873,352],{"class":267},[257,1875,355],{"class":267},[257,1877,1878,1880,1882,1884,1886,1888,1890,1892,1894,1896,1898,1900,1902,1904,1906,1908],{"class":259,"line":337},[257,1879,433],{"class":328},[257,1881,344],{"class":267},[257,1883,439],{"class":438},[257,1885,443],{"class":442},[257,1887,439],{"class":271},[257,1889,396],{"class":267},[257,1891,450],{"class":271},[257,1893,396],{"class":267},[257,1895,455],{"class":271},[257,1897,458],{"class":267},[257,1899,461],{"class":271},[257,1901,464],{"class":267},[257,1903,281],{"class":267},[257,1905,469],{"class":284},[257,1907,352],{"class":267},[257,1909,355],{"class":267},[257,1911,1912,1914,1916,1918,1920,1922,1924,1928],{"class":259,"line":358},[257,1913,479],{"class":328},[257,1915,344],{"class":267},[257,1917,484],{"class":442},[257,1919,904],{"class":267},[257,1921,443],{"class":442},[257,1923,268],{"class":267},[257,1925,1927],{"class":1926},"sHwdD"," \u002F* ... *\u002F",[257,1929,1930],{"class":267}," },\n",[257,1932,1933,1935],{"class":259,"line":375},[257,1934,561],{"class":267},[257,1936,564],{"class":271},[149,1938,1939,1940,1942,1943,1946,1947,1949],{},"在这种情况下，",[153,1941,1871],{}," 通过自动发现（或动态方式）加载，",[158,1944,1945],{},"并且","会经过其 ",[153,1948,175],{}," 守卫的过滤。",[145,1951,1952],{"id":1952},"会话行为",[149,1954,1955,1956,1960,1961,1964],{},"当启用",[1957,1958,1959],"a",{"href":97},"会话","时，MCP 服务器会在会话的",[158,1962,1963],{},"第一次请求","时创建。动态定义会在此时解析，并且相同的工具集将在整个会话生命周期内保持不变。",[149,1966,1967],{},"这意味着：",[1663,1969,1970,1973,1976],{},[169,1971,1972],{},"连接的管理员将在整个会话期间获得管理员工具",[169,1974,1975],{},"连接的普通用户永远看不到管理员工具，即使他们在会话中途获得了管理员权限",[169,1977,1978],{},"不同的会话可以拥有不同的工具集",[149,1980,1981],{},"如果不使用会话，则每次请求都会创建一个新的服务器，因此定义可能会因请求而异。",[145,1983,1984],{"id":1984},"会话期间的变更",[149,1986,1987,1989,1990,1993,1994,1997,1998,2001],{},[153,1988,175],{}," 守卫和动态处理器定义控制",[158,1991,1992],{},"会话启动时","注册哪些定义。对于需要在活跃会话",[158,1995,1996],{},"期间","添加、移除或更新定义的情况，请使用 ",[153,1999,2000],{},"useMcpServer()"," 组合式函数。",[149,2003,2004,2006,2007,2010],{},[153,2005,2000],{}," 返回一个辅助对象，其中包含用于注册、移除和管理工具、提示词和资源的方法。SDK 会自动向客户端发送 ",[153,2008,2009],{},"notifications\u002Ftools\u002Flist_changed","（或提示词\u002F资源的等效通知），提示其重新获取列表。",[244,2012,2014],{"id":2013},"api","API",[2016,2017,2018,2031],"table",{},[2019,2020,2021],"thead",{},[2022,2023,2024,2028],"tr",{},[2025,2026,2027],"th",{},"方法",[2025,2029,2030],{},"描述",[2032,2033,2034,2049,2062,2075,2089,2101,2113],"tbody",{},[2022,2035,2036,2042],{},[2037,2038,2039],"td",{},[153,2040,2041],{},"registerTool(name, config, handler)",[2037,2043,2044,2045,2048],{},"注册一个新工具。返回 ",[153,2046,2047],{},"RegisteredTool"," 句柄。",[2022,2050,2051,2056],{},[2037,2052,2053],{},[153,2054,2055],{},"registerPrompt(name, config, handler)",[2037,2057,2058,2059,2048],{},"注册一个新提示词。返回 ",[153,2060,2061],{},"RegisteredPrompt",[2022,2063,2064,2069],{},[2037,2065,2066],{},[153,2067,2068],{},"registerResource(name, uri, config, handler)",[2037,2070,2071,2072,2048],{},"注册一个新资源。返回 ",[153,2073,2074],{},"RegisteredResource",[2022,2076,2077,2082],{},[2037,2078,2079],{},[153,2080,2081],{},"removeTool(name)",[2037,2083,2084,2085,2088],{},"按名称移除工具。如果找到则返回 ",[153,2086,2087],{},"true","。",[2022,2090,2091,2096],{},[2037,2092,2093],{},[153,2094,2095],{},"removePrompt(name)",[2037,2097,2098,2099,2088],{},"按名称移除提示词。如果找到则返回 ",[153,2100,2087],{},[2022,2102,2103,2108],{},[2037,2104,2105],{},[153,2106,2107],{},"removeResource(name)",[2037,2109,2110,2111,2088],{},"按名称移除资源。如果找到则返回 ",[153,2112,2087],{},[2022,2114,2115,2120],{},[2037,2116,2117],{},[153,2118,2119],{},"server",[2037,2121,2122,2123,2126],{},"底层的 ",[153,2124,2125],{},"McpServer"," 实例，用于高级 SDK 操作。",[244,2128,2129],{"id":2129},"在会话期间注册工具",[247,2131,2134],{"className":249,"code":2132,"filename":2133,"language":252,"meta":253,"style":253},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  description: 'Create a shortcut tool for a specific query',\n  inputSchema: {\n    name: z.string().describe('Name for the shortcut tool'),\n    query: z.string().describe('The query this shortcut runs'),\n  },\n  handler: async ({ name, query }) => {\n    const mcp = useMcpServer()\n    mcp.registerTool(name, {\n      description: `Shortcut: ${query}`,\n    }, async () => {\n      const result = await runQuery(query)\n      return { content: [{ type: 'text', text: JSON.stringify(result) }] }\n    })\n    return `Shortcut \"${name}\" created`\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fcreate-shortcut.ts",[153,2135,2136,2154,2172,2176,2188,2203,2211,2244,2276,2280,2304,2318,2336,2358,2371,2392,2447,2454,2475,2479],{"__ignoreMap":253},[257,2137,2138,2140,2142,2144,2146,2148,2150,2152],{"class":259,"line":260},[257,2139,264],{"class":263},[257,2141,268],{"class":267},[257,2143,272],{"class":271},[257,2145,275],{"class":267},[257,2147,278],{"class":263},[257,2149,281],{"class":267},[257,2151,285],{"class":284},[257,2153,288],{"class":267},[257,2155,2156,2158,2160,2162,2164,2166,2168,2170],{"class":259,"line":291},[257,2157,264],{"class":263},[257,2159,268],{"class":267},[257,2161,298],{"class":271},[257,2163,275],{"class":267},[257,2165,278],{"class":263},[257,2167,281],{"class":267},[257,2169,307],{"class":284},[257,2171,288],{"class":267},[257,2173,2174],{"class":259,"line":312},[257,2175,316],{"emptyLinePlaceholder":315},[257,2177,2178,2180,2182,2184,2186],{"class":259,"line":319},[257,2179,322],{"class":263},[257,2181,325],{"class":263},[257,2183,298],{"class":328},[257,2185,331],{"class":271},[257,2187,334],{"class":267},[257,2189,2190,2192,2194,2196,2199,2201],{"class":259,"line":337},[257,2191,361],{"class":340},[257,2193,344],{"class":267},[257,2195,281],{"class":267},[257,2197,2198],{"class":284},"Create a shortcut tool for a specific query",[257,2200,352],{"class":267},[257,2202,355],{"class":267},[257,2204,2205,2207,2209],{"class":259,"line":358},[257,2206,378],{"class":340},[257,2208,344],{"class":267},[257,2210,383],{"class":267},[257,2212,2213,2216,2218,2220,2222,2225,2227,2229,2231,2233,2235,2238,2240,2242],{"class":259,"line":375},[257,2214,2215],{"class":340},"    name",[257,2217,344],{"class":267},[257,2219,272],{"class":271},[257,2221,396],{"class":267},[257,2223,2224],{"class":328},"string",[257,2226,402],{"class":271},[257,2228,396],{"class":267},[257,2230,407],{"class":328},[257,2232,331],{"class":271},[257,2234,352],{"class":267},[257,2236,2237],{"class":284},"Name for the shortcut tool",[257,2239,352],{"class":267},[257,2241,419],{"class":271},[257,2243,355],{"class":267},[257,2245,2246,2249,2251,2253,2255,2257,2259,2261,2263,2265,2267,2270,2272,2274],{"class":259,"line":386},[257,2247,2248],{"class":340},"    query",[257,2250,344],{"class":267},[257,2252,272],{"class":271},[257,2254,396],{"class":267},[257,2256,2224],{"class":328},[257,2258,402],{"class":271},[257,2260,396],{"class":267},[257,2262,407],{"class":328},[257,2264,331],{"class":271},[257,2266,352],{"class":267},[257,2268,2269],{"class":284},"The query this shortcut runs",[257,2271,352],{"class":267},[257,2273,419],{"class":271},[257,2275,355],{"class":267},[257,2277,2278],{"class":259,"line":424},[257,2279,427],{"class":267},[257,2281,2282,2284,2286,2288,2290,2293,2295,2298,2300,2302],{"class":259,"line":430},[257,2283,479],{"class":328},[257,2285,344],{"class":267},[257,2287,484],{"class":442},[257,2289,487],{"class":267},[257,2291,2292],{"class":438}," name",[257,2294,738],{"class":267},[257,2296,2297],{"class":438}," query",[257,2299,493],{"class":267},[257,2301,443],{"class":442},[257,2303,383],{"class":267},[257,2305,2306,2308,2311,2313,2316],{"class":259,"line":476},[257,2307,913],{"class":442},[257,2309,2310],{"class":271}," mcp",[257,2312,918],{"class":267},[257,2314,2315],{"class":328}," useMcpServer",[257,2317,537],{"class":340},[257,2319,2320,2323,2325,2328,2330,2332,2334],{"class":259,"line":500},[257,2321,2322],{"class":271},"    mcp",[257,2324,396],{"class":267},[257,2326,2327],{"class":328},"registerTool",[257,2329,331],{"class":340},[257,2331,1010],{"class":271},[257,2333,738],{"class":267},[257,2335,383],{"class":267},[257,2337,2338,2341,2343,2345,2348,2350,2353,2356],{"class":259,"line":528},[257,2339,2340],{"class":340},"      description",[257,2342,344],{"class":267},[257,2344,989],{"class":267},[257,2346,2347],{"class":284},"Shortcut: ",[257,2349,995],{"class":267},[257,2351,2352],{"class":271},"query",[257,2354,2355],{"class":267},"}`",[257,2357,355],{"class":267},[257,2359,2360,2363,2365,2367,2369],{"class":259,"line":540},[257,2361,2362],{"class":267},"    },",[257,2364,484],{"class":442},[257,2366,904],{"class":267},[257,2368,443],{"class":442},[257,2370,383],{"class":267},[257,2372,2373,2376,2379,2381,2383,2386,2388,2390],{"class":259,"line":553},[257,2374,2375],{"class":442},"      const",[257,2377,2378],{"class":271}," result",[257,2380,918],{"class":267},[257,2382,746],{"class":263},[257,2384,2385],{"class":328}," runQuery",[257,2387,331],{"class":340},[257,2389,2352],{"class":271},[257,2391,564],{"class":340},[257,2393,2394,2396,2398,2401,2403,2405,2407,2410,2412,2414,2416,2418,2420,2422,2424,2427,2429,2432,2434,2437,2439,2441,2444],{"class":259,"line":558},[257,2395,1619],{"class":263},[257,2397,268],{"class":267},[257,2399,2400],{"class":340}," content",[257,2402,344],{"class":267},[257,2404,718],{"class":340},[257,2406,721],{"class":267},[257,2408,2409],{"class":340}," type",[257,2411,344],{"class":267},[257,2413,281],{"class":267},[257,2415,975],{"class":284},[257,2417,352],{"class":267},[257,2419,738],{"class":267},[257,2421,741],{"class":340},[257,2423,344],{"class":267},[257,2425,2426],{"class":271}," JSON",[257,2428,396],{"class":267},[257,2430,2431],{"class":328},"stringify",[257,2433,331],{"class":340},[257,2435,2436],{"class":271},"result",[257,2438,515],{"class":340},[257,2440,561],{"class":267},[257,2442,2443],{"class":340},"] ",[257,2445,2446],{"class":267},"}\n",[257,2448,2449,2452],{"class":259,"line":1028},[257,2450,2451],{"class":267},"    }",[257,2453,564],{"class":340},[257,2455,2456,2458,2460,2463,2465,2467,2469,2472],{"class":259,"line":1038},[257,2457,543],{"class":263},[257,2459,989],{"class":267},[257,2461,2462],{"class":284},"Shortcut \"",[257,2464,995],{"class":267},[257,2466,1010],{"class":271},[257,2468,561],{"class":267},[257,2470,2471],{"class":284},"\" created",[257,2473,2474],{"class":267},"`\n",[257,2476,2477],{"class":259,"line":1044},[257,2478,427],{"class":267},[257,2480,2481,2483],{"class":259,"line":1049},[257,2482,561],{"class":267},[257,2484,564],{"class":271},[149,2486,2487],{},"调用此工具后，客户端的工具列表将刷新并包含新的快捷方式。",[244,2489,2490],{"id":2490},"在会话期间移除工具",[149,2492,2493,2494,2496],{},"使用 ",[153,2495,2081],{}," 按名称移除工具——无需存储句柄：",[247,2498,2501],{"className":249,"code":2499,"filename":2500,"language":252,"meta":253,"style":253},"import { z } from 'zod'\nimport { createError } from 'h3'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport const registerAgent = defineMcpTool({\n  name: 'register-agent',\n  inputSchema: {\n    agentId: z.string(),\n    agentName: z.string(),\n  },\n  handler: async ({ agentId, agentName }) => {\n    const mcp = useMcpServer()\n    mcp.registerTool(`call-${agentId}`, {\n      description: `Call agent: ${agentName}`,\n    }, async () => {\n      const response = await callAgent(agentId)\n      return { content: [{ type: 'text', text: response }] }\n    })\n    return `Agent \"${agentName}\" registered`\n  },\n})\n\nexport const unregisterAgent = defineMcpTool({\n  name: 'unregister-agent',\n  inputSchema: {\n    agentId: z.string(),\n  },\n  handler: async ({ agentId }) => {\n    const mcp = useMcpServer()\n    const removed = mcp.removeTool(`call-${agentId}`)\n    if (!removed) throw createError({ statusCode: 404, message: `Agent \"${agentId}\" not found` })\n    return `Agent \"${agentId}\" unregistered`\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fmanage-agents.ts",[153,2502,2503,2521,2540,2558,2562,2581,2596,2604,2621,2638,2642,2666,2678,2704,2724,2736,2756,2794,2800,2820,2824,2830,2834,2852,2868,2877,2894,2899,2918,2931,2962,3020,3040,3045],{"__ignoreMap":253},[257,2504,2505,2507,2509,2511,2513,2515,2517,2519],{"class":259,"line":260},[257,2506,264],{"class":263},[257,2508,268],{"class":267},[257,2510,272],{"class":271},[257,2512,275],{"class":267},[257,2514,278],{"class":263},[257,2516,281],{"class":267},[257,2518,285],{"class":284},[257,2520,288],{"class":267},[257,2522,2523,2525,2527,2530,2532,2534,2536,2538],{"class":259,"line":291},[257,2524,264],{"class":263},[257,2526,268],{"class":267},[257,2528,2529],{"class":271}," createError",[257,2531,275],{"class":267},[257,2533,278],{"class":263},[257,2535,281],{"class":267},[257,2537,244],{"class":284},[257,2539,288],{"class":267},[257,2541,2542,2544,2546,2548,2550,2552,2554,2556],{"class":259,"line":312},[257,2543,264],{"class":263},[257,2545,268],{"class":267},[257,2547,298],{"class":271},[257,2549,275],{"class":267},[257,2551,278],{"class":263},[257,2553,281],{"class":267},[257,2555,307],{"class":284},[257,2557,288],{"class":267},[257,2559,2560],{"class":259,"line":319},[257,2561,316],{"emptyLinePlaceholder":315},[257,2563,2564,2566,2569,2572,2575,2577,2579],{"class":259,"line":337},[257,2565,322],{"class":263},[257,2567,2568],{"class":442}," const",[257,2570,2571],{"class":271}," registerAgent ",[257,2573,2574],{"class":267},"=",[257,2576,298],{"class":328},[257,2578,331],{"class":271},[257,2580,334],{"class":267},[257,2582,2583,2585,2587,2589,2592,2594],{"class":259,"line":358},[257,2584,341],{"class":340},[257,2586,344],{"class":267},[257,2588,281],{"class":267},[257,2590,2591],{"class":284},"register-agent",[257,2593,352],{"class":267},[257,2595,355],{"class":267},[257,2597,2598,2600,2602],{"class":259,"line":375},[257,2599,378],{"class":340},[257,2601,344],{"class":267},[257,2603,383],{"class":267},[257,2605,2606,2609,2611,2613,2615,2617,2619],{"class":259,"line":386},[257,2607,2608],{"class":340},"    agentId",[257,2610,344],{"class":267},[257,2612,272],{"class":271},[257,2614,396],{"class":267},[257,2616,2224],{"class":328},[257,2618,402],{"class":271},[257,2620,355],{"class":267},[257,2622,2623,2626,2628,2630,2632,2634,2636],{"class":259,"line":424},[257,2624,2625],{"class":340},"    agentName",[257,2627,344],{"class":267},[257,2629,272],{"class":271},[257,2631,396],{"class":267},[257,2633,2224],{"class":328},[257,2635,402],{"class":271},[257,2637,355],{"class":267},[257,2639,2640],{"class":259,"line":430},[257,2641,427],{"class":267},[257,2643,2644,2646,2648,2650,2652,2655,2657,2660,2662,2664],{"class":259,"line":476},[257,2645,479],{"class":328},[257,2647,344],{"class":267},[257,2649,484],{"class":442},[257,2651,487],{"class":267},[257,2653,2654],{"class":438}," agentId",[257,2656,738],{"class":267},[257,2658,2659],{"class":438}," agentName",[257,2661,493],{"class":267},[257,2663,443],{"class":442},[257,2665,383],{"class":267},[257,2667,2668,2670,2672,2674,2676],{"class":259,"line":500},[257,2669,913],{"class":442},[257,2671,2310],{"class":271},[257,2673,918],{"class":267},[257,2675,2315],{"class":328},[257,2677,537],{"class":340},[257,2679,2680,2682,2684,2686,2688,2690,2693,2695,2698,2700,2702],{"class":259,"line":528},[257,2681,2322],{"class":271},[257,2683,396],{"class":267},[257,2685,2327],{"class":328},[257,2687,331],{"class":340},[257,2689,1018],{"class":267},[257,2691,2692],{"class":284},"call-",[257,2694,995],{"class":267},[257,2696,2697],{"class":271},"agentId",[257,2699,2355],{"class":267},[257,2701,738],{"class":267},[257,2703,383],{"class":267},[257,2705,2706,2708,2710,2712,2715,2717,2720,2722],{"class":259,"line":540},[257,2707,2340],{"class":340},[257,2709,344],{"class":267},[257,2711,989],{"class":267},[257,2713,2714],{"class":284},"Call agent: ",[257,2716,995],{"class":267},[257,2718,2719],{"class":271},"agentName",[257,2721,2355],{"class":267},[257,2723,355],{"class":267},[257,2725,2726,2728,2730,2732,2734],{"class":259,"line":553},[257,2727,2362],{"class":267},[257,2729,484],{"class":442},[257,2731,904],{"class":267},[257,2733,443],{"class":442},[257,2735,383],{"class":267},[257,2737,2738,2740,2743,2745,2747,2750,2752,2754],{"class":259,"line":558},[257,2739,2375],{"class":442},[257,2741,2742],{"class":271}," response",[257,2744,918],{"class":267},[257,2746,746],{"class":263},[257,2748,2749],{"class":328}," callAgent",[257,2751,331],{"class":340},[257,2753,2697],{"class":271},[257,2755,564],{"class":340},[257,2757,2758,2760,2762,2764,2766,2768,2770,2772,2774,2776,2778,2780,2782,2784,2786,2788,2790,2792],{"class":259,"line":1028},[257,2759,1619],{"class":263},[257,2761,268],{"class":267},[257,2763,2400],{"class":340},[257,2765,344],{"class":267},[257,2767,718],{"class":340},[257,2769,721],{"class":267},[257,2771,2409],{"class":340},[257,2773,344],{"class":267},[257,2775,281],{"class":267},[257,2777,975],{"class":284},[257,2779,352],{"class":267},[257,2781,738],{"class":267},[257,2783,741],{"class":340},[257,2785,344],{"class":267},[257,2787,2742],{"class":271},[257,2789,275],{"class":267},[257,2791,2443],{"class":340},[257,2793,2446],{"class":267},[257,2795,2796,2798],{"class":259,"line":1038},[257,2797,2451],{"class":267},[257,2799,564],{"class":340},[257,2801,2802,2804,2806,2809,2811,2813,2815,2818],{"class":259,"line":1044},[257,2803,543],{"class":263},[257,2805,989],{"class":267},[257,2807,2808],{"class":284},"Agent \"",[257,2810,995],{"class":267},[257,2812,2719],{"class":271},[257,2814,561],{"class":267},[257,2816,2817],{"class":284},"\" registered",[257,2819,2474],{"class":267},[257,2821,2822],{"class":259,"line":1049},[257,2823,427],{"class":267},[257,2825,2826,2828],{"class":259,"line":1649},[257,2827,561],{"class":267},[257,2829,564],{"class":271},[257,2831,2832],{"class":259,"line":1654},[257,2833,316],{"emptyLinePlaceholder":315},[257,2835,2837,2839,2841,2844,2846,2848,2850],{"class":259,"line":2836},23,[257,2838,322],{"class":263},[257,2840,2568],{"class":442},[257,2842,2843],{"class":271}," unregisterAgent ",[257,2845,2574],{"class":267},[257,2847,298],{"class":328},[257,2849,331],{"class":271},[257,2851,334],{"class":267},[257,2853,2855,2857,2859,2861,2864,2866],{"class":259,"line":2854},24,[257,2856,341],{"class":340},[257,2858,344],{"class":267},[257,2860,281],{"class":267},[257,2862,2863],{"class":284},"unregister-agent",[257,2865,352],{"class":267},[257,2867,355],{"class":267},[257,2869,2871,2873,2875],{"class":259,"line":2870},25,[257,2872,378],{"class":340},[257,2874,344],{"class":267},[257,2876,383],{"class":267},[257,2878,2880,2882,2884,2886,2888,2890,2892],{"class":259,"line":2879},26,[257,2881,2608],{"class":340},[257,2883,344],{"class":267},[257,2885,272],{"class":271},[257,2887,396],{"class":267},[257,2889,2224],{"class":328},[257,2891,402],{"class":271},[257,2893,355],{"class":267},[257,2895,2897],{"class":259,"line":2896},27,[257,2898,427],{"class":267},[257,2900,2902,2904,2906,2908,2910,2912,2914,2916],{"class":259,"line":2901},28,[257,2903,479],{"class":328},[257,2905,344],{"class":267},[257,2907,484],{"class":442},[257,2909,487],{"class":267},[257,2911,2654],{"class":438},[257,2913,493],{"class":267},[257,2915,443],{"class":442},[257,2917,383],{"class":267},[257,2919,2921,2923,2925,2927,2929],{"class":259,"line":2920},29,[257,2922,913],{"class":442},[257,2924,2310],{"class":271},[257,2926,918],{"class":267},[257,2928,2315],{"class":328},[257,2930,537],{"class":340},[257,2932,2934,2936,2939,2941,2943,2945,2948,2950,2952,2954,2956,2958,2960],{"class":259,"line":2933},30,[257,2935,913],{"class":442},[257,2937,2938],{"class":271}," removed",[257,2940,918],{"class":267},[257,2942,2310],{"class":271},[257,2944,396],{"class":267},[257,2946,2947],{"class":328},"removeTool",[257,2949,331],{"class":340},[257,2951,1018],{"class":267},[257,2953,2692],{"class":284},[257,2955,995],{"class":267},[257,2957,2697],{"class":271},[257,2959,2355],{"class":267},[257,2961,564],{"class":340},[257,2963,2965,2967,2969,2971,2974,2976,2979,2981,2983,2985,2988,2990,2994,2996,2999,3001,3003,3005,3007,3009,3011,3014,3016,3018],{"class":259,"line":2964},31,[257,2966,503],{"class":263},[257,2968,506],{"class":340},[257,2970,509],{"class":267},[257,2972,2973],{"class":271},"removed",[257,2975,515],{"class":340},[257,2977,2978],{"class":263},"throw",[257,2980,2529],{"class":328},[257,2982,331],{"class":340},[257,2984,721],{"class":267},[257,2986,2987],{"class":340}," statusCode",[257,2989,344],{"class":267},[257,2991,2993],{"class":2992},"sbssI"," 404",[257,2995,738],{"class":267},[257,2997,2998],{"class":340}," message",[257,3000,344],{"class":267},[257,3002,989],{"class":267},[257,3004,2808],{"class":284},[257,3006,995],{"class":267},[257,3008,2697],{"class":271},[257,3010,561],{"class":267},[257,3012,3013],{"class":284},"\" not found",[257,3015,1018],{"class":267},[257,3017,275],{"class":267},[257,3019,564],{"class":340},[257,3021,3023,3025,3027,3029,3031,3033,3035,3038],{"class":259,"line":3022},32,[257,3024,543],{"class":263},[257,3026,989],{"class":267},[257,3028,2808],{"class":284},[257,3030,995],{"class":267},[257,3032,2697],{"class":271},[257,3034,561],{"class":267},[257,3036,3037],{"class":284},"\" unregistered",[257,3039,2474],{"class":267},[257,3041,3043],{"class":259,"line":3042},33,[257,3044,427],{"class":267},[257,3046,3048,3050],{"class":259,"line":3047},34,[257,3049,561],{"class":267},[257,3051,564],{"class":271},[244,3053,3054],{"id":3054},"更新和切换定义",[149,3056,3057,3058,3061,3062,3064],{},"对于就地更新，请使用 ",[153,3059,3060],{},"registerTool()"," 返回的 ",[153,3063,2047],{}," 句柄：",[247,3066,3068],{"className":249,"code":3067,"language":252,"meta":253,"style":253},"const mcp = useMcpServer()\nconst registered = mcp.registerTool('my-tool', { description: 'v1' }, handler)\n\n\u002F\u002F Update the description and handler\nregistered.update({ description: 'v2', callback: newHandler })\n\n\u002F\u002F Temporarily hide from the client\nregistered.disable()\n\n\u002F\u002F Re-enable\nregistered.enable()\n",[153,3069,3070,3084,3130,3134,3139,3178,3182,3187,3198,3202,3207],{"__ignoreMap":253},[257,3071,3072,3075,3078,3080,3082],{"class":259,"line":260},[257,3073,3074],{"class":442},"const",[257,3076,3077],{"class":271}," mcp ",[257,3079,2574],{"class":267},[257,3081,2315],{"class":328},[257,3083,537],{"class":271},[257,3085,3086,3088,3091,3093,3095,3097,3099,3101,3103,3106,3108,3110,3112,3115,3117,3119,3122,3124,3127],{"class":259,"line":291},[257,3087,3074],{"class":442},[257,3089,3090],{"class":271}," registered ",[257,3092,2574],{"class":267},[257,3094,2310],{"class":271},[257,3096,396],{"class":267},[257,3098,2327],{"class":328},[257,3100,331],{"class":271},[257,3102,352],{"class":267},[257,3104,3105],{"class":284},"my-tool",[257,3107,352],{"class":267},[257,3109,738],{"class":267},[257,3111,268],{"class":267},[257,3113,3114],{"class":340}," description",[257,3116,344],{"class":267},[257,3118,281],{"class":267},[257,3120,3121],{"class":284},"v1",[257,3123,352],{"class":267},[257,3125,3126],{"class":267}," },",[257,3128,3129],{"class":271}," handler)\n",[257,3131,3132],{"class":259,"line":312},[257,3133,316],{"emptyLinePlaceholder":315},[257,3135,3136],{"class":259,"line":319},[257,3137,3138],{"class":1926},"\u002F\u002F Update the description and handler\n",[257,3140,3141,3144,3146,3149,3151,3153,3155,3157,3159,3162,3164,3166,3169,3171,3174,3176],{"class":259,"line":337},[257,3142,3143],{"class":271},"registered",[257,3145,396],{"class":267},[257,3147,3148],{"class":328},"update",[257,3150,331],{"class":271},[257,3152,721],{"class":267},[257,3154,3114],{"class":340},[257,3156,344],{"class":267},[257,3158,281],{"class":267},[257,3160,3161],{"class":284},"v2",[257,3163,352],{"class":267},[257,3165,738],{"class":267},[257,3167,3168],{"class":340}," callback",[257,3170,344],{"class":267},[257,3172,3173],{"class":271}," newHandler ",[257,3175,561],{"class":267},[257,3177,564],{"class":271},[257,3179,3180],{"class":259,"line":358},[257,3181,316],{"emptyLinePlaceholder":315},[257,3183,3184],{"class":259,"line":375},[257,3185,3186],{"class":1926},"\u002F\u002F Temporarily hide from the client\n",[257,3188,3189,3191,3193,3196],{"class":259,"line":386},[257,3190,3143],{"class":271},[257,3192,396],{"class":267},[257,3194,3195],{"class":328},"disable",[257,3197,537],{"class":271},[257,3199,3200],{"class":259,"line":424},[257,3201,316],{"emptyLinePlaceholder":315},[257,3203,3204],{"class":259,"line":430},[257,3205,3206],{"class":1926},"\u002F\u002F Re-enable\n",[257,3208,3209,3211,3213,3216],{"class":259,"line":476},[257,3210,3143],{"class":271},[257,3212,396],{"class":267},[257,3214,3215],{"class":328},"enable",[257,3217,537],{"class":271},[149,3219,3220,3221,223,3224,3227],{},"相同的模式也适用于 ",[153,3222,3223],{},"registerPrompt()",[153,3225,3226],{},"registerResource()","，它们会返回具有相同方法的句柄。",[244,3229,3230],{"id":3230},"要求",[1663,3232,3233,3248],{},[169,3234,3235,3236,3241,3242,3244,3245,3247],{},"Nuxt 配置中的 ",[158,3237,3238],{},[153,3239,3240],{},"nitro.experimental.asyncContext"," 必须为 ",[153,3243,2087],{},"（",[153,3246,2000],{}," 访问请求上下文所必需）",[169,3249,3250,3251,3254],{},"会话期间的变更在",[158,3252,3253],{},"启用会话","时最有用，因为服务器实例会在请求之间持久存在。如果不使用会话，每次请求都会创建一个新的服务器，因此变更仅对单个请求有效。",[200,3256,3259,3260,3262],{"color":3257,"icon":3258},"warning","i-lucide-triangle-alert","并非所有 MCP 客户端都支持 ",[153,3261,2009],{},"。如果客户端不支持，用户可能需要重新连接才能看到更新的定义。请查阅客户端文档以确认兼容性。",[145,3264,81],{"id":252},[149,3266,3267],{},"为实现类型安全的上下文，请扩展 H3 事件上下文：",[247,3269,3272],{"className":249,"code":3270,"filename":3271,"language":252,"meta":253,"style":253},"declare module 'h3' {\n  interface H3EventContext {\n    user?: {\n      id: string\n      name: string\n      role: 'user' | 'admin'\n    }\n  }\n}\n","server\u002Ftypes.ts",[153,3273,3274,3290,3301,3311,3321,3330,3352,3356,3361],{"__ignoreMap":253},[257,3275,3276,3279,3282,3284,3286,3288],{"class":259,"line":260},[257,3277,3278],{"class":442},"declare",[257,3280,3281],{"class":442}," module",[257,3283,281],{"class":267},[257,3285,244],{"class":284},[257,3287,352],{"class":267},[257,3289,383],{"class":267},[257,3291,3292,3295,3299],{"class":259,"line":291},[257,3293,3294],{"class":442},"  interface",[257,3296,3298],{"class":3297},"sBMFI"," H3EventContext",[257,3300,383],{"class":267},[257,3302,3303,3306,3309],{"class":259,"line":312},[257,3304,3305],{"class":340},"    user",[257,3307,3308],{"class":267},"?:",[257,3310,383],{"class":267},[257,3312,3313,3316,3318],{"class":259,"line":319},[257,3314,3315],{"class":340},"      id",[257,3317,344],{"class":267},[257,3319,3320],{"class":3297}," string\n",[257,3322,3323,3326,3328],{"class":259,"line":337},[257,3324,3325],{"class":340},"      name",[257,3327,344],{"class":267},[257,3329,3320],{"class":3297},[257,3331,3332,3335,3337,3339,3341,3343,3346,3348,3350],{"class":259,"line":358},[257,3333,3334],{"class":340},"      role",[257,3336,344],{"class":267},[257,3338,281],{"class":267},[257,3340,455],{"class":284},[257,3342,352],{"class":267},[257,3344,3345],{"class":267}," |",[257,3347,281],{"class":267},[257,3349,469],{"class":284},[257,3351,288],{"class":267},[257,3353,3354],{"class":259,"line":375},[257,3355,1041],{"class":267},[257,3357,3358],{"class":259,"line":386},[257,3359,3360],{"class":267},"  }\n",[257,3362,3363],{"class":259,"line":424},[257,3364,2446],{"class":267},[145,3366,3367],{"id":3367},"后续步骤",[1663,3369,3370,3375,3380],{},[169,3371,3372,3374],{},[1957,3373,76],{"href":77}," — 设置身份验证上下文",[169,3376,3377,3379],{},[1957,3378,1959],{"href":97}," — 启用每个会话的状态",[169,3381,3382,3385],{},[1957,3383,3384],{"href":62},"处理函数"," — 创建自定义 MCP 端点",[3387,3388,3389],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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);}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":253,"searchDepth":291,"depth":291,"links":3391},[3392,3393,3400,3401,3402,3403,3410,3411],{"id":147,"depth":291,"text":147},{"id":230,"depth":291,"text":3394,"children":3395},"enabled 守卫",[3396,3397,3398,3399],{"id":46,"depth":312,"text":46},{"id":51,"depth":312,"text":51},{"id":777,"depth":312,"text":777},{"id":1056,"depth":312,"text":1056},{"id":182,"depth":291,"text":182},{"id":1676,"depth":291,"text":1676},{"id":1952,"depth":291,"text":1952},{"id":1984,"depth":291,"text":1984,"children":3404},[3405,3406,3407,3408,3409],{"id":2013,"depth":312,"text":2014},{"id":2129,"depth":312,"text":2129},{"id":2490,"depth":312,"text":2490},{"id":3054,"depth":312,"text":3054},{"id":3230,"depth":312,"text":3230},{"id":252,"depth":291,"text":81},{"id":3367,"depth":291,"text":3367},"根据身份验证、角色或请求上下文有条件地注册工具、资源和提示词。","md",null,{},{"icon":104},{"title":3418,"description":3419},"动态 MCP 定义","使用 enabled 守卫和动态处理器控制每个会话中可见的 MCP 工具、资源和提示词。","QojL8sus7KG74FJSGlfp01VlWw5iRGZ30Tjpo5L48AQ",[3422,3424],{"title":96,"path":97,"stem":98,"description":3423,"icon":99,"children":-1},"使用 useMcpSession() 在工具调用之间持久化每个会话的状态。",{"title":106,"path":107,"stem":108,"description":3425,"icon":109,"children":-1},"让大语言模型在单次 JavaScript 执行中编排多次工具调用。",1775615721144]