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