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