[{"data":1,"prerenderedAt":910},["ShallowReactive",2],{"navigation_docs":3,"-examples-api-integration":139,"-examples-api-integration-surround":905},[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":121,"body":141,"description":898,"extension":899,"links":900,"meta":901,"navigation":902,"path":122,"seo":903,"stem":123,"__hash__":904},"docs\u002F4.examples\u002F2.api-integration.md",{"type":142,"value":143,"toc":893},"minimark",[144,148,152,411,415,426,477,480,851,863,866,889],[145,146,147],"h2",{"id":147},"获取外部数据",[149,150,151],"p",{},"这是一个从公共 API 获取数据的简单工具：",[153,154,160],"pre",{"className":155,"code":156,"filename":157,"language":158,"meta":159,"style":159},"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  description: 'Get current weather for a city',\n  inputSchema: {\n    city: z.string().describe('City name'),\n  },\n  cache: '15m',\n  handler: async ({ city }) => {\n    return await $fetch(`https:\u002F\u002Fwttr.in\u002F${city}?format=j1`)\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fget-weather.ts","typescript","",[161,162,163,196,217,224,242,263,274,312,318,335,362,399,404],"code",{"__ignoreMap":159},[164,165,168,172,176,180,183,186,189,193],"span",{"class":166,"line":167},"line",1,[164,169,171],{"class":170},"s7zQu","import",[164,173,175],{"class":174},"sMK4o"," {",[164,177,179],{"class":178},"sTEyZ"," z",[164,181,182],{"class":174}," }",[164,184,185],{"class":170}," from",[164,187,188],{"class":174}," '",[164,190,192],{"class":191},"sfazB","zod",[164,194,195],{"class":174},"'\n",[164,197,199,201,203,206,208,210,212,215],{"class":166,"line":198},2,[164,200,171],{"class":170},[164,202,175],{"class":174},[164,204,205],{"class":178}," defineMcpTool",[164,207,182],{"class":174},[164,209,185],{"class":170},[164,211,188],{"class":174},[164,213,214],{"class":191},"@nuxtjs\u002Fmcp-toolkit\u002Fserver",[164,216,195],{"class":174},[164,218,220],{"class":166,"line":219},3,[164,221,223],{"emptyLinePlaceholder":222},true,"\n",[164,225,227,230,233,236,239],{"class":166,"line":226},4,[164,228,229],{"class":170},"export",[164,231,232],{"class":170}," default",[164,234,205],{"class":235},"s2Zo4",[164,237,238],{"class":178},"(",[164,240,241],{"class":174},"{\n",[164,243,245,249,252,254,257,260],{"class":166,"line":244},5,[164,246,248],{"class":247},"swJcz","  description",[164,250,251],{"class":174},":",[164,253,188],{"class":174},[164,255,256],{"class":191},"Get current weather for a city",[164,258,259],{"class":174},"'",[164,261,262],{"class":174},",\n",[164,264,266,269,271],{"class":166,"line":265},6,[164,267,268],{"class":247},"  inputSchema",[164,270,251],{"class":174},[164,272,273],{"class":174}," {\n",[164,275,277,280,282,284,287,290,293,295,298,300,302,305,307,310],{"class":166,"line":276},7,[164,278,279],{"class":247},"    city",[164,281,251],{"class":174},[164,283,179],{"class":178},[164,285,286],{"class":174},".",[164,288,289],{"class":235},"string",[164,291,292],{"class":178},"()",[164,294,286],{"class":174},[164,296,297],{"class":235},"describe",[164,299,238],{"class":178},[164,301,259],{"class":174},[164,303,304],{"class":191},"City name",[164,306,259],{"class":174},[164,308,309],{"class":178},")",[164,311,262],{"class":174},[164,313,315],{"class":166,"line":314},8,[164,316,317],{"class":174},"  },\n",[164,319,321,324,326,328,331,333],{"class":166,"line":320},9,[164,322,323],{"class":247},"  cache",[164,325,251],{"class":174},[164,327,188],{"class":174},[164,329,330],{"class":191},"15m",[164,332,259],{"class":174},[164,334,262],{"class":174},[164,336,338,341,343,347,350,354,357,360],{"class":166,"line":337},10,[164,339,340],{"class":235},"  handler",[164,342,251],{"class":174},[164,344,346],{"class":345},"spNyl"," async",[164,348,349],{"class":174}," ({",[164,351,353],{"class":352},"sHdIc"," city",[164,355,356],{"class":174}," })",[164,358,359],{"class":345}," =>",[164,361,273],{"class":174},[164,363,365,368,371,374,376,379,382,385,388,391,394,396],{"class":166,"line":364},11,[164,366,367],{"class":170},"    return",[164,369,370],{"class":170}," await",[164,372,373],{"class":235}," $fetch",[164,375,238],{"class":247},[164,377,378],{"class":174},"`",[164,380,381],{"class":191},"https:\u002F\u002Fwttr.in\u002F",[164,383,384],{"class":174},"${",[164,386,387],{"class":178},"city",[164,389,390],{"class":174},"}",[164,392,393],{"class":191},"?format=j1",[164,395,378],{"class":174},[164,397,398],{"class":247},")\n",[164,400,402],{"class":166,"line":401},12,[164,403,317],{"class":174},[164,405,407,409],{"class":166,"line":406},13,[164,408,390],{"class":174},[164,410,398],{"class":178},[145,412,414],{"id":413},"使用-nuxt-服务器工具","使用 Nuxt 服务器工具",[149,416,417,418,421,422,425],{},"要在处理程序中使用 ",[161,419,420],{},"useEvent()"," 等 Nuxt 服务器工具，请启用 ",[161,423,424],{},"asyncContext","：",[153,427,430],{"className":155,"code":428,"filename":429,"language":158,"meta":159,"style":159},"export default defineNuxtConfig({\n  experimental: {\n    asyncContext: true,\n  },\n})\n","nuxt.config.ts",[161,431,432,445,454,467,471],{"__ignoreMap":159},[164,433,434,436,438,441,443],{"class":166,"line":167},[164,435,229],{"class":170},[164,437,232],{"class":170},[164,439,440],{"class":235}," defineNuxtConfig",[164,442,238],{"class":178},[164,444,241],{"class":174},[164,446,447,450,452],{"class":166,"line":198},[164,448,449],{"class":247},"  experimental",[164,451,251],{"class":174},[164,453,273],{"class":174},[164,455,456,459,461,465],{"class":166,"line":219},[164,457,458],{"class":247},"    asyncContext",[164,460,251],{"class":174},[164,462,464],{"class":463},"sfNiH"," true",[164,466,262],{"class":174},[164,468,469],{"class":166,"line":226},[164,470,317],{"class":174},[164,472,473,475],{"class":166,"line":244},[164,474,390],{"class":174},[164,476,398],{"class":178},[149,478,479],{},"然后你就可以访问 H3 事件并使用 Nuxt 服务器组合式函数：",[153,481,484],{"className":155,"code":482,"filename":483,"language":158,"meta":159,"style":159},"import { z } from 'zod'\nimport { useEvent, createError } from 'h3'\nimport { queryCollection } from '@nuxt\u002Fcontent\u002Fserver'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  description: 'Get a documentation page',\n  inputSchema: {\n    path: z.string().describe('Page path'),\n  },\n  cache: '1h',\n  handler: async ({ path }) => {\n    const event = useEvent()\n\n    const page = await queryCollection(event, 'docs')\n      .where('path', '=', path)\n      .first()\n\n    if (!page) throw createError({ statusCode: 404, message: 'Page not found' })\n    return page\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fget-page.ts",[161,485,486,504,530,550,568,572,584,599,607,639,643,658,677,693,698,728,761,771,776,831,839,844],{"__ignoreMap":159},[164,487,488,490,492,494,496,498,500,502],{"class":166,"line":167},[164,489,171],{"class":170},[164,491,175],{"class":174},[164,493,179],{"class":178},[164,495,182],{"class":174},[164,497,185],{"class":170},[164,499,188],{"class":174},[164,501,192],{"class":191},[164,503,195],{"class":174},[164,505,506,508,510,513,516,519,521,523,525,528],{"class":166,"line":198},[164,507,171],{"class":170},[164,509,175],{"class":174},[164,511,512],{"class":178}," useEvent",[164,514,515],{"class":174},",",[164,517,518],{"class":178}," createError",[164,520,182],{"class":174},[164,522,185],{"class":170},[164,524,188],{"class":174},[164,526,527],{"class":191},"h3",[164,529,195],{"class":174},[164,531,532,534,536,539,541,543,545,548],{"class":166,"line":219},[164,533,171],{"class":170},[164,535,175],{"class":174},[164,537,538],{"class":178}," queryCollection",[164,540,182],{"class":174},[164,542,185],{"class":170},[164,544,188],{"class":174},[164,546,547],{"class":191},"@nuxt\u002Fcontent\u002Fserver",[164,549,195],{"class":174},[164,551,552,554,556,558,560,562,564,566],{"class":166,"line":226},[164,553,171],{"class":170},[164,555,175],{"class":174},[164,557,205],{"class":178},[164,559,182],{"class":174},[164,561,185],{"class":170},[164,563,188],{"class":174},[164,565,214],{"class":191},[164,567,195],{"class":174},[164,569,570],{"class":166,"line":244},[164,571,223],{"emptyLinePlaceholder":222},[164,573,574,576,578,580,582],{"class":166,"line":265},[164,575,229],{"class":170},[164,577,232],{"class":170},[164,579,205],{"class":235},[164,581,238],{"class":178},[164,583,241],{"class":174},[164,585,586,588,590,592,595,597],{"class":166,"line":276},[164,587,248],{"class":247},[164,589,251],{"class":174},[164,591,188],{"class":174},[164,593,594],{"class":191},"Get a documentation page",[164,596,259],{"class":174},[164,598,262],{"class":174},[164,600,601,603,605],{"class":166,"line":314},[164,602,268],{"class":247},[164,604,251],{"class":174},[164,606,273],{"class":174},[164,608,609,612,614,616,618,620,622,624,626,628,630,633,635,637],{"class":166,"line":320},[164,610,611],{"class":247},"    path",[164,613,251],{"class":174},[164,615,179],{"class":178},[164,617,286],{"class":174},[164,619,289],{"class":235},[164,621,292],{"class":178},[164,623,286],{"class":174},[164,625,297],{"class":235},[164,627,238],{"class":178},[164,629,259],{"class":174},[164,631,632],{"class":191},"Page path",[164,634,259],{"class":174},[164,636,309],{"class":178},[164,638,262],{"class":174},[164,640,641],{"class":166,"line":337},[164,642,317],{"class":174},[164,644,645,647,649,651,654,656],{"class":166,"line":364},[164,646,323],{"class":247},[164,648,251],{"class":174},[164,650,188],{"class":174},[164,652,653],{"class":191},"1h",[164,655,259],{"class":174},[164,657,262],{"class":174},[164,659,660,662,664,666,668,671,673,675],{"class":166,"line":401},[164,661,340],{"class":235},[164,663,251],{"class":174},[164,665,346],{"class":345},[164,667,349],{"class":174},[164,669,670],{"class":352}," path",[164,672,356],{"class":174},[164,674,359],{"class":345},[164,676,273],{"class":174},[164,678,679,682,685,688,690],{"class":166,"line":406},[164,680,681],{"class":345},"    const",[164,683,684],{"class":178}," event",[164,686,687],{"class":174}," =",[164,689,512],{"class":235},[164,691,692],{"class":247},"()\n",[164,694,696],{"class":166,"line":695},14,[164,697,223],{"emptyLinePlaceholder":222},[164,699,701,703,706,708,710,712,714,717,719,721,724,726],{"class":166,"line":700},15,[164,702,681],{"class":345},[164,704,705],{"class":178}," page",[164,707,687],{"class":174},[164,709,370],{"class":170},[164,711,538],{"class":235},[164,713,238],{"class":247},[164,715,716],{"class":178},"event",[164,718,515],{"class":174},[164,720,188],{"class":174},[164,722,723],{"class":191},"docs",[164,725,259],{"class":174},[164,727,398],{"class":247},[164,729,731,734,737,739,741,744,746,748,750,753,755,757,759],{"class":166,"line":730},16,[164,732,733],{"class":174},"      .",[164,735,736],{"class":235},"where",[164,738,238],{"class":247},[164,740,259],{"class":174},[164,742,743],{"class":191},"path",[164,745,259],{"class":174},[164,747,515],{"class":174},[164,749,188],{"class":174},[164,751,752],{"class":191},"=",[164,754,259],{"class":174},[164,756,515],{"class":174},[164,758,670],{"class":178},[164,760,398],{"class":247},[164,762,764,766,769],{"class":166,"line":763},17,[164,765,733],{"class":174},[164,767,768],{"class":235},"first",[164,770,692],{"class":247},[164,772,774],{"class":166,"line":773},18,[164,775,223],{"emptyLinePlaceholder":222},[164,777,779,782,785,788,791,794,797,799,801,804,807,809,813,815,818,820,822,825,827,829],{"class":166,"line":778},19,[164,780,781],{"class":170},"    if",[164,783,784],{"class":247}," (",[164,786,787],{"class":174},"!",[164,789,790],{"class":178},"page",[164,792,793],{"class":247},") ",[164,795,796],{"class":170},"throw",[164,798,518],{"class":235},[164,800,238],{"class":247},[164,802,803],{"class":174},"{",[164,805,806],{"class":247}," statusCode",[164,808,251],{"class":174},[164,810,812],{"class":811},"sbssI"," 404",[164,814,515],{"class":174},[164,816,817],{"class":247}," message",[164,819,251],{"class":174},[164,821,188],{"class":174},[164,823,824],{"class":191},"Page not found",[164,826,259],{"class":174},[164,828,182],{"class":174},[164,830,398],{"class":247},[164,832,834,836],{"class":166,"line":833},20,[164,835,367],{"class":170},[164,837,838],{"class":178}," page\n",[164,840,842],{"class":166,"line":841},21,[164,843,317],{"class":174},[164,845,847,849],{"class":166,"line":846},22,[164,848,390],{"class":174},[164,850,398],{"class":178},[852,853,856,857,859,860,862],"callout",{"color":854,"icon":855},"info","i-lucide-info","启用 ",[161,858,424],{}," 后，",[161,861,420],{}," 会被自动导入。",[145,864,865],{"id":865},"后续步骤",[867,868,869,877,883],"ul",{},[870,871,872,876],"li",{},[873,874,875],"a",{"href":127},"Common Patterns"," - 更多通用示例",[870,878,879,882],{},[873,880,881],{"href":132},"File Operations"," - 文件操作示例",[870,884,885,888],{},[873,886,887],{"href":47},"Tools"," - 深入了解工具",[890,891,892],"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":159,"searchDepth":198,"depth":198,"links":894},[895,896,897],{"id":147,"depth":198,"text":147},{"id":413,"depth":198,"text":414},{"id":865,"depth":198,"text":865},"在 MCP 工具中集成外部 API 并使用 Nuxt 服务器工具。","md",null,{},{"icon":124},{"title":121,"description":898},"X7dP1-pRdSGl-9o4HnmXHJgkX1dgfLk-hSlOGiA5050",[906,908],{"title":116,"path":117,"stem":118,"description":907,"icon":119,"children":-1},"使用 Bearer 令牌身份验证保护您的 MCP 端点。",{"title":126,"path":127,"stem":128,"description":909,"icon":129,"children":-1},"使用 Nuxt MCP 模块的真实示例和模式。",1775615723509]