[{"data":1,"prerenderedAt":1595},["ShallowReactive",2],{"navigation_docs":3,"-advanced-typescript":287,"-advanced-typescript-surround":1590},[4,40,70,99,122,156,189,258],{"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},"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},"Tools","\u002Ftools","2.tools",[45,50,55,60,65],{"title":46,"path":47,"stem":48,"icon":49},"Overview","\u002Ftools\u002Foverview","2.tools\u002F0.overview","i-lucide-wrench",{"title":51,"path":52,"stem":53,"icon":54},"Schema, handler & returns","\u002Ftools\u002Fschema-handler","2.tools\u002F1.schema-handler","i-lucide-braces",{"title":56,"path":57,"stem":58,"icon":59},"Annotations & input examples","\u002Ftools\u002Fannotations","2.tools\u002F2.annotations","i-lucide-badge-info",{"title":61,"path":62,"stem":63,"icon":64},"Errors & caching","\u002Ftools\u002Ferrors-caching","2.tools\u002F3.errors-caching","i-lucide-shield",{"title":66,"path":67,"stem":68,"icon":69},"Groups, files & dynamic registration","\u002Ftools\u002Fgroups-organization","2.tools\u002F4.groups-organization","i-lucide-tags",{"title":71,"path":72,"stem":73,"children":74,"page":39},"Resources","\u002Fresources","3.resources",[75,79,84,89,94],{"title":46,"path":76,"stem":77,"icon":78},"\u002Fresources\u002Foverview","3.resources\u002F0.overview","i-lucide-package",{"title":80,"path":81,"stem":82,"icon":83},"Static resources & structure","\u002Fresources\u002Fstatic-and-structure","3.resources\u002F1.static-and-structure","i-lucide-file-stack",{"title":85,"path":86,"stem":87,"icon":88},"Templates & handlers","\u002Fresources\u002Ftemplates-and-handlers","3.resources\u002F2.templates-and-handlers","i-lucide-git-branch",{"title":90,"path":91,"stem":92,"icon":93},"Metadata, content & errors","\u002Fresources\u002Fcontent-metadata-errors","3.resources\u002F3.content-metadata-errors","i-lucide-layers",{"title":95,"path":96,"stem":97,"icon":98},"Groups & organization","\u002Fresources\u002Forganization","3.resources\u002F4.organization","i-lucide-folder-tree",{"title":100,"path":101,"stem":102,"children":103,"page":39},"Prompts","\u002Fprompts","4.prompts",[104,108,113,117],{"title":46,"path":105,"stem":106,"icon":107},"\u002Fprompts\u002Foverview","4.prompts\u002F0.overview","i-lucide-message-square",{"title":109,"path":110,"stem":111,"icon":112},"Authoring & structure","\u002Fprompts\u002Fauthoring","4.prompts\u002F1.authoring","i-lucide-pen-line",{"title":114,"path":115,"stem":116,"icon":93},"Input, handler & messages","\u002Fprompts\u002Finput-handler-messages","4.prompts\u002F2.input-handler-messages",{"title":118,"path":119,"stem":120,"icon":121},"Patterns & advanced","\u002Fprompts\u002Fpatterns-advanced","4.prompts\u002F3.patterns-advanced","i-lucide-line-chart",{"title":123,"path":124,"stem":125,"children":126,"page":39},"Handlers","\u002Fhandlers","5.handlers",[127,131,136,141,146,151],{"title":46,"path":128,"stem":129,"icon":130},"\u002Fhandlers\u002Foverview","5.handlers\u002F0.overview","i-lucide-server",{"title":132,"path":133,"stem":134,"icon":135},"Default & custom handlers","\u002Fhandlers\u002Fdefault-and-custom","5.handlers\u002F1.default-and-custom","i-lucide-toggle-left",{"title":137,"path":138,"stem":139,"icon":140},"Structure & options","\u002Fhandlers\u002Fstructure-and-options","5.handlers\u002F2.structure-and-options","i-lucide-sliders-horizontal",{"title":142,"path":143,"stem":144,"icon":145},"Examples & routing","\u002Fhandlers\u002Fexamples-routing","5.handlers\u002F3.examples-routing","i-lucide-route",{"title":147,"path":148,"stem":149,"icon":150},"Sharing & practices","\u002Fhandlers\u002Fsharing-practices","5.handlers\u002F4.sharing-practices","i-lucide-share-2",{"title":152,"path":153,"stem":154,"icon":155},"Multi-handler organization","\u002Fhandlers\u002Forganization","5.handlers\u002F5.organization","i-lucide-network",{"title":157,"path":158,"stem":159,"children":160,"page":39},"Apps","\u002Fapps","6.apps",[161,165,170,175,179,184],{"title":46,"path":162,"stem":163,"icon":164},"\u002Fapps\u002Foverview","6.apps\u002F0.overview","i-lucide-app-window",{"title":166,"path":167,"stem":168,"icon":169},"Authoring & defineMcpApp","\u002Fapps\u002Fauthoring","6.apps\u002F1.authoring","i-lucide-code-2",{"title":171,"path":172,"stem":173,"icon":174},"useMcpApp() bridge","\u002Fapps\u002Fuse-mcp-app","6.apps\u002F2.use-mcp-app","i-lucide-message-circle",{"title":176,"path":177,"stem":178,"icon":64},"CSP & build pipeline","\u002Fapps\u002Fcsp-and-wiring","6.apps\u002F3.csp-and-wiring",{"title":180,"path":181,"stem":182,"icon":183},"Testing & publishing","\u002Fapps\u002Ftesting-publishing","6.apps\u002F4.testing-publishing","i-lucide-rocket",{"title":185,"path":186,"stem":187,"icon":188},"Patterns & limits","\u002Fapps\u002Fpatterns-reference","6.apps\u002F5.patterns-reference","i-lucide-book-marked",{"title":190,"path":191,"stem":192,"children":193,"page":39},"Advanced Topics","\u002Fadvanced","7.advanced",[194,199,204,209,214,219,223,228,233,238,243,248,253],{"title":195,"path":196,"stem":197,"icon":198},"Custom Paths","\u002Fadvanced\u002Fcustom-paths","7.advanced\u002F1.custom-paths","i-lucide-folder",{"title":200,"path":201,"stem":202,"icon":203},"Logging","\u002Fadvanced\u002Flogging","7.advanced\u002F10.logging","i-lucide-scroll-text",{"title":205,"path":206,"stem":207,"icon":208},"MCP Apps Internals","\u002Fadvanced\u002Fmcp-apps-internals","7.advanced\u002F11.mcp-apps-internals","i-lucide-cog",{"title":210,"path":211,"stem":212,"icon":213},"Listing Definitions","\u002Fadvanced\u002Flisting-definitions","7.advanced\u002F12.listing-definitions","i-lucide-list",{"title":215,"path":216,"stem":217,"icon":218},"llms.txt discovery","\u002Fadvanced\u002Fllms-txt","7.advanced\u002F13.llms-txt","i-lucide-file-text",{"title":220,"path":221,"stem":222,"icon":64},"Middleware","\u002Fadvanced\u002Fmiddleware","7.advanced\u002F2.middleware",{"title":224,"path":225,"stem":226,"icon":227},"TypeScript","\u002Fadvanced\u002Ftypescript","7.advanced\u002F3.typescript","i-lucide-type",{"title":229,"path":230,"stem":231,"icon":232},"Hooks","\u002Fadvanced\u002Fhooks","7.advanced\u002F4.hooks","i-lucide-webhook",{"title":234,"path":235,"stem":236,"icon":237},"MCP Evals","\u002Fadvanced\u002Fevals","7.advanced\u002F5.evals","i-lucide-flask-conical",{"title":239,"path":240,"stem":241,"icon":242},"Sessions","\u002Fadvanced\u002Fsessions","7.advanced\u002F6.sessions","i-lucide-database",{"title":244,"path":245,"stem":246,"icon":247},"Dynamic Definitions","\u002Fadvanced\u002Fdynamic-definitions","7.advanced\u002F7.dynamic-definitions","i-lucide-toggle-right",{"title":249,"path":250,"stem":251,"icon":252},"Code Mode","\u002Fadvanced\u002Fcode-mode","7.advanced\u002F8.code-mode","i-lucide-code",{"title":254,"path":255,"stem":256,"icon":257},"Elicitation","\u002Fadvanced\u002Felicitation","7.advanced\u002F9.elicitation","i-lucide-message-square-quote",{"title":259,"path":260,"stem":261,"children":262,"page":39},"Examples","\u002Fexamples","8.examples",[263,268,273,278,283],{"title":264,"path":265,"stem":266,"icon":267},"Authentication","\u002Fexamples\u002Fauthentication","8.examples\u002F1.authentication","i-lucide-shield-check",{"title":269,"path":270,"stem":271,"icon":272},"API Integration","\u002Fexamples\u002Fapi-integration","8.examples\u002F2.api-integration","i-lucide-globe",{"title":274,"path":275,"stem":276,"icon":277},"Common Patterns","\u002Fexamples\u002Fcommon-patterns","8.examples\u002F3.common-patterns","i-lucide-lightbulb",{"title":279,"path":280,"stem":281,"icon":282},"File Operations","\u002Fexamples\u002Ffile-operations","8.examples\u002F4.file-operations","i-lucide-file",{"title":284,"path":285,"stem":286,"icon":107},"Prompt Examples","\u002Fexamples\u002Fprompt-examples","8.examples\u002F5.prompt-examples",{"id":288,"title":289,"body":290,"description":1581,"extension":1582,"links":1583,"meta":1584,"navigation":1585,"path":225,"seo":1586,"stem":226,"__hash__":1589},"docs\u002F7.advanced\u002F3.typescript.md","Add type safety with TypeScript",{"type":291,"value":292,"toc":1570},"minimark",[293,298,302,306,309,315,397,434,439,549,568,760,775,779,783,789,998,1002,1008,1270,1274,1279,1429,1433,1436,1545,1549,1566],[294,295,297],"h2",{"id":296},"type-safety","Type Safety",[299,300,301],"p",{},"The Nuxt MCP module provides full TypeScript support with complete type inference and type safety.",[294,303,305],{"id":304},"auto-imports","Auto-Imports",[299,307,308],{},"All helper functions and types are auto-imported in your server files:",[299,310,311],{},[312,313,314],"strong",{},"Functions:",[316,317,318,338,347,355,372,386],"ul",{},[319,320,321,325,326,325,329,325,332,325,335],"li",{},[322,323,324],"code",{},"defineMcpTool",", ",[322,327,328],{},"defineMcpResource",[322,330,331],{},"defineMcpPrompt",[322,333,334],{},"defineMcpHandler",[322,336,337],{},"defineMcpApp",[319,339,340,325,343,346],{},[322,341,342],{},"imageResult",[322,344,345],{},"audioResult"," (binary media helpers for tool responses)",[319,348,349,325,352],{},[322,350,351],{},"completable",[322,353,354],{},"extractToolNames",[319,356,357,325,360,325,363,325,366,325,369],{},[322,358,359],{},"useMcpSession",[322,361,362],{},"useMcpServer",[322,364,365],{},"useMcpLogger",[322,367,368],{},"useMcpElicitation",[322,370,371],{},"useMcpApp",[319,373,374,325,377,325,380,325,383],{},[322,375,376],{},"listMcpTools",[322,378,379],{},"listMcpResources",[322,381,382],{},"listMcpPrompts",[322,384,385],{},"listMcpDefinitions",[319,387,388,325,391,325,394],{},[322,389,390],{},"getMcpTools",[322,392,393],{},"getMcpResources",[322,395,396],{},"getMcpPrompts",[398,399,402,403,325,406,409,410,413,414,417,418,421,422,425,426,429,430,433],"callout",{"color":400,"icon":401},"warning","i-lucide-triangle-alert","The ",[322,404,405],{},"textResult",[322,407,408],{},"jsonResult",", and ",[322,411,412],{},"errorResult"," helpers are ",[312,415,416],{},"deprecated",". Return strings, numbers, booleans, objects, or arrays directly from your handler — the toolkit auto-wraps them. For errors, throw an ",[322,419,420],{},"Error"," or use ",[322,423,424],{},"createError"," from ",[322,427,428],{},"h3",". See ",[431,432,61],"a",{"href":62},".",[299,435,436],{},[312,437,438],{},"Types:",[316,440,441,451,463,474,497,522],{},[319,442,443,446,447,450],{},[322,444,445],{},"McpRequestExtra"," — extra arguments passed to every tool, prompt, and resource handler (abort signal, auth info, session ID, metadata). Equivalent to ",[322,448,449],{},"RequestHandlerExtra\u003CServerRequest, ServerNotification>"," from the SDK.",[319,452,453,456,457,433],{},[322,454,455],{},"McpServerHelper"," — return type of ",[431,458,460],{"href":459},"\u002Fadvanced\u002Fdynamic-definitions#mid-session-registration",[322,461,462],{},"useMcpServer()",[319,464,465,468,469,433],{},[322,466,467],{},"McpSessionStore"," — typed store returned by ",[431,470,471],{"href":240},[322,472,473],{},"useMcpSession()",[319,475,476,325,479,325,482,325,485,325,488,491,492,433],{},[322,477,478],{},"McpClientNotifier",[322,480,481],{},"McpLogger",[322,483,484],{},"McpRequestLogger",[322,486,487],{},"McpUserFields",[322,489,490],{},"McpSessionFields"," — types behind ",[431,493,494],{"href":201},[322,495,496],{},"useMcpLogger()",[319,498,499,325,502,325,505,325,508,325,511,325,514,491,517,433],{},[322,500,501],{},"McpElicitation",[322,503,504],{},"ElicitationFormParams",[322,506,507],{},"ElicitationFormResult",[322,509,510],{},"ElicitationUrlParams",[322,512,513],{},"ElicitationUrlResult",[322,515,516],{},"ElicitationMode",[431,518,519],{"href":255},[322,520,521],{},"useMcpElicitation()",[319,523,524,525,325,528,325,531,325,534,325,537,325,540,325,543,325,546,433],{},"Common SDK protocol types are re-exported from a single import path: ",[322,526,527],{},"Annotations",[322,529,530],{},"CallToolResult",[322,532,533],{},"GetPromptResult",[322,535,536],{},"ReadResourceResult",[322,538,539],{},"Resource",[322,541,542],{},"ServerNotification",[322,544,545],{},"ServerRequest",[322,547,548],{},"ToolAnnotations",[398,550,551,552,325,555,409,558,561,562,564,565,567],{"color":400,"icon":401},"The aliases ",[322,553,554],{},"McpToolExtra",[322,556,557],{},"McpPromptExtra",[322,559,560],{},"McpResourceExtra"," are kept for back-compat but ",[312,563,416],{}," — they all resolve to ",[322,566,445],{},". Prefer the canonical name in new code.",[569,570,575],"pre",{"className":571,"code":572,"language":573,"meta":574,"style":574},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { z } from 'zod'\n\nexport default defineMcpTool({\n  name: 'example',\n  inputSchema: {\n    message: z.string(),\n  },\n  handler: async ({ message }, extra: McpRequestExtra) => {\n    \u002F\u002F message is typed as string\n    \u002F\u002F extra.signal, extra.authInfo, extra.sessionId are available\n  },\n})\n","typescript","",[322,576,577,610,617,636,657,668,688,694,733,740,746,751],{"__ignoreMap":574},[578,579,582,586,590,594,597,600,603,607],"span",{"class":580,"line":581},"line",1,[578,583,585],{"class":584},"s7zQu","import",[578,587,589],{"class":588},"sMK4o"," {",[578,591,593],{"class":592},"sTEyZ"," z",[578,595,596],{"class":588}," }",[578,598,599],{"class":584}," from",[578,601,602],{"class":588}," '",[578,604,606],{"class":605},"sfazB","zod",[578,608,609],{"class":588},"'\n",[578,611,613],{"class":580,"line":612},2,[578,614,616],{"emptyLinePlaceholder":615},true,"\n",[578,618,620,623,626,630,633],{"class":580,"line":619},3,[578,621,622],{"class":584},"export",[578,624,625],{"class":584}," default",[578,627,629],{"class":628},"s2Zo4"," defineMcpTool",[578,631,632],{"class":592},"(",[578,634,635],{"class":588},"{\n",[578,637,639,643,646,648,651,654],{"class":580,"line":638},4,[578,640,642],{"class":641},"swJcz","  name",[578,644,645],{"class":588},":",[578,647,602],{"class":588},[578,649,650],{"class":605},"example",[578,652,653],{"class":588},"'",[578,655,656],{"class":588},",\n",[578,658,660,663,665],{"class":580,"line":659},5,[578,661,662],{"class":641},"  inputSchema",[578,664,645],{"class":588},[578,666,667],{"class":588}," {\n",[578,669,671,674,676,678,680,683,686],{"class":580,"line":670},6,[578,672,673],{"class":641},"    message",[578,675,645],{"class":588},[578,677,593],{"class":592},[578,679,433],{"class":588},[578,681,682],{"class":628},"string",[578,684,685],{"class":592},"()",[578,687,656],{"class":588},[578,689,691],{"class":580,"line":690},7,[578,692,693],{"class":588},"  },\n",[578,695,697,700,702,706,709,713,716,719,721,725,728,731],{"class":580,"line":696},8,[578,698,699],{"class":628},"  handler",[578,701,645],{"class":588},[578,703,705],{"class":704},"spNyl"," async",[578,707,708],{"class":588}," ({",[578,710,712],{"class":711},"sHdIc"," message",[578,714,715],{"class":588}," },",[578,717,718],{"class":711}," extra",[578,720,645],{"class":588},[578,722,724],{"class":723},"sBMFI"," McpRequestExtra",[578,726,727],{"class":588},")",[578,729,730],{"class":704}," =>",[578,732,667],{"class":588},[578,734,736],{"class":580,"line":735},9,[578,737,739],{"class":738},"sHwdD","    \u002F\u002F message is typed as string\n",[578,741,743],{"class":580,"line":742},10,[578,744,745],{"class":738},"    \u002F\u002F extra.signal, extra.authInfo, extra.sessionId are available\n",[578,747,749],{"class":580,"line":748},11,[578,750,693],{"class":588},[578,752,754,757],{"class":580,"line":753},12,[578,755,756],{"class":588},"}",[578,758,759],{"class":592},")\n",[299,761,762,763,766,767,770,771,774],{},"You can disable auto-imports entirely with ",[322,764,765],{},"autoImports: false"," in your ",[431,768,769],{"href":21},"configuration"," and import explicitly from ",[322,772,773],{},"@nuxtjs\u002Fmcp-toolkit\u002Fserver"," instead.",[294,776,778],{"id":777},"type-inference","Type Inference",[428,780,782],{"id":781},"tool-input-types","Tool Input Types",[299,784,785,786,645],{},"Input types are automatically inferred from your ",[322,787,788],{},"inputSchema",[569,790,792],{"className":571,"code":791,"language":573,"meta":574,"style":574},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  name: 'example',\n  inputSchema: {\n    name: z.string(),\n    age: z.number(),\n    email: z.string().email().optional(),\n  },\n  handler: async ({ name, age, email }) => {\n    \u002F\u002F name: string\n    \u002F\u002F age: number\n    \u002F\u002F email: string | undefined\n  },\n})\n",[322,793,794,812,830,834,846,860,868,885,903,934,938,969,974,980,986,991],{"__ignoreMap":574},[578,795,796,798,800,802,804,806,808,810],{"class":580,"line":581},[578,797,585],{"class":584},[578,799,589],{"class":588},[578,801,593],{"class":592},[578,803,596],{"class":588},[578,805,599],{"class":584},[578,807,602],{"class":588},[578,809,606],{"class":605},[578,811,609],{"class":588},[578,813,814,816,818,820,822,824,826,828],{"class":580,"line":612},[578,815,585],{"class":584},[578,817,589],{"class":588},[578,819,629],{"class":592},[578,821,596],{"class":588},[578,823,599],{"class":584},[578,825,602],{"class":588},[578,827,773],{"class":605},[578,829,609],{"class":588},[578,831,832],{"class":580,"line":619},[578,833,616],{"emptyLinePlaceholder":615},[578,835,836,838,840,842,844],{"class":580,"line":638},[578,837,622],{"class":584},[578,839,625],{"class":584},[578,841,629],{"class":628},[578,843,632],{"class":592},[578,845,635],{"class":588},[578,847,848,850,852,854,856,858],{"class":580,"line":659},[578,849,642],{"class":641},[578,851,645],{"class":588},[578,853,602],{"class":588},[578,855,650],{"class":605},[578,857,653],{"class":588},[578,859,656],{"class":588},[578,861,862,864,866],{"class":580,"line":670},[578,863,662],{"class":641},[578,865,645],{"class":588},[578,867,667],{"class":588},[578,869,870,873,875,877,879,881,883],{"class":580,"line":690},[578,871,872],{"class":641},"    name",[578,874,645],{"class":588},[578,876,593],{"class":592},[578,878,433],{"class":588},[578,880,682],{"class":628},[578,882,685],{"class":592},[578,884,656],{"class":588},[578,886,887,890,892,894,896,899,901],{"class":580,"line":696},[578,888,889],{"class":641},"    age",[578,891,645],{"class":588},[578,893,593],{"class":592},[578,895,433],{"class":588},[578,897,898],{"class":628},"number",[578,900,685],{"class":592},[578,902,656],{"class":588},[578,904,905,908,910,912,914,916,918,920,923,925,927,930,932],{"class":580,"line":735},[578,906,907],{"class":641},"    email",[578,909,645],{"class":588},[578,911,593],{"class":592},[578,913,433],{"class":588},[578,915,682],{"class":628},[578,917,685],{"class":592},[578,919,433],{"class":588},[578,921,922],{"class":628},"email",[578,924,685],{"class":592},[578,926,433],{"class":588},[578,928,929],{"class":628},"optional",[578,931,685],{"class":592},[578,933,656],{"class":588},[578,935,936],{"class":580,"line":742},[578,937,693],{"class":588},[578,939,940,942,944,946,948,951,954,957,959,962,965,967],{"class":580,"line":748},[578,941,699],{"class":628},[578,943,645],{"class":588},[578,945,705],{"class":704},[578,947,708],{"class":588},[578,949,950],{"class":711}," name",[578,952,953],{"class":588},",",[578,955,956],{"class":711}," age",[578,958,953],{"class":588},[578,960,961],{"class":711}," email",[578,963,964],{"class":588}," })",[578,966,730],{"class":704},[578,968,667],{"class":588},[578,970,971],{"class":580,"line":753},[578,972,973],{"class":738},"    \u002F\u002F name: string\n",[578,975,977],{"class":580,"line":976},13,[578,978,979],{"class":738},"    \u002F\u002F age: number\n",[578,981,983],{"class":580,"line":982},14,[578,984,985],{"class":738},"    \u002F\u002F email: string | undefined\n",[578,987,989],{"class":580,"line":988},15,[578,990,693],{"class":588},[578,992,994,996],{"class":580,"line":993},16,[578,995,756],{"class":588},[578,997,759],{"class":592},[428,999,1001],{"id":1000},"tool-output-types","Tool Output Types",[299,1003,1004,1005,645],{},"Output types are inferred from ",[322,1006,1007],{},"outputSchema",[569,1009,1011],{"className":571,"code":1010,"language":573,"meta":574,"style":574},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  name: 'example',\n  inputSchema: {\n    value: z.number(),\n  },\n  outputSchema: {\n    result: z.number(),\n    doubled: z.number(),\n  },\n  handler: async ({ value }) => {\n    const result = value * 2\n\n    return {\n      structuredContent: {\n        result,      \u002F\u002F TypeScript knows this is number\n        doubled: result * 2, \u002F\u002F TypeScript knows this is number\n      },\n    }\n  },\n})\n",[322,1012,1013,1031,1049,1053,1065,1079,1087,1104,1108,1117,1134,1151,1155,1174,1194,1198,1205,1215,1226,1246,1252,1258,1263],{"__ignoreMap":574},[578,1014,1015,1017,1019,1021,1023,1025,1027,1029],{"class":580,"line":581},[578,1016,585],{"class":584},[578,1018,589],{"class":588},[578,1020,593],{"class":592},[578,1022,596],{"class":588},[578,1024,599],{"class":584},[578,1026,602],{"class":588},[578,1028,606],{"class":605},[578,1030,609],{"class":588},[578,1032,1033,1035,1037,1039,1041,1043,1045,1047],{"class":580,"line":612},[578,1034,585],{"class":584},[578,1036,589],{"class":588},[578,1038,629],{"class":592},[578,1040,596],{"class":588},[578,1042,599],{"class":584},[578,1044,602],{"class":588},[578,1046,773],{"class":605},[578,1048,609],{"class":588},[578,1050,1051],{"class":580,"line":619},[578,1052,616],{"emptyLinePlaceholder":615},[578,1054,1055,1057,1059,1061,1063],{"class":580,"line":638},[578,1056,622],{"class":584},[578,1058,625],{"class":584},[578,1060,629],{"class":628},[578,1062,632],{"class":592},[578,1064,635],{"class":588},[578,1066,1067,1069,1071,1073,1075,1077],{"class":580,"line":659},[578,1068,642],{"class":641},[578,1070,645],{"class":588},[578,1072,602],{"class":588},[578,1074,650],{"class":605},[578,1076,653],{"class":588},[578,1078,656],{"class":588},[578,1080,1081,1083,1085],{"class":580,"line":670},[578,1082,662],{"class":641},[578,1084,645],{"class":588},[578,1086,667],{"class":588},[578,1088,1089,1092,1094,1096,1098,1100,1102],{"class":580,"line":690},[578,1090,1091],{"class":641},"    value",[578,1093,645],{"class":588},[578,1095,593],{"class":592},[578,1097,433],{"class":588},[578,1099,898],{"class":628},[578,1101,685],{"class":592},[578,1103,656],{"class":588},[578,1105,1106],{"class":580,"line":696},[578,1107,693],{"class":588},[578,1109,1110,1113,1115],{"class":580,"line":735},[578,1111,1112],{"class":641},"  outputSchema",[578,1114,645],{"class":588},[578,1116,667],{"class":588},[578,1118,1119,1122,1124,1126,1128,1130,1132],{"class":580,"line":742},[578,1120,1121],{"class":641},"    result",[578,1123,645],{"class":588},[578,1125,593],{"class":592},[578,1127,433],{"class":588},[578,1129,898],{"class":628},[578,1131,685],{"class":592},[578,1133,656],{"class":588},[578,1135,1136,1139,1141,1143,1145,1147,1149],{"class":580,"line":748},[578,1137,1138],{"class":641},"    doubled",[578,1140,645],{"class":588},[578,1142,593],{"class":592},[578,1144,433],{"class":588},[578,1146,898],{"class":628},[578,1148,685],{"class":592},[578,1150,656],{"class":588},[578,1152,1153],{"class":580,"line":753},[578,1154,693],{"class":588},[578,1156,1157,1159,1161,1163,1165,1168,1170,1172],{"class":580,"line":976},[578,1158,699],{"class":628},[578,1160,645],{"class":588},[578,1162,705],{"class":704},[578,1164,708],{"class":588},[578,1166,1167],{"class":711}," value",[578,1169,964],{"class":588},[578,1171,730],{"class":704},[578,1173,667],{"class":588},[578,1175,1176,1179,1182,1185,1187,1190],{"class":580,"line":982},[578,1177,1178],{"class":704},"    const",[578,1180,1181],{"class":592}," result",[578,1183,1184],{"class":588}," =",[578,1186,1167],{"class":592},[578,1188,1189],{"class":588}," *",[578,1191,1193],{"class":1192},"sbssI"," 2\n",[578,1195,1196],{"class":580,"line":988},[578,1197,616],{"emptyLinePlaceholder":615},[578,1199,1200,1203],{"class":580,"line":993},[578,1201,1202],{"class":584},"    return",[578,1204,667],{"class":588},[578,1206,1208,1211,1213],{"class":580,"line":1207},17,[578,1209,1210],{"class":641},"      structuredContent",[578,1212,645],{"class":588},[578,1214,667],{"class":588},[578,1216,1218,1221,1223],{"class":580,"line":1217},18,[578,1219,1220],{"class":592},"        result",[578,1222,953],{"class":588},[578,1224,1225],{"class":738},"      \u002F\u002F TypeScript knows this is number\n",[578,1227,1229,1232,1234,1236,1238,1241,1243],{"class":580,"line":1228},19,[578,1230,1231],{"class":641},"        doubled",[578,1233,645],{"class":588},[578,1235,1181],{"class":592},[578,1237,1189],{"class":588},[578,1239,1240],{"class":1192}," 2",[578,1242,953],{"class":588},[578,1244,1245],{"class":738}," \u002F\u002F TypeScript knows this is number\n",[578,1247,1249],{"class":580,"line":1248},20,[578,1250,1251],{"class":588},"      },\n",[578,1253,1255],{"class":580,"line":1254},21,[578,1256,1257],{"class":588},"    }\n",[578,1259,1261],{"class":580,"line":1260},22,[578,1262,693],{"class":588},[578,1264,1266,1268],{"class":580,"line":1265},23,[578,1267,756],{"class":588},[578,1269,759],{"class":592},[428,1271,1273],{"id":1272},"prompt-argument-types","Prompt Argument Types",[299,1275,1276,1277,645],{},"Prompt argument types are inferred from ",[322,1278,788],{},[569,1280,1282],{"className":571,"code":1281,"language":573,"meta":574,"style":574},"import { defineMcpPrompt } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpPrompt({\n  name: 'example',\n  inputSchema: {\n    text: z.string(),\n    maxLength: z.string().optional(),\n  },\n  handler: async ({ text, maxLength }) => {\n    \u002F\u002F text: string\n    \u002F\u002F maxLength: string | undefined\n  },\n})\n",[322,1283,1284,1303,1307,1319,1333,1341,1358,1381,1385,1409,1414,1419,1423],{"__ignoreMap":574},[578,1285,1286,1288,1290,1293,1295,1297,1299,1301],{"class":580,"line":581},[578,1287,585],{"class":584},[578,1289,589],{"class":588},[578,1291,1292],{"class":592}," defineMcpPrompt",[578,1294,596],{"class":588},[578,1296,599],{"class":584},[578,1298,602],{"class":588},[578,1300,773],{"class":605},[578,1302,609],{"class":588},[578,1304,1305],{"class":580,"line":612},[578,1306,616],{"emptyLinePlaceholder":615},[578,1308,1309,1311,1313,1315,1317],{"class":580,"line":619},[578,1310,622],{"class":584},[578,1312,625],{"class":584},[578,1314,1292],{"class":628},[578,1316,632],{"class":592},[578,1318,635],{"class":588},[578,1320,1321,1323,1325,1327,1329,1331],{"class":580,"line":638},[578,1322,642],{"class":641},[578,1324,645],{"class":588},[578,1326,602],{"class":588},[578,1328,650],{"class":605},[578,1330,653],{"class":588},[578,1332,656],{"class":588},[578,1334,1335,1337,1339],{"class":580,"line":659},[578,1336,662],{"class":641},[578,1338,645],{"class":588},[578,1340,667],{"class":588},[578,1342,1343,1346,1348,1350,1352,1354,1356],{"class":580,"line":670},[578,1344,1345],{"class":641},"    text",[578,1347,645],{"class":588},[578,1349,593],{"class":592},[578,1351,433],{"class":588},[578,1353,682],{"class":628},[578,1355,685],{"class":592},[578,1357,656],{"class":588},[578,1359,1360,1363,1365,1367,1369,1371,1373,1375,1377,1379],{"class":580,"line":690},[578,1361,1362],{"class":641},"    maxLength",[578,1364,645],{"class":588},[578,1366,593],{"class":592},[578,1368,433],{"class":588},[578,1370,682],{"class":628},[578,1372,685],{"class":592},[578,1374,433],{"class":588},[578,1376,929],{"class":628},[578,1378,685],{"class":592},[578,1380,656],{"class":588},[578,1382,1383],{"class":580,"line":696},[578,1384,693],{"class":588},[578,1386,1387,1389,1391,1393,1395,1398,1400,1403,1405,1407],{"class":580,"line":735},[578,1388,699],{"class":628},[578,1390,645],{"class":588},[578,1392,705],{"class":704},[578,1394,708],{"class":588},[578,1396,1397],{"class":711}," text",[578,1399,953],{"class":588},[578,1401,1402],{"class":711}," maxLength",[578,1404,964],{"class":588},[578,1406,730],{"class":704},[578,1408,667],{"class":588},[578,1410,1411],{"class":580,"line":742},[578,1412,1413],{"class":738},"    \u002F\u002F text: string\n",[578,1415,1416],{"class":580,"line":748},[578,1417,1418],{"class":738},"    \u002F\u002F maxLength: string | undefined\n",[578,1420,1421],{"class":580,"line":753},[578,1422,693],{"class":588},[578,1424,1425,1427],{"class":580,"line":976},[578,1426,756],{"class":588},[578,1428,759],{"class":592},[294,1430,1432],{"id":1431},"runtime-config-types","Runtime Config Types",[299,1434,1435],{},"Access typed runtime configuration:",[569,1437,1440],{"className":571,"code":1438,"filename":1439,"language":573,"meta":574,"style":574},"export default defineEventHandler((event) => {\n  const config = useRuntimeConfig(event).mcp\n\n  \u002F\u002F config is typed with:\n  \u002F\u002F - enabled: boolean\n  \u002F\u002F - route: string\n  \u002F\u002F - browserRedirect: string\n  \u002F\u002F - name: string\n  \u002F\u002F - version: string\n  \u002F\u002F - dir: string\n\n  return config\n})\n","server\u002Fapi\u002Fconfig.ts",[322,1441,1442,1464,1488,1492,1497,1502,1507,1512,1517,1522,1527,1531,1539],{"__ignoreMap":574},[578,1443,1444,1446,1448,1451,1453,1455,1458,1460,1462],{"class":580,"line":581},[578,1445,622],{"class":584},[578,1447,625],{"class":584},[578,1449,1450],{"class":628}," defineEventHandler",[578,1452,632],{"class":592},[578,1454,632],{"class":588},[578,1456,1457],{"class":711},"event",[578,1459,727],{"class":588},[578,1461,730],{"class":704},[578,1463,667],{"class":588},[578,1465,1466,1469,1472,1474,1477,1479,1481,1483,1485],{"class":580,"line":612},[578,1467,1468],{"class":704},"  const",[578,1470,1471],{"class":592}," config",[578,1473,1184],{"class":588},[578,1475,1476],{"class":628}," useRuntimeConfig",[578,1478,632],{"class":641},[578,1480,1457],{"class":592},[578,1482,727],{"class":641},[578,1484,433],{"class":588},[578,1486,1487],{"class":592},"mcp\n",[578,1489,1490],{"class":580,"line":619},[578,1491,616],{"emptyLinePlaceholder":615},[578,1493,1494],{"class":580,"line":638},[578,1495,1496],{"class":738},"  \u002F\u002F config is typed with:\n",[578,1498,1499],{"class":580,"line":659},[578,1500,1501],{"class":738},"  \u002F\u002F - enabled: boolean\n",[578,1503,1504],{"class":580,"line":670},[578,1505,1506],{"class":738},"  \u002F\u002F - route: string\n",[578,1508,1509],{"class":580,"line":690},[578,1510,1511],{"class":738},"  \u002F\u002F - browserRedirect: string\n",[578,1513,1514],{"class":580,"line":696},[578,1515,1516],{"class":738},"  \u002F\u002F - name: string\n",[578,1518,1519],{"class":580,"line":735},[578,1520,1521],{"class":738},"  \u002F\u002F - version: string\n",[578,1523,1524],{"class":580,"line":742},[578,1525,1526],{"class":738},"  \u002F\u002F - dir: string\n",[578,1528,1529],{"class":580,"line":748},[578,1530,616],{"emptyLinePlaceholder":615},[578,1532,1533,1536],{"class":580,"line":753},[578,1534,1535],{"class":584},"  return",[578,1537,1538],{"class":592}," config\n",[578,1540,1541,1543],{"class":580,"line":976},[578,1542,756],{"class":588},[578,1544,759],{"class":592},[294,1546,1548],{"id":1547},"next-steps","Next Steps",[316,1550,1551,1556,1561],{},[319,1552,1553,1555],{},[431,1554,41],{"href":47}," - Learn about creating tools",[319,1557,1558,1560],{},[431,1559,71],{"href":76}," - Learn about creating resources",[319,1562,1563,1565],{},[431,1564,100],{"href":105}," - Learn about creating prompts",[1567,1568,1569],"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 pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":574,"searchDepth":612,"depth":612,"links":1571},[1572,1573,1574,1579,1580],{"id":296,"depth":612,"text":297},{"id":304,"depth":612,"text":305},{"id":777,"depth":612,"text":778,"children":1575},[1576,1577,1578],{"id":781,"depth":619,"text":782},{"id":1000,"depth":619,"text":1001},{"id":1272,"depth":619,"text":1273},{"id":1431,"depth":612,"text":1432},{"id":1547,"depth":612,"text":1548},"Type safety and TypeScript features in the Nuxt MCP module.","md",null,{},{"title":224,"icon":227},{"title":1587,"description":1588},"TypeScript support and auto-imports","Full TypeScript inference for tool inputs, output schemas, prompt arguments, and runtime config — with auto-imported helpers, composables, and types.","Ytcx9xdUUv_8QSnpJnQzw7QNTzLLRVqGNJ2IQiGH020",[1591,1593],{"title":220,"path":221,"stem":222,"description":1592,"icon":64,"children":-1},"Intercept MCP requests to add authentication, logging, analytics, and more.",{"title":229,"path":230,"stem":231,"description":1594,"icon":232,"children":-1},"Use Nuxt and Nitro hooks to extend and customize the MCP module.",1787670838613]