[{"data":1,"prerenderedAt":1793},["ShallowReactive",2],{"navigation_docs":3,"-handlers-examples-routing":282,"-handlers-examples-routing-surround":1788},[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":142,"body":284,"description":1779,"extension":1780,"links":1781,"meta":1782,"navigation":1783,"path":143,"seo":1784,"stem":144,"__hash__":1787},"docs\u002F5.handlers\u002F3.examples-routing.md",{"type":285,"value":286,"toc":1773},"minimark",[287,292,296,1352,1356,1359,1366,1369,1447,1520,1524,1539,1568,1571,1648,1652,1769],[288,289,291],"h2",{"id":290},"complete-example","Complete Example",[293,294,295],"p",{},"Here's a complete example of a custom handler:",[297,298,304],"pre",{"className":299,"code":300,"filename":301,"language":302,"meta":303,"style":303},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { z } from 'zod'\nimport { defineMcpTool, defineMcpResource, defineMcpPrompt, defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nconst getUserTool = defineMcpTool({\n  name: 'get-user',\n  description: 'Get user information',\n  inputSchema: {\n    userId: z.string(),\n  },\n  handler: async ({ userId }) => {\n    const user = await db.users.find(userId)\n    return user\n  },\n})\n\nconst createUserTool = defineMcpTool({\n  name: 'create-user',\n  description: 'Create a new user',\n  inputSchema: {\n    name: z.string(),\n    email: z.string().email(),\n  },\n  handler: async ({ name, email }) => {\n    const user = await db.users.create({ name, email })\n    return `User created: ${user.id}`\n  },\n})\n\n\u002F\u002F Define resources for this handler\nconst userResource = defineMcpResource({\n  name: 'user',\n  uri: 'api:\u002F\u002Fusers\u002F{id}',\n  handler: async (uri, variables) => {\n    const id = variables.id as string\n    const user = await db.users.find(id)\n    return {\n      contents: [{\n        uri: uri.toString(),\n        mimeType: 'application\u002Fjson',\n        text: JSON.stringify(user),\n      }],\n    }\n  },\n})\n\n\u002F\u002F Define prompts for this handler\nconst userPrompt = defineMcpPrompt({\n  name: 'user-help',\n  description: 'Get help with user operations',\n  handler: async () => {\n    return {\n      messages: [{\n        role: 'user',\n        content: {\n          type: 'text',\n          text: 'How can I manage users?',\n        },\n      }],\n    }\n  },\n})\n\n\u002F\u002F Export the handler\nexport default defineMcpHandler({\n  name: 'api',\n  version: '1.0.0',\n  route: '\u002Fmcp\u002Fapi',\n  tools: [getUserTool, createUserTool],\n  resources: [userResource],\n  prompts: [userPrompt],\n  browserRedirect: '\u002Fdocs\u002Fapi',\n})\n","server\u002Fmcp\u002Fapi-handler.ts","typescript","",[305,306,307,340,377,384,406,427,444,455,476,482,508,544,553,558,566,571,587,603,619,628,646,671,676,701,738,763,768,775,780,787,803,818,835,862,885,912,919,932,952,969,993,1004,1010,1015,1022,1027,1033,1049,1065,1081,1097,1104,1116,1132,1142,1159,1176,1182,1191,1196,1201,1208,1213,1219,1234,1250,1267,1284,1302,1315,1328,1345],"code",{"__ignoreMap":303},[308,309,312,316,320,324,327,330,333,337],"span",{"class":310,"line":311},"line",1,[308,313,315],{"class":314},"s7zQu","import",[308,317,319],{"class":318},"sMK4o"," {",[308,321,323],{"class":322},"sTEyZ"," z",[308,325,326],{"class":318}," }",[308,328,329],{"class":314}," from",[308,331,332],{"class":318}," '",[308,334,336],{"class":335},"sfazB","zod",[308,338,339],{"class":318},"'\n",[308,341,343,345,347,350,353,356,358,361,363,366,368,370,372,375],{"class":310,"line":342},2,[308,344,315],{"class":314},[308,346,319],{"class":318},[308,348,349],{"class":322}," defineMcpTool",[308,351,352],{"class":318},",",[308,354,355],{"class":322}," defineMcpResource",[308,357,352],{"class":318},[308,359,360],{"class":322}," defineMcpPrompt",[308,362,352],{"class":318},[308,364,365],{"class":322}," defineMcpHandler",[308,367,326],{"class":318},[308,369,329],{"class":314},[308,371,332],{"class":318},[308,373,374],{"class":335},"@nuxtjs\u002Fmcp-toolkit\u002Fserver",[308,376,339],{"class":318},[308,378,380],{"class":310,"line":379},3,[308,381,383],{"emptyLinePlaceholder":382},true,"\n",[308,385,387,391,394,397,400,403],{"class":310,"line":386},4,[308,388,390],{"class":389},"spNyl","const",[308,392,393],{"class":322}," getUserTool ",[308,395,396],{"class":318},"=",[308,398,349],{"class":399},"s2Zo4",[308,401,402],{"class":322},"(",[308,404,405],{"class":318},"{\n",[308,407,409,413,416,418,421,424],{"class":310,"line":408},5,[308,410,412],{"class":411},"swJcz","  name",[308,414,415],{"class":318},":",[308,417,332],{"class":318},[308,419,420],{"class":335},"get-user",[308,422,423],{"class":318},"'",[308,425,426],{"class":318},",\n",[308,428,430,433,435,437,440,442],{"class":310,"line":429},6,[308,431,432],{"class":411},"  description",[308,434,415],{"class":318},[308,436,332],{"class":318},[308,438,439],{"class":335},"Get user information",[308,441,423],{"class":318},[308,443,426],{"class":318},[308,445,447,450,452],{"class":310,"line":446},7,[308,448,449],{"class":411},"  inputSchema",[308,451,415],{"class":318},[308,453,454],{"class":318}," {\n",[308,456,458,461,463,465,468,471,474],{"class":310,"line":457},8,[308,459,460],{"class":411},"    userId",[308,462,415],{"class":318},[308,464,323],{"class":322},[308,466,467],{"class":318},".",[308,469,470],{"class":399},"string",[308,472,473],{"class":322},"()",[308,475,426],{"class":318},[308,477,479],{"class":310,"line":478},9,[308,480,481],{"class":318},"  },\n",[308,483,485,488,490,493,496,500,503,506],{"class":310,"line":484},10,[308,486,487],{"class":399},"  handler",[308,489,415],{"class":318},[308,491,492],{"class":389}," async",[308,494,495],{"class":318}," ({",[308,497,499],{"class":498},"sHdIc"," userId",[308,501,502],{"class":318}," })",[308,504,505],{"class":389}," =>",[308,507,454],{"class":318},[308,509,511,514,517,520,523,526,528,531,533,536,538,541],{"class":310,"line":510},11,[308,512,513],{"class":389},"    const",[308,515,516],{"class":322}," user",[308,518,519],{"class":318}," =",[308,521,522],{"class":314}," await",[308,524,525],{"class":322}," db",[308,527,467],{"class":318},[308,529,530],{"class":322},"users",[308,532,467],{"class":318},[308,534,535],{"class":399},"find",[308,537,402],{"class":411},[308,539,540],{"class":322},"userId",[308,542,543],{"class":411},")\n",[308,545,547,550],{"class":310,"line":546},12,[308,548,549],{"class":314},"    return",[308,551,552],{"class":322}," user\n",[308,554,556],{"class":310,"line":555},13,[308,557,481],{"class":318},[308,559,561,564],{"class":310,"line":560},14,[308,562,563],{"class":318},"}",[308,565,543],{"class":322},[308,567,569],{"class":310,"line":568},15,[308,570,383],{"emptyLinePlaceholder":382},[308,572,574,576,579,581,583,585],{"class":310,"line":573},16,[308,575,390],{"class":389},[308,577,578],{"class":322}," createUserTool ",[308,580,396],{"class":318},[308,582,349],{"class":399},[308,584,402],{"class":322},[308,586,405],{"class":318},[308,588,590,592,594,596,599,601],{"class":310,"line":589},17,[308,591,412],{"class":411},[308,593,415],{"class":318},[308,595,332],{"class":318},[308,597,598],{"class":335},"create-user",[308,600,423],{"class":318},[308,602,426],{"class":318},[308,604,606,608,610,612,615,617],{"class":310,"line":605},18,[308,607,432],{"class":411},[308,609,415],{"class":318},[308,611,332],{"class":318},[308,613,614],{"class":335},"Create a new user",[308,616,423],{"class":318},[308,618,426],{"class":318},[308,620,622,624,626],{"class":310,"line":621},19,[308,623,449],{"class":411},[308,625,415],{"class":318},[308,627,454],{"class":318},[308,629,631,634,636,638,640,642,644],{"class":310,"line":630},20,[308,632,633],{"class":411},"    name",[308,635,415],{"class":318},[308,637,323],{"class":322},[308,639,467],{"class":318},[308,641,470],{"class":399},[308,643,473],{"class":322},[308,645,426],{"class":318},[308,647,649,652,654,656,658,660,662,664,667,669],{"class":310,"line":648},21,[308,650,651],{"class":411},"    email",[308,653,415],{"class":318},[308,655,323],{"class":322},[308,657,467],{"class":318},[308,659,470],{"class":399},[308,661,473],{"class":322},[308,663,467],{"class":318},[308,665,666],{"class":399},"email",[308,668,473],{"class":322},[308,670,426],{"class":318},[308,672,674],{"class":310,"line":673},22,[308,675,481],{"class":318},[308,677,679,681,683,685,687,690,692,695,697,699],{"class":310,"line":678},23,[308,680,487],{"class":399},[308,682,415],{"class":318},[308,684,492],{"class":389},[308,686,495],{"class":318},[308,688,689],{"class":498}," name",[308,691,352],{"class":318},[308,693,694],{"class":498}," email",[308,696,502],{"class":318},[308,698,505],{"class":389},[308,700,454],{"class":318},[308,702,704,706,708,710,712,714,716,718,720,723,725,728,730,732,734,736],{"class":310,"line":703},24,[308,705,513],{"class":389},[308,707,516],{"class":322},[308,709,519],{"class":318},[308,711,522],{"class":314},[308,713,525],{"class":322},[308,715,467],{"class":318},[308,717,530],{"class":322},[308,719,467],{"class":318},[308,721,722],{"class":399},"create",[308,724,402],{"class":411},[308,726,727],{"class":318},"{",[308,729,689],{"class":322},[308,731,352],{"class":318},[308,733,694],{"class":322},[308,735,326],{"class":318},[308,737,543],{"class":411},[308,739,741,743,746,749,752,755,757,760],{"class":310,"line":740},25,[308,742,549],{"class":314},[308,744,745],{"class":318}," `",[308,747,748],{"class":335},"User created: ",[308,750,751],{"class":318},"${",[308,753,754],{"class":322},"user",[308,756,467],{"class":318},[308,758,759],{"class":322},"id",[308,761,762],{"class":318},"}`\n",[308,764,766],{"class":310,"line":765},26,[308,767,481],{"class":318},[308,769,771,773],{"class":310,"line":770},27,[308,772,563],{"class":318},[308,774,543],{"class":322},[308,776,778],{"class":310,"line":777},28,[308,779,383],{"emptyLinePlaceholder":382},[308,781,783],{"class":310,"line":782},29,[308,784,786],{"class":785},"sHwdD","\u002F\u002F Define resources for this handler\n",[308,788,790,792,795,797,799,801],{"class":310,"line":789},30,[308,791,390],{"class":389},[308,793,794],{"class":322}," userResource ",[308,796,396],{"class":318},[308,798,355],{"class":399},[308,800,402],{"class":322},[308,802,405],{"class":318},[308,804,806,808,810,812,814,816],{"class":310,"line":805},31,[308,807,412],{"class":411},[308,809,415],{"class":318},[308,811,332],{"class":318},[308,813,754],{"class":335},[308,815,423],{"class":318},[308,817,426],{"class":318},[308,819,821,824,826,828,831,833],{"class":310,"line":820},32,[308,822,823],{"class":411},"  uri",[308,825,415],{"class":318},[308,827,332],{"class":318},[308,829,830],{"class":335},"api:\u002F\u002Fusers\u002F{id}",[308,832,423],{"class":318},[308,834,426],{"class":318},[308,836,838,840,842,844,847,850,852,855,858,860],{"class":310,"line":837},33,[308,839,487],{"class":399},[308,841,415],{"class":318},[308,843,492],{"class":389},[308,845,846],{"class":318}," (",[308,848,849],{"class":498},"uri",[308,851,352],{"class":318},[308,853,854],{"class":498}," variables",[308,856,857],{"class":318},")",[308,859,505],{"class":389},[308,861,454],{"class":318},[308,863,865,867,870,872,874,876,878,881],{"class":310,"line":864},34,[308,866,513],{"class":389},[308,868,869],{"class":322}," id",[308,871,519],{"class":318},[308,873,854],{"class":322},[308,875,467],{"class":318},[308,877,759],{"class":322},[308,879,880],{"class":314}," as",[308,882,884],{"class":883},"sBMFI"," string\n",[308,886,888,890,892,894,896,898,900,902,904,906,908,910],{"class":310,"line":887},35,[308,889,513],{"class":389},[308,891,516],{"class":322},[308,893,519],{"class":318},[308,895,522],{"class":314},[308,897,525],{"class":322},[308,899,467],{"class":318},[308,901,530],{"class":322},[308,903,467],{"class":318},[308,905,535],{"class":399},[308,907,402],{"class":411},[308,909,759],{"class":322},[308,911,543],{"class":411},[308,913,915,917],{"class":310,"line":914},36,[308,916,549],{"class":314},[308,918,454],{"class":318},[308,920,922,925,927,930],{"class":310,"line":921},37,[308,923,924],{"class":411},"      contents",[308,926,415],{"class":318},[308,928,929],{"class":411}," [",[308,931,405],{"class":318},[308,933,935,938,940,943,945,948,950],{"class":310,"line":934},38,[308,936,937],{"class":411},"        uri",[308,939,415],{"class":318},[308,941,942],{"class":322}," uri",[308,944,467],{"class":318},[308,946,947],{"class":399},"toString",[308,949,473],{"class":411},[308,951,426],{"class":318},[308,953,955,958,960,962,965,967],{"class":310,"line":954},39,[308,956,957],{"class":411},"        mimeType",[308,959,415],{"class":318},[308,961,332],{"class":318},[308,963,964],{"class":335},"application\u002Fjson",[308,966,423],{"class":318},[308,968,426],{"class":318},[308,970,972,975,977,980,982,985,987,989,991],{"class":310,"line":971},40,[308,973,974],{"class":411},"        text",[308,976,415],{"class":318},[308,978,979],{"class":322}," JSON",[308,981,467],{"class":318},[308,983,984],{"class":399},"stringify",[308,986,402],{"class":411},[308,988,754],{"class":322},[308,990,857],{"class":411},[308,992,426],{"class":318},[308,994,996,999,1002],{"class":310,"line":995},41,[308,997,998],{"class":318},"      }",[308,1000,1001],{"class":411},"]",[308,1003,426],{"class":318},[308,1005,1007],{"class":310,"line":1006},42,[308,1008,1009],{"class":318},"    }\n",[308,1011,1013],{"class":310,"line":1012},43,[308,1014,481],{"class":318},[308,1016,1018,1020],{"class":310,"line":1017},44,[308,1019,563],{"class":318},[308,1021,543],{"class":322},[308,1023,1025],{"class":310,"line":1024},45,[308,1026,383],{"emptyLinePlaceholder":382},[308,1028,1030],{"class":310,"line":1029},46,[308,1031,1032],{"class":785},"\u002F\u002F Define prompts for this handler\n",[308,1034,1036,1038,1041,1043,1045,1047],{"class":310,"line":1035},47,[308,1037,390],{"class":389},[308,1039,1040],{"class":322}," userPrompt ",[308,1042,396],{"class":318},[308,1044,360],{"class":399},[308,1046,402],{"class":322},[308,1048,405],{"class":318},[308,1050,1052,1054,1056,1058,1061,1063],{"class":310,"line":1051},48,[308,1053,412],{"class":411},[308,1055,415],{"class":318},[308,1057,332],{"class":318},[308,1059,1060],{"class":335},"user-help",[308,1062,423],{"class":318},[308,1064,426],{"class":318},[308,1066,1068,1070,1072,1074,1077,1079],{"class":310,"line":1067},49,[308,1069,432],{"class":411},[308,1071,415],{"class":318},[308,1073,332],{"class":318},[308,1075,1076],{"class":335},"Get help with user operations",[308,1078,423],{"class":318},[308,1080,426],{"class":318},[308,1082,1084,1086,1088,1090,1093,1095],{"class":310,"line":1083},50,[308,1085,487],{"class":399},[308,1087,415],{"class":318},[308,1089,492],{"class":389},[308,1091,1092],{"class":318}," ()",[308,1094,505],{"class":389},[308,1096,454],{"class":318},[308,1098,1100,1102],{"class":310,"line":1099},51,[308,1101,549],{"class":314},[308,1103,454],{"class":318},[308,1105,1107,1110,1112,1114],{"class":310,"line":1106},52,[308,1108,1109],{"class":411},"      messages",[308,1111,415],{"class":318},[308,1113,929],{"class":411},[308,1115,405],{"class":318},[308,1117,1119,1122,1124,1126,1128,1130],{"class":310,"line":1118},53,[308,1120,1121],{"class":411},"        role",[308,1123,415],{"class":318},[308,1125,332],{"class":318},[308,1127,754],{"class":335},[308,1129,423],{"class":318},[308,1131,426],{"class":318},[308,1133,1135,1138,1140],{"class":310,"line":1134},54,[308,1136,1137],{"class":411},"        content",[308,1139,415],{"class":318},[308,1141,454],{"class":318},[308,1143,1145,1148,1150,1152,1155,1157],{"class":310,"line":1144},55,[308,1146,1147],{"class":411},"          type",[308,1149,415],{"class":318},[308,1151,332],{"class":318},[308,1153,1154],{"class":335},"text",[308,1156,423],{"class":318},[308,1158,426],{"class":318},[308,1160,1162,1165,1167,1169,1172,1174],{"class":310,"line":1161},56,[308,1163,1164],{"class":411},"          text",[308,1166,415],{"class":318},[308,1168,332],{"class":318},[308,1170,1171],{"class":335},"How can I manage users?",[308,1173,423],{"class":318},[308,1175,426],{"class":318},[308,1177,1179],{"class":310,"line":1178},57,[308,1180,1181],{"class":318},"        },\n",[308,1183,1185,1187,1189],{"class":310,"line":1184},58,[308,1186,998],{"class":318},[308,1188,1001],{"class":411},[308,1190,426],{"class":318},[308,1192,1194],{"class":310,"line":1193},59,[308,1195,1009],{"class":318},[308,1197,1199],{"class":310,"line":1198},60,[308,1200,481],{"class":318},[308,1202,1204,1206],{"class":310,"line":1203},61,[308,1205,563],{"class":318},[308,1207,543],{"class":322},[308,1209,1211],{"class":310,"line":1210},62,[308,1212,383],{"emptyLinePlaceholder":382},[308,1214,1216],{"class":310,"line":1215},63,[308,1217,1218],{"class":785},"\u002F\u002F Export the handler\n",[308,1220,1222,1225,1228,1230,1232],{"class":310,"line":1221},64,[308,1223,1224],{"class":314},"export",[308,1226,1227],{"class":314}," default",[308,1229,365],{"class":399},[308,1231,402],{"class":322},[308,1233,405],{"class":318},[308,1235,1237,1239,1241,1243,1246,1248],{"class":310,"line":1236},65,[308,1238,412],{"class":411},[308,1240,415],{"class":318},[308,1242,332],{"class":318},[308,1244,1245],{"class":335},"api",[308,1247,423],{"class":318},[308,1249,426],{"class":318},[308,1251,1253,1256,1258,1260,1263,1265],{"class":310,"line":1252},66,[308,1254,1255],{"class":411},"  version",[308,1257,415],{"class":318},[308,1259,332],{"class":318},[308,1261,1262],{"class":335},"1.0.0",[308,1264,423],{"class":318},[308,1266,426],{"class":318},[308,1268,1270,1273,1275,1277,1280,1282],{"class":310,"line":1269},67,[308,1271,1272],{"class":411},"  route",[308,1274,415],{"class":318},[308,1276,332],{"class":318},[308,1278,1279],{"class":335},"\u002Fmcp\u002Fapi",[308,1281,423],{"class":318},[308,1283,426],{"class":318},[308,1285,1287,1290,1292,1295,1297,1300],{"class":310,"line":1286},68,[308,1288,1289],{"class":411},"  tools",[308,1291,415],{"class":318},[308,1293,1294],{"class":322}," [getUserTool",[308,1296,352],{"class":318},[308,1298,1299],{"class":322}," createUserTool]",[308,1301,426],{"class":318},[308,1303,1305,1308,1310,1313],{"class":310,"line":1304},69,[308,1306,1307],{"class":411},"  resources",[308,1309,415],{"class":318},[308,1311,1312],{"class":322}," [userResource]",[308,1314,426],{"class":318},[308,1316,1318,1321,1323,1326],{"class":310,"line":1317},70,[308,1319,1320],{"class":411},"  prompts",[308,1322,415],{"class":318},[308,1324,1325],{"class":322}," [userPrompt]",[308,1327,426],{"class":318},[308,1329,1331,1334,1336,1338,1341,1343],{"class":310,"line":1330},71,[308,1332,1333],{"class":411},"  browserRedirect",[308,1335,415],{"class":318},[308,1337,332],{"class":318},[308,1339,1340],{"class":335},"\u002Fdocs\u002Fapi",[308,1342,423],{"class":318},[308,1344,426],{"class":318},[308,1346,1348,1350],{"class":310,"line":1347},72,[308,1349,563],{"class":318},[308,1351,543],{"class":322},[288,1353,1355],{"id":1354},"multiple-handlers","Multiple Handlers",[293,1357,1358],{},"You can create multiple handlers in your application:",[297,1360,1364],{"className":1361,"code":1363,"language":1154},[1362],"language-text","server\u002F\n└── mcp\u002F\n    ├── migration.ts          # Migration handler\n    ├── api-handler.ts        # API handler\n    ├── admin-handler.ts      # Admin handler\n    ├── tools\u002F\n    │   └── echo.ts           # Default handler tools\n    ├── resources\u002F\n    │   └── readme.ts         # Default handler resources\n    └── prompts\u002F\n        └── greeting.ts       # Default handler prompts\n",[305,1365,1363],{"__ignoreMap":303},[293,1367,1368],{},"Each handler file should export a default handler definition:",[297,1370,1373],{"className":299,"code":1371,"filename":1372,"language":302,"meta":303,"style":303},"import { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpHandler({\n  name: 'migration',\n  tools: [ ... ],\n})\n","server\u002Fmcp\u002Fmigration.ts",[305,1374,1375,1393,1397,1409,1424,1441],{"__ignoreMap":303},[308,1376,1377,1379,1381,1383,1385,1387,1389,1391],{"class":310,"line":311},[308,1378,315],{"class":314},[308,1380,319],{"class":318},[308,1382,365],{"class":322},[308,1384,326],{"class":318},[308,1386,329],{"class":314},[308,1388,332],{"class":318},[308,1390,374],{"class":335},[308,1392,339],{"class":318},[308,1394,1395],{"class":310,"line":342},[308,1396,383],{"emptyLinePlaceholder":382},[308,1398,1399,1401,1403,1405,1407],{"class":310,"line":379},[308,1400,1224],{"class":314},[308,1402,1227],{"class":314},[308,1404,365],{"class":399},[308,1406,402],{"class":322},[308,1408,405],{"class":318},[308,1410,1411,1413,1415,1417,1420,1422],{"class":310,"line":386},[308,1412,412],{"class":411},[308,1414,415],{"class":318},[308,1416,332],{"class":318},[308,1418,1419],{"class":335},"migration",[308,1421,423],{"class":318},[308,1423,426],{"class":318},[308,1425,1426,1428,1430,1433,1436,1439],{"class":310,"line":408},[308,1427,1289],{"class":411},[308,1429,415],{"class":318},[308,1431,1432],{"class":322}," [ ",[308,1434,1435],{"class":318},"...",[308,1437,1438],{"class":322}," ]",[308,1440,426],{"class":318},[308,1442,1443,1445],{"class":310,"line":429},[308,1444,563],{"class":318},[308,1446,543],{"class":322},[297,1448,1450],{"className":299,"code":1449,"filename":301,"language":302,"meta":303,"style":303},"import { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpHandler({\n  name: 'api',\n  tools: [ ... ],\n})\n",[305,1451,1452,1470,1474,1486,1500,1514],{"__ignoreMap":303},[308,1453,1454,1456,1458,1460,1462,1464,1466,1468],{"class":310,"line":311},[308,1455,315],{"class":314},[308,1457,319],{"class":318},[308,1459,365],{"class":322},[308,1461,326],{"class":318},[308,1463,329],{"class":314},[308,1465,332],{"class":318},[308,1467,374],{"class":335},[308,1469,339],{"class":318},[308,1471,1472],{"class":310,"line":342},[308,1473,383],{"emptyLinePlaceholder":382},[308,1475,1476,1478,1480,1482,1484],{"class":310,"line":379},[308,1477,1224],{"class":314},[308,1479,1227],{"class":314},[308,1481,365],{"class":399},[308,1483,402],{"class":322},[308,1485,405],{"class":318},[308,1487,1488,1490,1492,1494,1496,1498],{"class":310,"line":386},[308,1489,412],{"class":411},[308,1491,415],{"class":318},[308,1493,332],{"class":318},[308,1495,1245],{"class":335},[308,1497,423],{"class":318},[308,1499,426],{"class":318},[308,1501,1502,1504,1506,1508,1510,1512],{"class":310,"line":408},[308,1503,1289],{"class":411},[308,1505,415],{"class":318},[308,1507,1432],{"class":322},[308,1509,1435],{"class":318},[308,1511,1438],{"class":322},[308,1513,426],{"class":318},[308,1515,1516,1518],{"class":310,"line":429},[308,1517,563],{"class":318},[308,1519,543],{"class":322},[288,1521,1523],{"id":1522},"handler-routes","Handler Routes",[293,1525,1526,1527,1530,1531,1534,1535,1538],{},"The handler's ",[305,1528,1529],{},"name"," determines where it will be mounted. By default, handlers are accessible at ",[305,1532,1533],{},"\u002Fmcp\u002F:name"," where ",[305,1536,1537],{},":name"," is the handler's name:",[1540,1541,1542,1553,1560],"ul",{},[1543,1544,1545,1546,1549,1550],"li",{},"Handler with ",[305,1547,1548],{},"name: 'migration'"," → mounted at ",[305,1551,1552],{},"\u002Fmcp\u002Fmigration",[1543,1554,1545,1555,1549,1558],{},[305,1556,1557],{},"name: 'api'",[305,1559,1279],{},[1543,1561,1545,1562,1549,1565],{},[305,1563,1564],{},"name: 'admin'",[305,1566,1567],{},"\u002Fmcp\u002Fadmin",[293,1569,1570],{},"You can also specify a custom route to override the default:",[297,1572,1574],{"className":299,"code":1573,"language":302,"meta":303,"style":303},"import { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpHandler({\n  name: 'api',\n  route: '\u002Fapi\u002Fmcp\u002Fv1', \u002F\u002F Custom route instead of \u002Fmcp\u002Fapi\n})\n",[305,1575,1576,1594,1598,1610,1624,1642],{"__ignoreMap":303},[308,1577,1578,1580,1582,1584,1586,1588,1590,1592],{"class":310,"line":311},[308,1579,315],{"class":314},[308,1581,319],{"class":318},[308,1583,365],{"class":322},[308,1585,326],{"class":318},[308,1587,329],{"class":314},[308,1589,332],{"class":318},[308,1591,374],{"class":335},[308,1593,339],{"class":318},[308,1595,1596],{"class":310,"line":342},[308,1597,383],{"emptyLinePlaceholder":382},[308,1599,1600,1602,1604,1606,1608],{"class":310,"line":379},[308,1601,1224],{"class":314},[308,1603,1227],{"class":314},[308,1605,365],{"class":399},[308,1607,402],{"class":322},[308,1609,405],{"class":318},[308,1611,1612,1614,1616,1618,1620,1622],{"class":310,"line":386},[308,1613,412],{"class":411},[308,1615,415],{"class":318},[308,1617,332],{"class":318},[308,1619,1245],{"class":335},[308,1621,423],{"class":318},[308,1623,426],{"class":318},[308,1625,1626,1628,1630,1632,1635,1637,1639],{"class":310,"line":408},[308,1627,1272],{"class":411},[308,1629,415],{"class":318},[308,1631,332],{"class":318},[308,1633,1634],{"class":335},"\u002Fapi\u002Fmcp\u002Fv1",[308,1636,423],{"class":318},[308,1638,352],{"class":318},[308,1640,1641],{"class":785}," \u002F\u002F Custom route instead of \u002Fmcp\u002Fapi\n",[308,1643,1644,1646],{"class":310,"line":429},[308,1645,563],{"class":318},[308,1647,543],{"class":322},[288,1649,1651],{"id":1650},"default-vs-custom-handlers","Default vs Custom Handlers",[1653,1654,1655,1677],"table",{},[1656,1657,1658],"thead",{},[1659,1660,1661,1665,1668,1674],"tr",{},[1662,1663,1664],"th",{},"Feature",[1662,1666,1667],{},"Default Handler",[1662,1669,1670,1671,857],{},"Default Handler Override (",[305,1672,1673],{},"index.ts",[1662,1675,1676],{},"Custom Handler",[1678,1679,1680,1701,1717,1730,1743,1757],"tbody",{},[1659,1681,1682,1686,1692,1696],{},[1683,1684,1685],"td",{},"Route",[1683,1687,1688,1691],{},[305,1689,1690],{},"\u002Fmcp"," (via config)",[1683,1693,1694,1691],{},[305,1695,1690],{},[1683,1697,1698,1700],{},[305,1699,1533],{}," (or custom route)",[1659,1702,1703,1705,1711,1714],{},[1683,1704,41],{},[1683,1706,1707,1708],{},"From ",[305,1709,1710],{},"server\u002Fmcp\u002Ftools\u002F",[1683,1712,1713],{},"Custom or global",[1683,1715,1716],{},"Defined in handler",[1659,1718,1719,1721,1726,1728],{},[1683,1720,71],{},[1683,1722,1707,1723],{},[305,1724,1725],{},"server\u002Fmcp\u002Fresources\u002F",[1683,1727,1713],{},[1683,1729,1716],{},[1659,1731,1732,1734,1739,1741],{},[1683,1733,100],{},[1683,1735,1707,1736],{},[305,1737,1738],{},"server\u002Fmcp\u002Fprompts\u002F",[1683,1740,1713],{},[1683,1742,1716],{},[1659,1744,1745,1748,1751,1754],{},[1683,1746,1747],{},"Name",[1683,1749,1750],{},"From config",[1683,1752,1753],{},"Custom or config",[1683,1755,1756],{},"Handler name (required)",[1659,1758,1759,1762,1764,1766],{},[1683,1760,1761],{},"Version",[1683,1763,1750],{},[1683,1765,1753],{},[1683,1767,1768],{},"Handler version",[1770,1771,1772],"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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);}",{"title":303,"searchDepth":342,"depth":342,"links":1774},[1775,1776,1777,1778],{"id":290,"depth":342,"text":291},{"id":1354,"depth":342,"text":1355},{"id":1522,"depth":342,"text":1523},{"id":1650,"depth":342,"text":1651},"Full handler examples, multiple handlers, routes, and default vs custom comparison.","md",null,{},{"icon":145},{"title":1785,"description":1786},"MCP handler examples & routes","Complete defineMcpHandler examples, multiple handlers, \u002Fmcp\u002F:name routing, and comparison table.","McXas2Gh-FNIK9Kyp0LavoAaPZLSYn7-Qv8bHP54luo",[1789,1791],{"title":137,"path":138,"stem":139,"description":1790,"icon":140,"children":-1},"Required fields and every defineMcpHandler option, including tools, resources, and prompts.",{"title":147,"path":148,"stem":149,"description":1792,"icon":150,"children":-1},"Cross-handler tool sharing, file layout, use cases, and next steps.",1777888635784]