[{"data":1,"prerenderedAt":907},["ShallowReactive",2],{"navigation_docs":3,"-examples-api-integration":139,"-examples-api-integration-surround":902},[4,40,65,110],{"title":5,"path":6,"stem":7,"children":8,"page":39},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24,29,34],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-book-open",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Configuration","\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},"Connection","\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},"Core Concepts","\u002Fcore-concepts","2.core-concepts",[45,50,55,60],{"title":46,"path":47,"stem":48,"icon":49},"Tools","\u002Fcore-concepts\u002Ftools","2.core-concepts\u002F2.tools","i-lucide-wrench",{"title":51,"path":52,"stem":53,"icon":54},"Resources","\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},"Advanced Topics","\u002Fadvanced","3.advanced",[70,75,80,85,90,95,100,105],{"title":71,"path":72,"stem":73,"icon":74},"Custom Paths","\u002Fadvanced\u002Fcustom-paths","3.advanced\u002F1.custom-paths","i-lucide-folder",{"title":76,"path":77,"stem":78,"icon":79},"Middleware","\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},"Hooks","\u002Fadvanced\u002Fhooks","3.advanced\u002F4.hooks","i-lucide-webhook",{"title":91,"path":92,"stem":93,"icon":94},"MCP Evals","\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},"Dynamic Definitions","\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},"Examples","\u002Fexamples","4.examples",[115,120,125,130,135],{"title":116,"path":117,"stem":118,"icon":119},"Authentication","\u002Fexamples\u002Fauthentication","4.examples\u002F1.authentication","i-lucide-shield-check",{"title":121,"path":122,"stem":123,"icon":124},"API Integration","\u002Fexamples\u002Fapi-integration","4.examples\u002F2.api-integration","i-lucide-globe",{"title":126,"path":127,"stem":128,"icon":129},"Common Patterns","\u002Fexamples\u002Fcommon-patterns","4.examples\u002F3.common-patterns","i-lucide-lightbulb",{"title":131,"path":132,"stem":133,"icon":134},"File Operations","\u002Fexamples\u002Ffile-operations","4.examples\u002F4.file-operations","i-lucide-file",{"title":136,"path":137,"stem":138,"icon":59},"Prompt Examples","\u002Fexamples\u002Fprompt-examples","4.examples\u002F5.prompt-examples",{"id":140,"title":121,"body":141,"description":895,"extension":896,"links":897,"meta":898,"navigation":899,"path":122,"seo":900,"stem":123,"__hash__":901},"docs\u002F4.examples\u002F2.api-integration.md",{"type":142,"value":143,"toc":890},"minimark",[144,149,153,412,416,426,477,480,851,862,866,886],[145,146,148],"h2",{"id":147},"fetching-external-data","Fetching External Data",[150,151,152],"p",{},"Here's a simple tool that fetches data from a public API:",[154,155,161],"pre",{"className":156,"code":157,"filename":158,"language":159,"meta":160,"style":160},"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","",[162,163,164,197,218,225,243,264,275,313,319,336,363,400,405],"code",{"__ignoreMap":160},[165,166,169,173,177,181,184,187,190,194],"span",{"class":167,"line":168},"line",1,[165,170,172],{"class":171},"s7zQu","import",[165,174,176],{"class":175},"sMK4o"," {",[165,178,180],{"class":179},"sTEyZ"," z",[165,182,183],{"class":175}," }",[165,185,186],{"class":171}," from",[165,188,189],{"class":175}," '",[165,191,193],{"class":192},"sfazB","zod",[165,195,196],{"class":175},"'\n",[165,198,200,202,204,207,209,211,213,216],{"class":167,"line":199},2,[165,201,172],{"class":171},[165,203,176],{"class":175},[165,205,206],{"class":179}," defineMcpTool",[165,208,183],{"class":175},[165,210,186],{"class":171},[165,212,189],{"class":175},[165,214,215],{"class":192},"@nuxtjs\u002Fmcp-toolkit\u002Fserver",[165,217,196],{"class":175},[165,219,221],{"class":167,"line":220},3,[165,222,224],{"emptyLinePlaceholder":223},true,"\n",[165,226,228,231,234,237,240],{"class":167,"line":227},4,[165,229,230],{"class":171},"export",[165,232,233],{"class":171}," default",[165,235,206],{"class":236},"s2Zo4",[165,238,239],{"class":179},"(",[165,241,242],{"class":175},"{\n",[165,244,246,250,253,255,258,261],{"class":167,"line":245},5,[165,247,249],{"class":248},"swJcz","  description",[165,251,252],{"class":175},":",[165,254,189],{"class":175},[165,256,257],{"class":192},"Get current weather for a city",[165,259,260],{"class":175},"'",[165,262,263],{"class":175},",\n",[165,265,267,270,272],{"class":167,"line":266},6,[165,268,269],{"class":248},"  inputSchema",[165,271,252],{"class":175},[165,273,274],{"class":175}," {\n",[165,276,278,281,283,285,288,291,294,296,299,301,303,306,308,311],{"class":167,"line":277},7,[165,279,280],{"class":248},"    city",[165,282,252],{"class":175},[165,284,180],{"class":179},[165,286,287],{"class":175},".",[165,289,290],{"class":236},"string",[165,292,293],{"class":179},"()",[165,295,287],{"class":175},[165,297,298],{"class":236},"describe",[165,300,239],{"class":179},[165,302,260],{"class":175},[165,304,305],{"class":192},"City name",[165,307,260],{"class":175},[165,309,310],{"class":179},")",[165,312,263],{"class":175},[165,314,316],{"class":167,"line":315},8,[165,317,318],{"class":175},"  },\n",[165,320,322,325,327,329,332,334],{"class":167,"line":321},9,[165,323,324],{"class":248},"  cache",[165,326,252],{"class":175},[165,328,189],{"class":175},[165,330,331],{"class":192},"15m",[165,333,260],{"class":175},[165,335,263],{"class":175},[165,337,339,342,344,348,351,355,358,361],{"class":167,"line":338},10,[165,340,341],{"class":236},"  handler",[165,343,252],{"class":175},[165,345,347],{"class":346},"spNyl"," async",[165,349,350],{"class":175}," ({",[165,352,354],{"class":353},"sHdIc"," city",[165,356,357],{"class":175}," })",[165,359,360],{"class":346}," =>",[165,362,274],{"class":175},[165,364,366,369,372,375,377,380,383,386,389,392,395,397],{"class":167,"line":365},11,[165,367,368],{"class":171},"    return",[165,370,371],{"class":171}," await",[165,373,374],{"class":236}," $fetch",[165,376,239],{"class":248},[165,378,379],{"class":175},"`",[165,381,382],{"class":192},"https:\u002F\u002Fwttr.in\u002F",[165,384,385],{"class":175},"${",[165,387,388],{"class":179},"city",[165,390,391],{"class":175},"}",[165,393,394],{"class":192},"?format=j1",[165,396,379],{"class":175},[165,398,399],{"class":248},")\n",[165,401,403],{"class":167,"line":402},12,[165,404,318],{"class":175},[165,406,408,410],{"class":167,"line":407},13,[165,409,391],{"class":175},[165,411,399],{"class":179},[145,413,415],{"id":414},"using-nuxt-server-utilities","Using Nuxt Server Utilities",[150,417,418,419,422,423,252],{},"To use Nuxt server utilities like ",[162,420,421],{},"useEvent()"," in your handlers, enable ",[162,424,425],{},"asyncContext",[154,427,430],{"className":156,"code":428,"filename":429,"language":159,"meta":160,"style":160},"export default defineNuxtConfig({\n  experimental: {\n    asyncContext: true,\n  },\n})\n","nuxt.config.ts",[162,431,432,445,454,467,471],{"__ignoreMap":160},[165,433,434,436,438,441,443],{"class":167,"line":168},[165,435,230],{"class":171},[165,437,233],{"class":171},[165,439,440],{"class":236}," defineNuxtConfig",[165,442,239],{"class":179},[165,444,242],{"class":175},[165,446,447,450,452],{"class":167,"line":199},[165,448,449],{"class":248},"  experimental",[165,451,252],{"class":175},[165,453,274],{"class":175},[165,455,456,459,461,465],{"class":167,"line":220},[165,457,458],{"class":248},"    asyncContext",[165,460,252],{"class":175},[165,462,464],{"class":463},"sfNiH"," true",[165,466,263],{"class":175},[165,468,469],{"class":167,"line":227},[165,470,318],{"class":175},[165,472,473,475],{"class":167,"line":245},[165,474,391],{"class":175},[165,476,399],{"class":179},[150,478,479],{},"Then you can access the H3 event and use Nuxt server composables:",[154,481,484],{"className":156,"code":482,"filename":483,"language":159,"meta":160,"style":160},"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",[162,485,486,504,530,550,568,572,584,599,607,639,643,658,677,693,698,728,761,771,776,831,839,844],{"__ignoreMap":160},[165,487,488,490,492,494,496,498,500,502],{"class":167,"line":168},[165,489,172],{"class":171},[165,491,176],{"class":175},[165,493,180],{"class":179},[165,495,183],{"class":175},[165,497,186],{"class":171},[165,499,189],{"class":175},[165,501,193],{"class":192},[165,503,196],{"class":175},[165,505,506,508,510,513,516,519,521,523,525,528],{"class":167,"line":199},[165,507,172],{"class":171},[165,509,176],{"class":175},[165,511,512],{"class":179}," useEvent",[165,514,515],{"class":175},",",[165,517,518],{"class":179}," createError",[165,520,183],{"class":175},[165,522,186],{"class":171},[165,524,189],{"class":175},[165,526,527],{"class":192},"h3",[165,529,196],{"class":175},[165,531,532,534,536,539,541,543,545,548],{"class":167,"line":220},[165,533,172],{"class":171},[165,535,176],{"class":175},[165,537,538],{"class":179}," queryCollection",[165,540,183],{"class":175},[165,542,186],{"class":171},[165,544,189],{"class":175},[165,546,547],{"class":192},"@nuxt\u002Fcontent\u002Fserver",[165,549,196],{"class":175},[165,551,552,554,556,558,560,562,564,566],{"class":167,"line":227},[165,553,172],{"class":171},[165,555,176],{"class":175},[165,557,206],{"class":179},[165,559,183],{"class":175},[165,561,186],{"class":171},[165,563,189],{"class":175},[165,565,215],{"class":192},[165,567,196],{"class":175},[165,569,570],{"class":167,"line":245},[165,571,224],{"emptyLinePlaceholder":223},[165,573,574,576,578,580,582],{"class":167,"line":266},[165,575,230],{"class":171},[165,577,233],{"class":171},[165,579,206],{"class":236},[165,581,239],{"class":179},[165,583,242],{"class":175},[165,585,586,588,590,592,595,597],{"class":167,"line":277},[165,587,249],{"class":248},[165,589,252],{"class":175},[165,591,189],{"class":175},[165,593,594],{"class":192},"Get a documentation page",[165,596,260],{"class":175},[165,598,263],{"class":175},[165,600,601,603,605],{"class":167,"line":315},[165,602,269],{"class":248},[165,604,252],{"class":175},[165,606,274],{"class":175},[165,608,609,612,614,616,618,620,622,624,626,628,630,633,635,637],{"class":167,"line":321},[165,610,611],{"class":248},"    path",[165,613,252],{"class":175},[165,615,180],{"class":179},[165,617,287],{"class":175},[165,619,290],{"class":236},[165,621,293],{"class":179},[165,623,287],{"class":175},[165,625,298],{"class":236},[165,627,239],{"class":179},[165,629,260],{"class":175},[165,631,632],{"class":192},"Page path",[165,634,260],{"class":175},[165,636,310],{"class":179},[165,638,263],{"class":175},[165,640,641],{"class":167,"line":338},[165,642,318],{"class":175},[165,644,645,647,649,651,654,656],{"class":167,"line":365},[165,646,324],{"class":248},[165,648,252],{"class":175},[165,650,189],{"class":175},[165,652,653],{"class":192},"1h",[165,655,260],{"class":175},[165,657,263],{"class":175},[165,659,660,662,664,666,668,671,673,675],{"class":167,"line":402},[165,661,341],{"class":236},[165,663,252],{"class":175},[165,665,347],{"class":346},[165,667,350],{"class":175},[165,669,670],{"class":353}," path",[165,672,357],{"class":175},[165,674,360],{"class":346},[165,676,274],{"class":175},[165,678,679,682,685,688,690],{"class":167,"line":407},[165,680,681],{"class":346},"    const",[165,683,684],{"class":179}," event",[165,686,687],{"class":175}," =",[165,689,512],{"class":236},[165,691,692],{"class":248},"()\n",[165,694,696],{"class":167,"line":695},14,[165,697,224],{"emptyLinePlaceholder":223},[165,699,701,703,706,708,710,712,714,717,719,721,724,726],{"class":167,"line":700},15,[165,702,681],{"class":346},[165,704,705],{"class":179}," page",[165,707,687],{"class":175},[165,709,371],{"class":171},[165,711,538],{"class":236},[165,713,239],{"class":248},[165,715,716],{"class":179},"event",[165,718,515],{"class":175},[165,720,189],{"class":175},[165,722,723],{"class":192},"docs",[165,725,260],{"class":175},[165,727,399],{"class":248},[165,729,731,734,737,739,741,744,746,748,750,753,755,757,759],{"class":167,"line":730},16,[165,732,733],{"class":175},"      .",[165,735,736],{"class":236},"where",[165,738,239],{"class":248},[165,740,260],{"class":175},[165,742,743],{"class":192},"path",[165,745,260],{"class":175},[165,747,515],{"class":175},[165,749,189],{"class":175},[165,751,752],{"class":192},"=",[165,754,260],{"class":175},[165,756,515],{"class":175},[165,758,670],{"class":179},[165,760,399],{"class":248},[165,762,764,766,769],{"class":167,"line":763},17,[165,765,733],{"class":175},[165,767,768],{"class":236},"first",[165,770,692],{"class":248},[165,772,774],{"class":167,"line":773},18,[165,775,224],{"emptyLinePlaceholder":223},[165,777,779,782,785,788,791,794,797,799,801,804,807,809,813,815,818,820,822,825,827,829],{"class":167,"line":778},19,[165,780,781],{"class":171},"    if",[165,783,784],{"class":248}," (",[165,786,787],{"class":175},"!",[165,789,790],{"class":179},"page",[165,792,793],{"class":248},") ",[165,795,796],{"class":171},"throw",[165,798,518],{"class":236},[165,800,239],{"class":248},[165,802,803],{"class":175},"{",[165,805,806],{"class":248}," statusCode",[165,808,252],{"class":175},[165,810,812],{"class":811},"sbssI"," 404",[165,814,515],{"class":175},[165,816,817],{"class":248}," message",[165,819,252],{"class":175},[165,821,189],{"class":175},[165,823,824],{"class":192},"Page not found",[165,826,260],{"class":175},[165,828,183],{"class":175},[165,830,399],{"class":248},[165,832,834,836],{"class":167,"line":833},20,[165,835,368],{"class":171},[165,837,838],{"class":179}," page\n",[165,840,842],{"class":167,"line":841},21,[165,843,318],{"class":175},[165,845,847,849],{"class":167,"line":846},22,[165,848,391],{"class":175},[165,850,399],{"class":179},[852,853,856,858,859,861],"callout",{"color":854,"icon":855},"info","i-lucide-info",[162,857,421],{}," is auto-imported when ",[162,860,425],{}," is enabled.",[145,863,865],{"id":864},"next-steps","Next Steps",[867,868,869,876,881],"ul",{},[870,871,872,875],"li",{},[873,874,126],"a",{"href":127}," - More general examples",[870,877,878,880],{},[873,879,131],{"href":132}," - File operation examples",[870,882,883,885],{},[873,884,46],{"href":47}," - Learn more about tools",[887,888,889],"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":160,"searchDepth":199,"depth":199,"links":891},[892,893,894],{"id":147,"depth":199,"text":148},{"id":414,"depth":199,"text":415},{"id":864,"depth":199,"text":865},"Integrate external APIs and use Nuxt server utilities in MCP tools.","md",null,{},{"icon":124},{"title":121,"description":895},"VsZqZx0RHnLQXzu6OlcTL9TCJyLsJeiGdOrcd5m4njg",[903,905],{"title":116,"path":117,"stem":118,"description":904,"icon":119,"children":-1},"Secure your MCP endpoints with Bearer token authentication.",{"title":126,"path":127,"stem":128,"description":906,"icon":129,"children":-1},"Real-world examples and patterns for using the Nuxt MCP module.",1774280670864]