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