[{"data":1,"prerenderedAt":4720},["ShallowReactive",2],{"navigation_docs":3,"-core-concepts-handlers":127,"-core-concepts-handlers-surround":4715},[4,40,68,98],{"title":5,"path":6,"stem":7,"children":8,"page":39},"Getting Started","/getting-started","1.getting-started",[9,14,19,24,29,34],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","/getting-started/introduction","1.getting-started/1.introduction","i-lucide-book-open",{"title":15,"path":16,"stem":17,"icon":18},"Installation","/getting-started/installation","1.getting-started/2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Configuration","/getting-started/configuration","1.getting-started/3.configuration","i-lucide-settings",{"title":25,"path":26,"stem":27,"icon":28},"MCP Inspector","/getting-started/inspector","1.getting-started/4.inspector","i-lucide-circuit-board",{"title":30,"path":31,"stem":32,"icon":33},"Connection","/getting-started/connection","1.getting-started/5.connection","i-lucide-plug",{"title":35,"path":36,"stem":37,"icon":38},"Agent Skills","/getting-started/agent-skills","1.getting-started/6.agent-skills","i-lucide-sparkles",false,{"title":41,"path":42,"stem":43,"children":44,"page":39},"Core Concepts","/core-concepts","2.core-concepts",[45,48,53,58,63],{"title":20,"path":46,"stem":47,"icon":23},"/core-concepts/configuration","2.core-concepts/1.configuration",{"title":49,"path":50,"stem":51,"icon":52},"Tools","/core-concepts/tools","2.core-concepts/2.tools","i-lucide-wrench",{"title":54,"path":55,"stem":56,"icon":57},"Resources","/core-concepts/resources","2.core-concepts/3.resources","i-lucide-package",{"title":59,"path":60,"stem":61,"icon":62},"Prompts","/core-concepts/prompts","2.core-concepts/4.prompts","i-lucide-message-square",{"title":64,"path":65,"stem":66,"icon":67},"Handlers","/core-concepts/handlers","2.core-concepts/5.handlers","i-lucide-server",{"title":69,"path":70,"stem":71,"children":72,"page":39},"Advanced Topics","/advanced","3.advanced",[73,78,83,88,93],{"title":74,"path":75,"stem":76,"icon":77},"Custom Paths","/advanced/custom-paths","3.advanced/1.custom-paths","i-lucide-folder",{"title":79,"path":80,"stem":81,"icon":82},"Middleware","/advanced/middleware","3.advanced/2.middleware","i-lucide-shield",{"title":84,"path":85,"stem":86,"icon":87},"TypeScript","/advanced/typescript","3.advanced/3.typescript","i-lucide-type",{"title":89,"path":90,"stem":91,"icon":92},"Hooks","/advanced/hooks","3.advanced/4.hooks","i-lucide-webhook",{"title":94,"path":95,"stem":96,"icon":97},"MCP Evals","/advanced/evals","3.advanced/5.evals","i-lucide-flask-conical",{"title":99,"path":100,"stem":101,"children":102,"page":39},"Examples","/examples","4.examples",[103,108,113,118,123],{"title":104,"path":105,"stem":106,"icon":107},"Authentication","/examples/authentication","4.examples/1.authentication","i-lucide-shield-check",{"title":109,"path":110,"stem":111,"icon":112},"API Integration","/examples/api-integration","4.examples/2.api-integration","i-lucide-globe",{"title":114,"path":115,"stem":116,"icon":117},"Common Patterns","/examples/common-patterns","4.examples/3.common-patterns","i-lucide-lightbulb",{"title":119,"path":120,"stem":121,"icon":122},"File Operations","/examples/file-operations","4.examples/4.file-operations","i-lucide-file",{"title":124,"path":125,"stem":126,"icon":62},"Prompt Examples","/examples/prompt-examples","4.examples/5.prompt-examples",{"id":128,"title":64,"body":129,"description":4707,"extension":4708,"links":4709,"meta":4710,"navigation":4711,"path":65,"seo":4712,"stem":66,"__hash__":4714},"docs/2.core-concepts/5.handlers.md",{"type":130,"value":131,"toc":4668},"minimark",[132,137,146,149,162,166,178,183,193,282,285,329,351,356,424,428,511,515,521,947,951,954,1224,1228,1234,1243,1307,1313,1316,1391,1396,1401,1417,1496,1501,1506,1582,1587,1590,1699,1707,1712,1715,1843,1848,1851,1979,1984,1987,2115,2119,2122,3193,3197,3200,3207,3210,3285,3360,3364,3377,3403,3406,3485,3489,3606,3610,3614,3617,3699,3783,3787,3790,3896,4002,4006,4009,4093,4172,4176,4179,4395,4489,4580,4584,4590,4596,4601,4605,4638,4642,4664],[133,134,136],"h2",{"id":135},"what-are-handlers","What are Handlers?",[138,139,140,141,145],"p",{},"Handlers allow you to create ",[142,143,144],"strong",{},"multiple MCP endpoints"," in a single Nuxt application. Each handler has its own route, name, version, and can include its own set of tools, resources, and prompts.",[138,147,148],{},"This is useful when you want to:",[150,151,152,156,159],"ul",{},[153,154,155],"li",{},"Separate different MCP functionalities into different endpoints",[153,157,158],{},"Create versioned MCP APIs",[153,160,161],{},"Organize tools/resources by domain or feature",[133,163,165],{"id":164},"default-handler","Default Handler",[138,167,168,169,173,174,177],{},"By default, the module creates a single MCP endpoint at ",[170,171,172],"code",{},"/mcp"," (or your configured route) that includes all tools, resources, and prompts from the ",[170,175,176],{},"server/mcp/"," directory.",[179,180,182],"h3",{"id":181},"overriding-the-default-handler","Overriding the Default Handler",[138,184,185,186,189,190,192],{},"You can override the default handler's configuration by creating an ",[170,187,188],{},"index.ts"," file in ",[170,191,176],{},":",[194,195,201],"pre",{"className":196,"code":197,"filename":198,"language":199,"meta":200,"style":200},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineMcpHandler({\n  version: '2.0.0',\n  browserRedirect: '/docs',\n  // If tools/resources/prompts not specified, uses global definitions\n})\n","server/mcp/index.ts","typescript","",[170,202,203,227,249,266,273],{"__ignoreMap":200},[204,205,208,212,215,219,223],"span",{"class":206,"line":207},"line",1,[204,209,211],{"class":210},"s7zQu","export",[204,213,214],{"class":210}," default",[204,216,218],{"class":217},"s2Zo4"," defineMcpHandler",[204,220,222],{"class":221},"sTEyZ","(",[204,224,226],{"class":225},"sMK4o","{\n",[204,228,230,234,236,239,243,246],{"class":206,"line":229},2,[204,231,233],{"class":232},"swJcz","  version",[204,235,192],{"class":225},[204,237,238],{"class":225}," '",[204,240,242],{"class":241},"sfazB","2.0.0",[204,244,245],{"class":225},"'",[204,247,248],{"class":225},",\n",[204,250,252,255,257,259,262,264],{"class":206,"line":251},3,[204,253,254],{"class":232},"  browserRedirect",[204,256,192],{"class":225},[204,258,238],{"class":225},[204,260,261],{"class":241},"/docs",[204,263,245],{"class":225},[204,265,248],{"class":225},[204,267,269],{"class":206,"line":268},4,[204,270,272],{"class":271},"sHwdD","  // If tools/resources/prompts not specified, uses global definitions\n",[204,274,276,279],{"class":206,"line":275},5,[204,277,278],{"class":225},"}",[204,280,281],{"class":221},")\n",[138,283,284],{},"This allows you to customize:",[150,286,287,293,299,305,318],{},[153,288,289,292],{},[170,290,291],{},"version"," - Override the server version",[153,294,295,298],{},[170,296,297],{},"browserRedirect"," - Override the browser redirect URL",[153,300,301,304],{},[170,302,303],{},"name"," - Override the server name (optional)",[153,306,307,310,311,310,314,317],{},[170,308,309],{},"tools",", ",[170,312,313],{},"resources",[170,315,316],{},"prompts"," - Use specific definitions instead of global ones",[153,319,320,323,324,328],{},[170,321,322],{},"middleware"," - Add request interception for auth, logging, etc. (",[325,326,327],"a",{"href":80},"learn more",")",[330,331,334,335,338,339,342,343,346,347,350],"callout",{"color":332,"icon":333},"info","i-lucide-info","The ",[170,336,337],{},"route"," property is ",[142,340,341],{},"ignored"," for the default handler. To change the route, use ",[170,344,345],{},"mcp.route"," in your ",[170,348,349],{},"nuxt.config.ts",".",[352,353,355],"h4",{"id":354},"example-custom-version-and-redirect","Example: Custom Version and Redirect",[194,357,359],{"className":196,"code":358,"filename":198,"language":199,"meta":200,"style":200},"export default defineMcpHandler({\n  name: 'My Documentation MCP',\n  version: '1.2.0',\n  browserRedirect: '/getting-started',\n})\n",[170,360,361,373,389,404,418],{"__ignoreMap":200},[204,362,363,365,367,369,371],{"class":206,"line":207},[204,364,211],{"class":210},[204,366,214],{"class":210},[204,368,218],{"class":217},[204,370,222],{"class":221},[204,372,226],{"class":225},[204,374,375,378,380,382,385,387],{"class":206,"line":229},[204,376,377],{"class":232},"  name",[204,379,192],{"class":225},[204,381,238],{"class":225},[204,383,384],{"class":241},"My Documentation MCP",[204,386,245],{"class":225},[204,388,248],{"class":225},[204,390,391,393,395,397,400,402],{"class":206,"line":251},[204,392,233],{"class":232},[204,394,192],{"class":225},[204,396,238],{"class":225},[204,398,399],{"class":241},"1.2.0",[204,401,245],{"class":225},[204,403,248],{"class":225},[204,405,406,408,410,412,414,416],{"class":206,"line":268},[204,407,254],{"class":232},[204,409,192],{"class":225},[204,411,238],{"class":225},[204,413,6],{"class":241},[204,415,245],{"class":225},[204,417,248],{"class":225},[204,419,420,422],{"class":206,"line":275},[204,421,278],{"class":225},[204,423,281],{"class":221},[352,425,427],{"id":426},"example-limiting-exposed-tools","Example: Limiting Exposed Tools",[194,429,431],{"className":196,"code":430,"filename":198,"language":199,"meta":200,"style":200},"import { myTool, anotherTool } from './tools/my-tools'\n\nexport default defineMcpHandler({\n  // Only expose specific tools instead of all tools in server/mcp/tools/\n  tools: [myTool, anotherTool],\n})\n",[170,432,433,464,470,482,487,504],{"__ignoreMap":200},[204,434,435,438,441,444,447,450,453,456,458,461],{"class":206,"line":207},[204,436,437],{"class":210},"import",[204,439,440],{"class":225}," {",[204,442,443],{"class":221}," myTool",[204,445,446],{"class":225},",",[204,448,449],{"class":221}," anotherTool",[204,451,452],{"class":225}," }",[204,454,455],{"class":210}," from",[204,457,238],{"class":225},[204,459,460],{"class":241},"./tools/my-tools",[204,462,463],{"class":225},"'\n",[204,465,466],{"class":206,"line":229},[204,467,469],{"emptyLinePlaceholder":468},true,"\n",[204,471,472,474,476,478,480],{"class":206,"line":251},[204,473,211],{"class":210},[204,475,214],{"class":210},[204,477,218],{"class":217},[204,479,222],{"class":221},[204,481,226],{"class":225},[204,483,484],{"class":206,"line":268},[204,485,486],{"class":271},"  // Only expose specific tools instead of all tools in server/mcp/tools/\n",[204,488,489,492,494,497,499,502],{"class":206,"line":275},[204,490,491],{"class":232},"  tools",[204,493,192],{"class":225},[204,495,496],{"class":221}," [myTool",[204,498,446],{"class":225},[204,500,501],{"class":221}," anotherTool]",[204,503,248],{"class":225},[204,505,507,509],{"class":206,"line":506},6,[204,508,278],{"class":225},[204,510,281],{"class":221},[133,512,514],{"id":513},"custom-handlers","Custom Handlers",[138,516,517,518,192],{},"Create custom handlers using ",[170,519,520],{},"defineMcpHandler",[194,522,525],{"className":196,"code":523,"filename":524,"language":199,"meta":200,"style":200},"import { z } from 'zod'\nimport { defineMcpTool, defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nconst migrationTool = defineMcpTool({\n  name: 'migrate-v3-to-v4',\n  title: 'Migrate v3 to v4',\n  description: 'Migrate code from version 3 to version 4',\n  inputSchema: {\n    code: z.string().describe('The code to migrate'),\n  },\n  handler: async ({ code }) => {\n    const migrated = code.replace(/v3/g, 'v4')\n    return {\n      content: [{\n        type: 'text',\n        text: migrated,\n      }],\n    }\n  },\n})\n\nexport default defineMcpHandler({\n  name: 'migration',\n  version: '0.1.0',\n  route: '/mcp/migration',\n  tools: [migrationTool],\n  browserRedirect: '/',\n})\n","server/mcp/migration.ts",[170,526,527,547,574,578,596,611,627,644,655,691,697,723,767,775,788,805,817,828,834,839,846,851,864,880,896,913,925,940],{"__ignoreMap":200},[204,528,529,531,533,536,538,540,542,545],{"class":206,"line":207},[204,530,437],{"class":210},[204,532,440],{"class":225},[204,534,535],{"class":221}," z",[204,537,452],{"class":225},[204,539,455],{"class":210},[204,541,238],{"class":225},[204,543,544],{"class":241},"zod",[204,546,463],{"class":225},[204,548,549,551,553,556,558,560,562,564,566,569,571],{"class":206,"line":229},[204,550,437],{"class":210},[204,552,440],{"class":225},[204,554,555],{"class":221}," defineMcpTool",[204,557,446],{"class":225},[204,559,218],{"class":221},[204,561,452],{"class":225},[204,563,455],{"class":210},[204,565,238],{"class":225},[204,567,568],{"class":241},"@nuxtjs/mcp-toolkit/server",[204,570,245],{"class":225},[204,572,573],{"class":271}," // optional\n",[204,575,576],{"class":206,"line":251},[204,577,469],{"emptyLinePlaceholder":468},[204,579,580,584,587,590,592,594],{"class":206,"line":268},[204,581,583],{"class":582},"spNyl","const",[204,585,586],{"class":221}," migrationTool ",[204,588,589],{"class":225},"=",[204,591,555],{"class":217},[204,593,222],{"class":221},[204,595,226],{"class":225},[204,597,598,600,602,604,607,609],{"class":206,"line":275},[204,599,377],{"class":232},[204,601,192],{"class":225},[204,603,238],{"class":225},[204,605,606],{"class":241},"migrate-v3-to-v4",[204,608,245],{"class":225},[204,610,248],{"class":225},[204,612,613,616,618,620,623,625],{"class":206,"line":506},[204,614,615],{"class":232},"  title",[204,617,192],{"class":225},[204,619,238],{"class":225},[204,621,622],{"class":241},"Migrate v3 to v4",[204,624,245],{"class":225},[204,626,248],{"class":225},[204,628,630,633,635,637,640,642],{"class":206,"line":629},7,[204,631,632],{"class":232},"  description",[204,634,192],{"class":225},[204,636,238],{"class":225},[204,638,639],{"class":241},"Migrate code from version 3 to version 4",[204,641,245],{"class":225},[204,643,248],{"class":225},[204,645,647,650,652],{"class":206,"line":646},8,[204,648,649],{"class":232},"  inputSchema",[204,651,192],{"class":225},[204,653,654],{"class":225}," {\n",[204,656,658,661,663,665,667,670,673,675,678,680,682,685,687,689],{"class":206,"line":657},9,[204,659,660],{"class":232},"    code",[204,662,192],{"class":225},[204,664,535],{"class":221},[204,666,350],{"class":225},[204,668,669],{"class":217},"string",[204,671,672],{"class":221},"()",[204,674,350],{"class":225},[204,676,677],{"class":217},"describe",[204,679,222],{"class":221},[204,681,245],{"class":225},[204,683,684],{"class":241},"The code to migrate",[204,686,245],{"class":225},[204,688,328],{"class":221},[204,690,248],{"class":225},[204,692,694],{"class":206,"line":693},10,[204,695,696],{"class":225},"  },\n",[204,698,700,703,705,708,711,715,718,721],{"class":206,"line":699},11,[204,701,702],{"class":217},"  handler",[204,704,192],{"class":225},[204,706,707],{"class":582}," async",[204,709,710],{"class":225}," ({",[204,712,714],{"class":713},"sHdIc"," code",[204,716,717],{"class":225}," })",[204,719,720],{"class":582}," =>",[204,722,654],{"class":225},[204,724,726,729,732,735,737,739,742,744,747,750,752,756,758,760,763,765],{"class":206,"line":725},12,[204,727,728],{"class":582},"    const",[204,730,731],{"class":221}," migrated",[204,733,734],{"class":225}," =",[204,736,714],{"class":221},[204,738,350],{"class":225},[204,740,741],{"class":217},"replace",[204,743,222],{"class":232},[204,745,746],{"class":225},"/",[204,748,749],{"class":241},"v3",[204,751,746],{"class":225},[204,753,755],{"class":754},"sbssI","g",[204,757,446],{"class":225},[204,759,238],{"class":225},[204,761,762],{"class":241},"v4",[204,764,245],{"class":225},[204,766,281],{"class":232},[204,768,770,773],{"class":206,"line":769},13,[204,771,772],{"class":210},"    return",[204,774,654],{"class":225},[204,776,778,781,783,786],{"class":206,"line":777},14,[204,779,780],{"class":232},"      content",[204,782,192],{"class":225},[204,784,785],{"class":232}," [",[204,787,226],{"class":225},[204,789,791,794,796,798,801,803],{"class":206,"line":790},15,[204,792,793],{"class":232},"        type",[204,795,192],{"class":225},[204,797,238],{"class":225},[204,799,800],{"class":241},"text",[204,802,245],{"class":225},[204,804,248],{"class":225},[204,806,808,811,813,815],{"class":206,"line":807},16,[204,809,810],{"class":232},"        text",[204,812,192],{"class":225},[204,814,731],{"class":221},[204,816,248],{"class":225},[204,818,820,823,826],{"class":206,"line":819},17,[204,821,822],{"class":225},"      }",[204,824,825],{"class":232},"]",[204,827,248],{"class":225},[204,829,831],{"class":206,"line":830},18,[204,832,833],{"class":225},"    }\n",[204,835,837],{"class":206,"line":836},19,[204,838,696],{"class":225},[204,840,842,844],{"class":206,"line":841},20,[204,843,278],{"class":225},[204,845,281],{"class":221},[204,847,849],{"class":206,"line":848},21,[204,850,469],{"emptyLinePlaceholder":468},[204,852,854,856,858,860,862],{"class":206,"line":853},22,[204,855,211],{"class":210},[204,857,214],{"class":210},[204,859,218],{"class":217},[204,861,222],{"class":221},[204,863,226],{"class":225},[204,865,867,869,871,873,876,878],{"class":206,"line":866},23,[204,868,377],{"class":232},[204,870,192],{"class":225},[204,872,238],{"class":225},[204,874,875],{"class":241},"migration",[204,877,245],{"class":225},[204,879,248],{"class":225},[204,881,883,885,887,889,892,894],{"class":206,"line":882},24,[204,884,233],{"class":232},[204,886,192],{"class":225},[204,888,238],{"class":225},[204,890,891],{"class":241},"0.1.0",[204,893,245],{"class":225},[204,895,248],{"class":225},[204,897,899,902,904,906,909,911],{"class":206,"line":898},25,[204,900,901],{"class":232},"  route",[204,903,192],{"class":225},[204,905,238],{"class":225},[204,907,908],{"class":241},"/mcp/migration",[204,910,245],{"class":225},[204,912,248],{"class":225},[204,914,916,918,920,923],{"class":206,"line":915},26,[204,917,491],{"class":232},[204,919,192],{"class":225},[204,921,922],{"class":221}," [migrationTool]",[204,924,248],{"class":225},[204,926,928,930,932,934,936,938],{"class":206,"line":927},27,[204,929,254],{"class":232},[204,931,192],{"class":225},[204,933,238],{"class":225},[204,935,746],{"class":241},[204,937,245],{"class":225},[204,939,248],{"class":225},[204,941,943,945],{"class":206,"line":942},28,[204,944,278],{"class":225},[204,946,281],{"class":221},[133,948,950],{"id":949},"handler-structure","Handler Structure",[138,952,953],{},"A handler definition consists of:",[955,956,957,1023],"code-group",{},[194,958,961],{"className":196,"code":959,"filename":960,"language":199,"meta":200,"style":200},"import { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'handler-name',  // Unique identifier\n})\n","Required Fields",[170,962,963,983,987,999,1017],{"__ignoreMap":200},[204,964,965,967,969,971,973,975,977,979,981],{"class":206,"line":207},[204,966,437],{"class":210},[204,968,440],{"class":225},[204,970,218],{"class":221},[204,972,452],{"class":225},[204,974,455],{"class":210},[204,976,238],{"class":225},[204,978,568],{"class":241},[204,980,245],{"class":225},[204,982,573],{"class":271},[204,984,985],{"class":206,"line":229},[204,986,469],{"emptyLinePlaceholder":468},[204,988,989,991,993,995,997],{"class":206,"line":251},[204,990,211],{"class":210},[204,992,214],{"class":210},[204,994,218],{"class":217},[204,996,222],{"class":221},[204,998,226],{"class":225},[204,1000,1001,1003,1005,1007,1010,1012,1014],{"class":206,"line":268},[204,1002,377],{"class":232},[204,1004,192],{"class":225},[204,1006,238],{"class":225},[204,1008,1009],{"class":241},"handler-name",[204,1011,245],{"class":225},[204,1013,446],{"class":225},[204,1015,1016],{"class":271},"  // Unique identifier\n",[204,1018,1019,1021],{"class":206,"line":275},[204,1020,278],{"class":225},[204,1022,281],{"class":221},[194,1024,1027],{"className":196,"code":1025,"filename":1026,"language":199,"meta":200,"style":200},"import { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'handler-name',\n  version: '1.0.0',              // Handler version\n  route: '/mcp/custom',          // Custom route\n  browserRedirect: '/',          // Browser redirect URL\n  middleware: async (event) => { ... }, // Request interception\n  tools: [ ... ],                 // Array of tools\n  resources: [ ... ],            // Array of resources\n  prompts: [ ... ],               // Array of prompts\n})\n","Optional Fields",[170,1028,1029,1049,1053,1065,1079,1097,1115,1132,1162,1182,1200,1218],{"__ignoreMap":200},[204,1030,1031,1033,1035,1037,1039,1041,1043,1045,1047],{"class":206,"line":207},[204,1032,437],{"class":210},[204,1034,440],{"class":225},[204,1036,218],{"class":221},[204,1038,452],{"class":225},[204,1040,455],{"class":210},[204,1042,238],{"class":225},[204,1044,568],{"class":241},[204,1046,245],{"class":225},[204,1048,573],{"class":271},[204,1050,1051],{"class":206,"line":229},[204,1052,469],{"emptyLinePlaceholder":468},[204,1054,1055,1057,1059,1061,1063],{"class":206,"line":251},[204,1056,211],{"class":210},[204,1058,214],{"class":210},[204,1060,218],{"class":217},[204,1062,222],{"class":221},[204,1064,226],{"class":225},[204,1066,1067,1069,1071,1073,1075,1077],{"class":206,"line":268},[204,1068,377],{"class":232},[204,1070,192],{"class":225},[204,1072,238],{"class":225},[204,1074,1009],{"class":241},[204,1076,245],{"class":225},[204,1078,248],{"class":225},[204,1080,1081,1083,1085,1087,1090,1092,1094],{"class":206,"line":275},[204,1082,233],{"class":232},[204,1084,192],{"class":225},[204,1086,238],{"class":225},[204,1088,1089],{"class":241},"1.0.0",[204,1091,245],{"class":225},[204,1093,446],{"class":225},[204,1095,1096],{"class":271},"              // Handler version\n",[204,1098,1099,1101,1103,1105,1108,1110,1112],{"class":206,"line":506},[204,1100,901],{"class":232},[204,1102,192],{"class":225},[204,1104,238],{"class":225},[204,1106,1107],{"class":241},"/mcp/custom",[204,1109,245],{"class":225},[204,1111,446],{"class":225},[204,1113,1114],{"class":271},"          // Custom route\n",[204,1116,1117,1119,1121,1123,1125,1127,1129],{"class":206,"line":629},[204,1118,254],{"class":232},[204,1120,192],{"class":225},[204,1122,238],{"class":225},[204,1124,746],{"class":241},[204,1126,245],{"class":225},[204,1128,446],{"class":225},[204,1130,1131],{"class":271},"          // Browser redirect URL\n",[204,1133,1134,1137,1139,1141,1144,1147,1149,1151,1153,1156,1159],{"class":206,"line":646},[204,1135,1136],{"class":217},"  middleware",[204,1138,192],{"class":225},[204,1140,707],{"class":582},[204,1142,1143],{"class":225}," (",[204,1145,1146],{"class":713},"event",[204,1148,328],{"class":225},[204,1150,720],{"class":582},[204,1152,440],{"class":225},[204,1154,1155],{"class":225}," ...",[204,1157,1158],{"class":225}," },",[204,1160,1161],{"class":271}," // Request interception\n",[204,1163,1164,1166,1168,1171,1174,1177,1179],{"class":206,"line":657},[204,1165,491],{"class":232},[204,1167,192],{"class":225},[204,1169,1170],{"class":221}," [ ",[204,1172,1173],{"class":225},"...",[204,1175,1176],{"class":221}," ]",[204,1178,446],{"class":225},[204,1180,1181],{"class":271},"                 // Array of tools\n",[204,1183,1184,1187,1189,1191,1193,1195,1197],{"class":206,"line":693},[204,1185,1186],{"class":232},"  resources",[204,1188,192],{"class":225},[204,1190,1170],{"class":221},[204,1192,1173],{"class":225},[204,1194,1176],{"class":221},[204,1196,446],{"class":225},[204,1198,1199],{"class":271},"            // Array of resources\n",[204,1201,1202,1205,1207,1209,1211,1213,1215],{"class":206,"line":699},[204,1203,1204],{"class":232},"  prompts",[204,1206,192],{"class":225},[204,1208,1170],{"class":221},[204,1210,1173],{"class":225},[204,1212,1176],{"class":221},[204,1214,446],{"class":225},[204,1216,1217],{"class":271},"               // Array of prompts\n",[204,1219,1220,1222],{"class":206,"line":725},[204,1221,278],{"class":225},[204,1223,281],{"class":221},[133,1225,1227],{"id":1226},"handler-options","Handler Options",[179,1229,1231,1233],{"id":1230},"name-required",[170,1232,303],{}," (required)",[138,1235,1236,1237,1239,1240,350],{},"Unique identifier for the handler. The ",[170,1238,303],{}," determines where the handler will be mounted. By default, the handler will be accessible at ",[170,1241,1242],{},"/mcp/:name",[194,1244,1246],{"className":196,"code":1245,"language":199,"meta":200,"style":200},"import { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'migration', // Handler mounted at /mcp/migration\n})\n",[170,1247,1248,1268,1272,1284,1301],{"__ignoreMap":200},[204,1249,1250,1252,1254,1256,1258,1260,1262,1264,1266],{"class":206,"line":207},[204,1251,437],{"class":210},[204,1253,440],{"class":225},[204,1255,218],{"class":221},[204,1257,452],{"class":225},[204,1259,455],{"class":210},[204,1261,238],{"class":225},[204,1263,568],{"class":241},[204,1265,245],{"class":225},[204,1267,573],{"class":271},[204,1269,1270],{"class":206,"line":229},[204,1271,469],{"emptyLinePlaceholder":468},[204,1273,1274,1276,1278,1280,1282],{"class":206,"line":251},[204,1275,211],{"class":210},[204,1277,214],{"class":210},[204,1279,218],{"class":217},[204,1281,222],{"class":221},[204,1283,226],{"class":225},[204,1285,1286,1288,1290,1292,1294,1296,1298],{"class":206,"line":268},[204,1287,377],{"class":232},[204,1289,192],{"class":225},[204,1291,238],{"class":225},[204,1293,875],{"class":241},[204,1295,245],{"class":225},[204,1297,446],{"class":225},[204,1299,1300],{"class":271}," // Handler mounted at /mcp/migration\n",[204,1302,1303,1305],{"class":206,"line":275},[204,1304,278],{"class":225},[204,1306,281],{"class":221},[179,1308,1310,1312],{"id":1309},"version-optional",[170,1311,291],{}," (optional)",[138,1314,1315],{},"Version of the handler. Defaults to the module's configured version.",[194,1317,1319],{"className":196,"code":1318,"language":199,"meta":200,"style":200},"import { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'migration',\n  version: '2.0.0',\n})\n",[170,1320,1321,1341,1345,1357,1371,1385],{"__ignoreMap":200},[204,1322,1323,1325,1327,1329,1331,1333,1335,1337,1339],{"class":206,"line":207},[204,1324,437],{"class":210},[204,1326,440],{"class":225},[204,1328,218],{"class":221},[204,1330,452],{"class":225},[204,1332,455],{"class":210},[204,1334,238],{"class":225},[204,1336,568],{"class":241},[204,1338,245],{"class":225},[204,1340,573],{"class":271},[204,1342,1343],{"class":206,"line":229},[204,1344,469],{"emptyLinePlaceholder":468},[204,1346,1347,1349,1351,1353,1355],{"class":206,"line":251},[204,1348,211],{"class":210},[204,1350,214],{"class":210},[204,1352,218],{"class":217},[204,1354,222],{"class":221},[204,1356,226],{"class":225},[204,1358,1359,1361,1363,1365,1367,1369],{"class":206,"line":268},[204,1360,377],{"class":232},[204,1362,192],{"class":225},[204,1364,238],{"class":225},[204,1366,875],{"class":241},[204,1368,245],{"class":225},[204,1370,248],{"class":225},[204,1372,1373,1375,1377,1379,1381,1383],{"class":206,"line":275},[204,1374,233],{"class":232},[204,1376,192],{"class":225},[204,1378,238],{"class":225},[204,1380,242],{"class":241},[204,1382,245],{"class":225},[204,1384,248],{"class":225},[204,1386,1387,1389],{"class":206,"line":506},[204,1388,278],{"class":225},[204,1390,281],{"class":221},[179,1392,1394,1312],{"id":1393},"route-optional",[170,1395,337],{},[138,1397,1398,1399,350],{},"Custom route for the handler. Defaults to ",[170,1400,1242],{},[330,1402,1403,1404,1407,1408,1410,1411,1413,1414,1416],{"color":332,"icon":333},"This option is only used for ",[142,1405,1406],{},"custom handlers",". For the default handler override (",[170,1409,188],{},"), use ",[170,1412,345],{}," in ",[170,1415,349],{}," instead.",[194,1418,1420],{"className":196,"code":1419,"language":199,"meta":200,"style":200},"import { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'migration',\n  route: '/api/mcp/migration', // Custom route\n})\n",[170,1421,1422,1442,1446,1458,1472,1490],{"__ignoreMap":200},[204,1423,1424,1426,1428,1430,1432,1434,1436,1438,1440],{"class":206,"line":207},[204,1425,437],{"class":210},[204,1427,440],{"class":225},[204,1429,218],{"class":221},[204,1431,452],{"class":225},[204,1433,455],{"class":210},[204,1435,238],{"class":225},[204,1437,568],{"class":241},[204,1439,245],{"class":225},[204,1441,573],{"class":271},[204,1443,1444],{"class":206,"line":229},[204,1445,469],{"emptyLinePlaceholder":468},[204,1447,1448,1450,1452,1454,1456],{"class":206,"line":251},[204,1449,211],{"class":210},[204,1451,214],{"class":210},[204,1453,218],{"class":217},[204,1455,222],{"class":221},[204,1457,226],{"class":225},[204,1459,1460,1462,1464,1466,1468,1470],{"class":206,"line":268},[204,1461,377],{"class":232},[204,1463,192],{"class":225},[204,1465,238],{"class":225},[204,1467,875],{"class":241},[204,1469,245],{"class":225},[204,1471,248],{"class":225},[204,1473,1474,1476,1478,1480,1483,1485,1487],{"class":206,"line":275},[204,1475,901],{"class":232},[204,1477,192],{"class":225},[204,1479,238],{"class":225},[204,1481,1482],{"class":241},"/api/mcp/migration",[204,1484,245],{"class":225},[204,1486,446],{"class":225},[204,1488,1489],{"class":271}," // Custom route\n",[204,1491,1492,1494],{"class":206,"line":506},[204,1493,278],{"class":225},[204,1495,281],{"class":221},[179,1497,1499,1312],{"id":1498},"browserredirect-optional",[170,1500,297],{},[138,1502,1503,1504,350],{},"URL to redirect browsers when they access the handler endpoint. Defaults to the module's configured ",[170,1505,297],{},[194,1507,1509],{"className":196,"code":1508,"language":199,"meta":200,"style":200},"import { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'migration',\n  browserRedirect: '/docs/migration',\n})\n",[170,1510,1511,1531,1535,1547,1561,1576],{"__ignoreMap":200},[204,1512,1513,1515,1517,1519,1521,1523,1525,1527,1529],{"class":206,"line":207},[204,1514,437],{"class":210},[204,1516,440],{"class":225},[204,1518,218],{"class":221},[204,1520,452],{"class":225},[204,1522,455],{"class":210},[204,1524,238],{"class":225},[204,1526,568],{"class":241},[204,1528,245],{"class":225},[204,1530,573],{"class":271},[204,1532,1533],{"class":206,"line":229},[204,1534,469],{"emptyLinePlaceholder":468},[204,1536,1537,1539,1541,1543,1545],{"class":206,"line":251},[204,1538,211],{"class":210},[204,1540,214],{"class":210},[204,1542,218],{"class":217},[204,1544,222],{"class":221},[204,1546,226],{"class":225},[204,1548,1549,1551,1553,1555,1557,1559],{"class":206,"line":268},[204,1550,377],{"class":232},[204,1552,192],{"class":225},[204,1554,238],{"class":225},[204,1556,875],{"class":241},[204,1558,245],{"class":225},[204,1560,248],{"class":225},[204,1562,1563,1565,1567,1569,1572,1574],{"class":206,"line":275},[204,1564,254],{"class":232},[204,1566,192],{"class":225},[204,1568,238],{"class":225},[204,1570,1571],{"class":241},"/docs/migration",[204,1573,245],{"class":225},[204,1575,248],{"class":225},[204,1577,1578,1580],{"class":206,"line":506},[204,1579,278],{"class":225},[204,1581,281],{"class":221},[179,1583,1585,1312],{"id":1584},"middleware-optional",[170,1586,322],{},[138,1588,1589],{},"Function to intercept requests before/after they are processed. Useful for authentication, logging, and setting context.",[194,1591,1594],{"className":196,"code":1592,"filename":1593,"language":199,"meta":200,"style":200},"import { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'custom',\n  middleware: async (event) => {\n    event.context.userId = 'user-123'\n  },\n})\n","server/mcp/custom.ts",[170,1595,1596,1616,1620,1632,1647,1665,1689,1693],{"__ignoreMap":200},[204,1597,1598,1600,1602,1604,1606,1608,1610,1612,1614],{"class":206,"line":207},[204,1599,437],{"class":210},[204,1601,440],{"class":225},[204,1603,218],{"class":221},[204,1605,452],{"class":225},[204,1607,455],{"class":210},[204,1609,238],{"class":225},[204,1611,568],{"class":241},[204,1613,245],{"class":225},[204,1615,573],{"class":271},[204,1617,1618],{"class":206,"line":229},[204,1619,469],{"emptyLinePlaceholder":468},[204,1621,1622,1624,1626,1628,1630],{"class":206,"line":251},[204,1623,211],{"class":210},[204,1625,214],{"class":210},[204,1627,218],{"class":217},[204,1629,222],{"class":221},[204,1631,226],{"class":225},[204,1633,1634,1636,1638,1640,1643,1645],{"class":206,"line":268},[204,1635,377],{"class":232},[204,1637,192],{"class":225},[204,1639,238],{"class":225},[204,1641,1642],{"class":241},"custom",[204,1644,245],{"class":225},[204,1646,248],{"class":225},[204,1648,1649,1651,1653,1655,1657,1659,1661,1663],{"class":206,"line":275},[204,1650,1136],{"class":217},[204,1652,192],{"class":225},[204,1654,707],{"class":582},[204,1656,1143],{"class":225},[204,1658,1146],{"class":713},[204,1660,328],{"class":225},[204,1662,720],{"class":582},[204,1664,654],{"class":225},[204,1666,1667,1670,1672,1675,1677,1680,1682,1684,1687],{"class":206,"line":506},[204,1668,1669],{"class":221},"    event",[204,1671,350],{"class":225},[204,1673,1674],{"class":221},"context",[204,1676,350],{"class":225},[204,1678,1679],{"class":221},"userId",[204,1681,734],{"class":225},[204,1683,238],{"class":225},[204,1685,1686],{"class":241},"user-123",[204,1688,463],{"class":225},[204,1690,1691],{"class":206,"line":629},[204,1692,696],{"class":225},[204,1694,1695,1697],{"class":206,"line":646},[204,1696,278],{"class":225},[204,1698,281],{"class":221},[330,1700,1702,1703,1706],{"color":1701,"icon":13},"primary","See the ",[325,1704,1705],{"href":80},"Middleware guide"," for detailed documentation and examples.",[179,1708,1710,1312],{"id":1709},"tools-optional",[170,1711,309],{},[138,1713,1714],{},"Array of tool definitions specific to this handler.",[194,1716,1718],{"className":196,"code":1717,"language":199,"meta":200,"style":200},"import { defineMcpTool, defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nconst tool1 = defineMcpTool({ ... })\nconst tool2 = defineMcpTool({ ... })\n\nexport default defineMcpHandler({\n  name: 'custom',\n  tools: [tool1, tool2],\n})\n",[170,1719,1720,1744,1748,1770,1791,1795,1807,1821,1837],{"__ignoreMap":200},[204,1721,1722,1724,1726,1728,1730,1732,1734,1736,1738,1740,1742],{"class":206,"line":207},[204,1723,437],{"class":210},[204,1725,440],{"class":225},[204,1727,555],{"class":221},[204,1729,446],{"class":225},[204,1731,218],{"class":221},[204,1733,452],{"class":225},[204,1735,455],{"class":210},[204,1737,238],{"class":225},[204,1739,568],{"class":241},[204,1741,245],{"class":225},[204,1743,573],{"class":271},[204,1745,1746],{"class":206,"line":229},[204,1747,469],{"emptyLinePlaceholder":468},[204,1749,1750,1752,1755,1757,1759,1761,1764,1766,1768],{"class":206,"line":251},[204,1751,583],{"class":582},[204,1753,1754],{"class":221}," tool1 ",[204,1756,589],{"class":225},[204,1758,555],{"class":217},[204,1760,222],{"class":221},[204,1762,1763],{"class":225},"{",[204,1765,1155],{"class":225},[204,1767,452],{"class":225},[204,1769,281],{"class":221},[204,1771,1772,1774,1777,1779,1781,1783,1785,1787,1789],{"class":206,"line":268},[204,1773,583],{"class":582},[204,1775,1776],{"class":221}," tool2 ",[204,1778,589],{"class":225},[204,1780,555],{"class":217},[204,1782,222],{"class":221},[204,1784,1763],{"class":225},[204,1786,1155],{"class":225},[204,1788,452],{"class":225},[204,1790,281],{"class":221},[204,1792,1793],{"class":206,"line":275},[204,1794,469],{"emptyLinePlaceholder":468},[204,1796,1797,1799,1801,1803,1805],{"class":206,"line":506},[204,1798,211],{"class":210},[204,1800,214],{"class":210},[204,1802,218],{"class":217},[204,1804,222],{"class":221},[204,1806,226],{"class":225},[204,1808,1809,1811,1813,1815,1817,1819],{"class":206,"line":629},[204,1810,377],{"class":232},[204,1812,192],{"class":225},[204,1814,238],{"class":225},[204,1816,1642],{"class":241},[204,1818,245],{"class":225},[204,1820,248],{"class":225},[204,1822,1823,1825,1827,1830,1832,1835],{"class":206,"line":646},[204,1824,491],{"class":232},[204,1826,192],{"class":225},[204,1828,1829],{"class":221}," [tool1",[204,1831,446],{"class":225},[204,1833,1834],{"class":221}," tool2]",[204,1836,248],{"class":225},[204,1838,1839,1841],{"class":206,"line":657},[204,1840,278],{"class":225},[204,1842,281],{"class":221},[179,1844,1846,1312],{"id":1845},"resources-optional",[170,1847,313],{},[138,1849,1850],{},"Array of resource definitions specific to this handler.",[194,1852,1854],{"className":196,"code":1853,"language":199,"meta":200,"style":200},"import { defineMcpResource, defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nconst resource1 = defineMcpResource({ ... })\nconst resource2 = defineMcpResource({ ... })\n\nexport default defineMcpHandler({\n  name: 'custom',\n  resources: [resource1, resource2],\n})\n",[170,1855,1856,1881,1885,1906,1927,1931,1943,1957,1973],{"__ignoreMap":200},[204,1857,1858,1860,1862,1865,1867,1869,1871,1873,1875,1877,1879],{"class":206,"line":207},[204,1859,437],{"class":210},[204,1861,440],{"class":225},[204,1863,1864],{"class":221}," defineMcpResource",[204,1866,446],{"class":225},[204,1868,218],{"class":221},[204,1870,452],{"class":225},[204,1872,455],{"class":210},[204,1874,238],{"class":225},[204,1876,568],{"class":241},[204,1878,245],{"class":225},[204,1880,573],{"class":271},[204,1882,1883],{"class":206,"line":229},[204,1884,469],{"emptyLinePlaceholder":468},[204,1886,1887,1889,1892,1894,1896,1898,1900,1902,1904],{"class":206,"line":251},[204,1888,583],{"class":582},[204,1890,1891],{"class":221}," resource1 ",[204,1893,589],{"class":225},[204,1895,1864],{"class":217},[204,1897,222],{"class":221},[204,1899,1763],{"class":225},[204,1901,1155],{"class":225},[204,1903,452],{"class":225},[204,1905,281],{"class":221},[204,1907,1908,1910,1913,1915,1917,1919,1921,1923,1925],{"class":206,"line":268},[204,1909,583],{"class":582},[204,1911,1912],{"class":221}," resource2 ",[204,1914,589],{"class":225},[204,1916,1864],{"class":217},[204,1918,222],{"class":221},[204,1920,1763],{"class":225},[204,1922,1155],{"class":225},[204,1924,452],{"class":225},[204,1926,281],{"class":221},[204,1928,1929],{"class":206,"line":275},[204,1930,469],{"emptyLinePlaceholder":468},[204,1932,1933,1935,1937,1939,1941],{"class":206,"line":506},[204,1934,211],{"class":210},[204,1936,214],{"class":210},[204,1938,218],{"class":217},[204,1940,222],{"class":221},[204,1942,226],{"class":225},[204,1944,1945,1947,1949,1951,1953,1955],{"class":206,"line":629},[204,1946,377],{"class":232},[204,1948,192],{"class":225},[204,1950,238],{"class":225},[204,1952,1642],{"class":241},[204,1954,245],{"class":225},[204,1956,248],{"class":225},[204,1958,1959,1961,1963,1966,1968,1971],{"class":206,"line":646},[204,1960,1186],{"class":232},[204,1962,192],{"class":225},[204,1964,1965],{"class":221}," [resource1",[204,1967,446],{"class":225},[204,1969,1970],{"class":221}," resource2]",[204,1972,248],{"class":225},[204,1974,1975,1977],{"class":206,"line":657},[204,1976,278],{"class":225},[204,1978,281],{"class":221},[179,1980,1982,1312],{"id":1981},"prompts-optional",[170,1983,316],{},[138,1985,1986],{},"Array of prompt definitions specific to this handler.",[194,1988,1990],{"className":196,"code":1989,"language":199,"meta":200,"style":200},"import { defineMcpPrompt, defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nconst prompt1 = defineMcpPrompt({ ... })\nconst prompt2 = defineMcpPrompt({ ... })\n\nexport default defineMcpHandler({\n  name: 'custom',\n  prompts: [prompt1, prompt2],\n})\n",[170,1991,1992,2017,2021,2042,2063,2067,2079,2093,2109],{"__ignoreMap":200},[204,1993,1994,1996,1998,2001,2003,2005,2007,2009,2011,2013,2015],{"class":206,"line":207},[204,1995,437],{"class":210},[204,1997,440],{"class":225},[204,1999,2000],{"class":221}," defineMcpPrompt",[204,2002,446],{"class":225},[204,2004,218],{"class":221},[204,2006,452],{"class":225},[204,2008,455],{"class":210},[204,2010,238],{"class":225},[204,2012,568],{"class":241},[204,2014,245],{"class":225},[204,2016,573],{"class":271},[204,2018,2019],{"class":206,"line":229},[204,2020,469],{"emptyLinePlaceholder":468},[204,2022,2023,2025,2028,2030,2032,2034,2036,2038,2040],{"class":206,"line":251},[204,2024,583],{"class":582},[204,2026,2027],{"class":221}," prompt1 ",[204,2029,589],{"class":225},[204,2031,2000],{"class":217},[204,2033,222],{"class":221},[204,2035,1763],{"class":225},[204,2037,1155],{"class":225},[204,2039,452],{"class":225},[204,2041,281],{"class":221},[204,2043,2044,2046,2049,2051,2053,2055,2057,2059,2061],{"class":206,"line":268},[204,2045,583],{"class":582},[204,2047,2048],{"class":221}," prompt2 ",[204,2050,589],{"class":225},[204,2052,2000],{"class":217},[204,2054,222],{"class":221},[204,2056,1763],{"class":225},[204,2058,1155],{"class":225},[204,2060,452],{"class":225},[204,2062,281],{"class":221},[204,2064,2065],{"class":206,"line":275},[204,2066,469],{"emptyLinePlaceholder":468},[204,2068,2069,2071,2073,2075,2077],{"class":206,"line":506},[204,2070,211],{"class":210},[204,2072,214],{"class":210},[204,2074,218],{"class":217},[204,2076,222],{"class":221},[204,2078,226],{"class":225},[204,2080,2081,2083,2085,2087,2089,2091],{"class":206,"line":629},[204,2082,377],{"class":232},[204,2084,192],{"class":225},[204,2086,238],{"class":225},[204,2088,1642],{"class":241},[204,2090,245],{"class":225},[204,2092,248],{"class":225},[204,2094,2095,2097,2099,2102,2104,2107],{"class":206,"line":646},[204,2096,1204],{"class":232},[204,2098,192],{"class":225},[204,2100,2101],{"class":221}," [prompt1",[204,2103,446],{"class":225},[204,2105,2106],{"class":221}," prompt2]",[204,2108,248],{"class":225},[204,2110,2111,2113],{"class":206,"line":657},[204,2112,278],{"class":225},[204,2114,281],{"class":221},[133,2116,2118],{"id":2117},"complete-example","Complete Example",[138,2120,2121],{},"Here's a complete example of a custom handler:",[194,2123,2126],{"className":196,"code":2124,"filename":2125,"language":199,"meta":200,"style":200},"import { z } from 'zod'\nimport { defineMcpTool, defineMcpResource, defineMcpPrompt, defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\n// Define tools for this handler\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 {\n      content: [{\n        type: 'text',\n        text: JSON.stringify(user),\n      }],\n    }\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 {\n      content: [{\n        type: 'text',\n        text: `User created: ${user.id}`,\n      }],\n    }\n  },\n})\n\n// Define resources for this handler\nconst userResource = defineMcpResource({\n  name: 'user',\n  uri: 'api://users/{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/json',\n        text: JSON.stringify(user),\n      }],\n    }\n  },\n})\n\n// 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// Export the handler\nexport default defineMcpHandler({\n  name: 'api',\n  version: '1.0.0',\n  route: '/mcp/api',\n  tools: [getUserTool, createUserTool],\n  resources: [userResource],\n  prompts: [userPrompt],\n  browserRedirect: '/docs/api',\n})\n","server/mcp/api-handler.ts",[170,2127,2128,2146,2178,2182,2187,2202,2217,2232,2240,2257,2261,2280,2311,2317,2327,2341,2364,2372,2376,2380,2386,2390,2405,2420,2435,2443,2460,2484,2488,2513,2549,2556,2567,2582,2610,2619,2624,2629,2636,2641,2647,2663,2678,2695,2720,2743,2770,2777,2789,2809,2826,2847,2856,2861,2866,2873,2878,2884,2900,2916,2932,2948,2955,2967,2983,2993,3009,3026,3032,3041,3046,3051,3058,3063,3069,3082,3098,3113,3129,3146,3158,3170,3186],{"__ignoreMap":200},[204,2129,2130,2132,2134,2136,2138,2140,2142,2144],{"class":206,"line":207},[204,2131,437],{"class":210},[204,2133,440],{"class":225},[204,2135,535],{"class":221},[204,2137,452],{"class":225},[204,2139,455],{"class":210},[204,2141,238],{"class":225},[204,2143,544],{"class":241},[204,2145,463],{"class":225},[204,2147,2148,2150,2152,2154,2156,2158,2160,2162,2164,2166,2168,2170,2172,2174,2176],{"class":206,"line":229},[204,2149,437],{"class":210},[204,2151,440],{"class":225},[204,2153,555],{"class":221},[204,2155,446],{"class":225},[204,2157,1864],{"class":221},[204,2159,446],{"class":225},[204,2161,2000],{"class":221},[204,2163,446],{"class":225},[204,2165,218],{"class":221},[204,2167,452],{"class":225},[204,2169,455],{"class":210},[204,2171,238],{"class":225},[204,2173,568],{"class":241},[204,2175,245],{"class":225},[204,2177,573],{"class":271},[204,2179,2180],{"class":206,"line":251},[204,2181,469],{"emptyLinePlaceholder":468},[204,2183,2184],{"class":206,"line":268},[204,2185,2186],{"class":271},"// Define tools for this handler\n",[204,2188,2189,2191,2194,2196,2198,2200],{"class":206,"line":275},[204,2190,583],{"class":582},[204,2192,2193],{"class":221}," getUserTool ",[204,2195,589],{"class":225},[204,2197,555],{"class":217},[204,2199,222],{"class":221},[204,2201,226],{"class":225},[204,2203,2204,2206,2208,2210,2213,2215],{"class":206,"line":506},[204,2205,377],{"class":232},[204,2207,192],{"class":225},[204,2209,238],{"class":225},[204,2211,2212],{"class":241},"get-user",[204,2214,245],{"class":225},[204,2216,248],{"class":225},[204,2218,2219,2221,2223,2225,2228,2230],{"class":206,"line":629},[204,2220,632],{"class":232},[204,2222,192],{"class":225},[204,2224,238],{"class":225},[204,2226,2227],{"class":241},"Get user information",[204,2229,245],{"class":225},[204,2231,248],{"class":225},[204,2233,2234,2236,2238],{"class":206,"line":646},[204,2235,649],{"class":232},[204,2237,192],{"class":225},[204,2239,654],{"class":225},[204,2241,2242,2245,2247,2249,2251,2253,2255],{"class":206,"line":657},[204,2243,2244],{"class":232},"    userId",[204,2246,192],{"class":225},[204,2248,535],{"class":221},[204,2250,350],{"class":225},[204,2252,669],{"class":217},[204,2254,672],{"class":221},[204,2256,248],{"class":225},[204,2258,2259],{"class":206,"line":693},[204,2260,696],{"class":225},[204,2262,2263,2265,2267,2269,2271,2274,2276,2278],{"class":206,"line":699},[204,2264,702],{"class":217},[204,2266,192],{"class":225},[204,2268,707],{"class":582},[204,2270,710],{"class":225},[204,2272,2273],{"class":713}," userId",[204,2275,717],{"class":225},[204,2277,720],{"class":582},[204,2279,654],{"class":225},[204,2281,2282,2284,2287,2289,2292,2295,2297,2300,2302,2305,2307,2309],{"class":206,"line":725},[204,2283,728],{"class":582},[204,2285,2286],{"class":221}," user",[204,2288,734],{"class":225},[204,2290,2291],{"class":210}," await",[204,2293,2294],{"class":221}," db",[204,2296,350],{"class":225},[204,2298,2299],{"class":221},"users",[204,2301,350],{"class":225},[204,2303,2304],{"class":217},"find",[204,2306,222],{"class":232},[204,2308,1679],{"class":221},[204,2310,281],{"class":232},[204,2312,2313,2315],{"class":206,"line":769},[204,2314,772],{"class":210},[204,2316,654],{"class":225},[204,2318,2319,2321,2323,2325],{"class":206,"line":777},[204,2320,780],{"class":232},[204,2322,192],{"class":225},[204,2324,785],{"class":232},[204,2326,226],{"class":225},[204,2328,2329,2331,2333,2335,2337,2339],{"class":206,"line":790},[204,2330,793],{"class":232},[204,2332,192],{"class":225},[204,2334,238],{"class":225},[204,2336,800],{"class":241},[204,2338,245],{"class":225},[204,2340,248],{"class":225},[204,2342,2343,2345,2347,2350,2352,2355,2357,2360,2362],{"class":206,"line":807},[204,2344,810],{"class":232},[204,2346,192],{"class":225},[204,2348,2349],{"class":221}," JSON",[204,2351,350],{"class":225},[204,2353,2354],{"class":217},"stringify",[204,2356,222],{"class":232},[204,2358,2359],{"class":221},"user",[204,2361,328],{"class":232},[204,2363,248],{"class":225},[204,2365,2366,2368,2370],{"class":206,"line":819},[204,2367,822],{"class":225},[204,2369,825],{"class":232},[204,2371,248],{"class":225},[204,2373,2374],{"class":206,"line":830},[204,2375,833],{"class":225},[204,2377,2378],{"class":206,"line":836},[204,2379,696],{"class":225},[204,2381,2382,2384],{"class":206,"line":841},[204,2383,278],{"class":225},[204,2385,281],{"class":221},[204,2387,2388],{"class":206,"line":848},[204,2389,469],{"emptyLinePlaceholder":468},[204,2391,2392,2394,2397,2399,2401,2403],{"class":206,"line":853},[204,2393,583],{"class":582},[204,2395,2396],{"class":221}," createUserTool ",[204,2398,589],{"class":225},[204,2400,555],{"class":217},[204,2402,222],{"class":221},[204,2404,226],{"class":225},[204,2406,2407,2409,2411,2413,2416,2418],{"class":206,"line":866},[204,2408,377],{"class":232},[204,2410,192],{"class":225},[204,2412,238],{"class":225},[204,2414,2415],{"class":241},"create-user",[204,2417,245],{"class":225},[204,2419,248],{"class":225},[204,2421,2422,2424,2426,2428,2431,2433],{"class":206,"line":882},[204,2423,632],{"class":232},[204,2425,192],{"class":225},[204,2427,238],{"class":225},[204,2429,2430],{"class":241},"Create a new user",[204,2432,245],{"class":225},[204,2434,248],{"class":225},[204,2436,2437,2439,2441],{"class":206,"line":898},[204,2438,649],{"class":232},[204,2440,192],{"class":225},[204,2442,654],{"class":225},[204,2444,2445,2448,2450,2452,2454,2456,2458],{"class":206,"line":915},[204,2446,2447],{"class":232},"    name",[204,2449,192],{"class":225},[204,2451,535],{"class":221},[204,2453,350],{"class":225},[204,2455,669],{"class":217},[204,2457,672],{"class":221},[204,2459,248],{"class":225},[204,2461,2462,2465,2467,2469,2471,2473,2475,2477,2480,2482],{"class":206,"line":927},[204,2463,2464],{"class":232},"    email",[204,2466,192],{"class":225},[204,2468,535],{"class":221},[204,2470,350],{"class":225},[204,2472,669],{"class":217},[204,2474,672],{"class":221},[204,2476,350],{"class":225},[204,2478,2479],{"class":217},"email",[204,2481,672],{"class":221},[204,2483,248],{"class":225},[204,2485,2486],{"class":206,"line":942},[204,2487,696],{"class":225},[204,2489,2491,2493,2495,2497,2499,2502,2504,2507,2509,2511],{"class":206,"line":2490},29,[204,2492,702],{"class":217},[204,2494,192],{"class":225},[204,2496,707],{"class":582},[204,2498,710],{"class":225},[204,2500,2501],{"class":713}," name",[204,2503,446],{"class":225},[204,2505,2506],{"class":713}," email",[204,2508,717],{"class":225},[204,2510,720],{"class":582},[204,2512,654],{"class":225},[204,2514,2516,2518,2520,2522,2524,2526,2528,2530,2532,2535,2537,2539,2541,2543,2545,2547],{"class":206,"line":2515},30,[204,2517,728],{"class":582},[204,2519,2286],{"class":221},[204,2521,734],{"class":225},[204,2523,2291],{"class":210},[204,2525,2294],{"class":221},[204,2527,350],{"class":225},[204,2529,2299],{"class":221},[204,2531,350],{"class":225},[204,2533,2534],{"class":217},"create",[204,2536,222],{"class":232},[204,2538,1763],{"class":225},[204,2540,2501],{"class":221},[204,2542,446],{"class":225},[204,2544,2506],{"class":221},[204,2546,452],{"class":225},[204,2548,281],{"class":232},[204,2550,2552,2554],{"class":206,"line":2551},31,[204,2553,772],{"class":210},[204,2555,654],{"class":225},[204,2557,2559,2561,2563,2565],{"class":206,"line":2558},32,[204,2560,780],{"class":232},[204,2562,192],{"class":225},[204,2564,785],{"class":232},[204,2566,226],{"class":225},[204,2568,2570,2572,2574,2576,2578,2580],{"class":206,"line":2569},33,[204,2571,793],{"class":232},[204,2573,192],{"class":225},[204,2575,238],{"class":225},[204,2577,800],{"class":241},[204,2579,245],{"class":225},[204,2581,248],{"class":225},[204,2583,2585,2587,2589,2592,2595,2598,2600,2602,2605,2608],{"class":206,"line":2584},34,[204,2586,810],{"class":232},[204,2588,192],{"class":225},[204,2590,2591],{"class":225}," `",[204,2593,2594],{"class":241},"User created: ",[204,2596,2597],{"class":225},"${",[204,2599,2359],{"class":221},[204,2601,350],{"class":225},[204,2603,2604],{"class":221},"id",[204,2606,2607],{"class":225},"}`",[204,2609,248],{"class":225},[204,2611,2613,2615,2617],{"class":206,"line":2612},35,[204,2614,822],{"class":225},[204,2616,825],{"class":232},[204,2618,248],{"class":225},[204,2620,2622],{"class":206,"line":2621},36,[204,2623,833],{"class":225},[204,2625,2627],{"class":206,"line":2626},37,[204,2628,696],{"class":225},[204,2630,2632,2634],{"class":206,"line":2631},38,[204,2633,278],{"class":225},[204,2635,281],{"class":221},[204,2637,2639],{"class":206,"line":2638},39,[204,2640,469],{"emptyLinePlaceholder":468},[204,2642,2644],{"class":206,"line":2643},40,[204,2645,2646],{"class":271},"// Define resources for this handler\n",[204,2648,2650,2652,2655,2657,2659,2661],{"class":206,"line":2649},41,[204,2651,583],{"class":582},[204,2653,2654],{"class":221}," userResource ",[204,2656,589],{"class":225},[204,2658,1864],{"class":217},[204,2660,222],{"class":221},[204,2662,226],{"class":225},[204,2664,2666,2668,2670,2672,2674,2676],{"class":206,"line":2665},42,[204,2667,377],{"class":232},[204,2669,192],{"class":225},[204,2671,238],{"class":225},[204,2673,2359],{"class":241},[204,2675,245],{"class":225},[204,2677,248],{"class":225},[204,2679,2681,2684,2686,2688,2691,2693],{"class":206,"line":2680},43,[204,2682,2683],{"class":232},"  uri",[204,2685,192],{"class":225},[204,2687,238],{"class":225},[204,2689,2690],{"class":241},"api://users/{id}",[204,2692,245],{"class":225},[204,2694,248],{"class":225},[204,2696,2698,2700,2702,2704,2706,2709,2711,2714,2716,2718],{"class":206,"line":2697},44,[204,2699,702],{"class":217},[204,2701,192],{"class":225},[204,2703,707],{"class":582},[204,2705,1143],{"class":225},[204,2707,2708],{"class":713},"uri",[204,2710,446],{"class":225},[204,2712,2713],{"class":713}," variables",[204,2715,328],{"class":225},[204,2717,720],{"class":582},[204,2719,654],{"class":225},[204,2721,2723,2725,2728,2730,2732,2734,2736,2739],{"class":206,"line":2722},45,[204,2724,728],{"class":582},[204,2726,2727],{"class":221}," id",[204,2729,734],{"class":225},[204,2731,2713],{"class":221},[204,2733,350],{"class":225},[204,2735,2604],{"class":221},[204,2737,2738],{"class":210}," as",[204,2740,2742],{"class":2741},"sBMFI"," string\n",[204,2744,2746,2748,2750,2752,2754,2756,2758,2760,2762,2764,2766,2768],{"class":206,"line":2745},46,[204,2747,728],{"class":582},[204,2749,2286],{"class":221},[204,2751,734],{"class":225},[204,2753,2291],{"class":210},[204,2755,2294],{"class":221},[204,2757,350],{"class":225},[204,2759,2299],{"class":221},[204,2761,350],{"class":225},[204,2763,2304],{"class":217},[204,2765,222],{"class":232},[204,2767,2604],{"class":221},[204,2769,281],{"class":232},[204,2771,2773,2775],{"class":206,"line":2772},47,[204,2774,772],{"class":210},[204,2776,654],{"class":225},[204,2778,2780,2783,2785,2787],{"class":206,"line":2779},48,[204,2781,2782],{"class":232},"      contents",[204,2784,192],{"class":225},[204,2786,785],{"class":232},[204,2788,226],{"class":225},[204,2790,2792,2795,2797,2800,2802,2805,2807],{"class":206,"line":2791},49,[204,2793,2794],{"class":232},"        uri",[204,2796,192],{"class":225},[204,2798,2799],{"class":221}," uri",[204,2801,350],{"class":225},[204,2803,2804],{"class":217},"toString",[204,2806,672],{"class":232},[204,2808,248],{"class":225},[204,2810,2812,2815,2817,2819,2822,2824],{"class":206,"line":2811},50,[204,2813,2814],{"class":232},"        mimeType",[204,2816,192],{"class":225},[204,2818,238],{"class":225},[204,2820,2821],{"class":241},"application/json",[204,2823,245],{"class":225},[204,2825,248],{"class":225},[204,2827,2829,2831,2833,2835,2837,2839,2841,2843,2845],{"class":206,"line":2828},51,[204,2830,810],{"class":232},[204,2832,192],{"class":225},[204,2834,2349],{"class":221},[204,2836,350],{"class":225},[204,2838,2354],{"class":217},[204,2840,222],{"class":232},[204,2842,2359],{"class":221},[204,2844,328],{"class":232},[204,2846,248],{"class":225},[204,2848,2850,2852,2854],{"class":206,"line":2849},52,[204,2851,822],{"class":225},[204,2853,825],{"class":232},[204,2855,248],{"class":225},[204,2857,2859],{"class":206,"line":2858},53,[204,2860,833],{"class":225},[204,2862,2864],{"class":206,"line":2863},54,[204,2865,696],{"class":225},[204,2867,2869,2871],{"class":206,"line":2868},55,[204,2870,278],{"class":225},[204,2872,281],{"class":221},[204,2874,2876],{"class":206,"line":2875},56,[204,2877,469],{"emptyLinePlaceholder":468},[204,2879,2881],{"class":206,"line":2880},57,[204,2882,2883],{"class":271},"// Define prompts for this handler\n",[204,2885,2887,2889,2892,2894,2896,2898],{"class":206,"line":2886},58,[204,2888,583],{"class":582},[204,2890,2891],{"class":221}," userPrompt ",[204,2893,589],{"class":225},[204,2895,2000],{"class":217},[204,2897,222],{"class":221},[204,2899,226],{"class":225},[204,2901,2903,2905,2907,2909,2912,2914],{"class":206,"line":2902},59,[204,2904,377],{"class":232},[204,2906,192],{"class":225},[204,2908,238],{"class":225},[204,2910,2911],{"class":241},"user-help",[204,2913,245],{"class":225},[204,2915,248],{"class":225},[204,2917,2919,2921,2923,2925,2928,2930],{"class":206,"line":2918},60,[204,2920,632],{"class":232},[204,2922,192],{"class":225},[204,2924,238],{"class":225},[204,2926,2927],{"class":241},"Get help with user operations",[204,2929,245],{"class":225},[204,2931,248],{"class":225},[204,2933,2935,2937,2939,2941,2944,2946],{"class":206,"line":2934},61,[204,2936,702],{"class":217},[204,2938,192],{"class":225},[204,2940,707],{"class":582},[204,2942,2943],{"class":225}," ()",[204,2945,720],{"class":582},[204,2947,654],{"class":225},[204,2949,2951,2953],{"class":206,"line":2950},62,[204,2952,772],{"class":210},[204,2954,654],{"class":225},[204,2956,2958,2961,2963,2965],{"class":206,"line":2957},63,[204,2959,2960],{"class":232},"      messages",[204,2962,192],{"class":225},[204,2964,785],{"class":232},[204,2966,226],{"class":225},[204,2968,2970,2973,2975,2977,2979,2981],{"class":206,"line":2969},64,[204,2971,2972],{"class":232},"        role",[204,2974,192],{"class":225},[204,2976,238],{"class":225},[204,2978,2359],{"class":241},[204,2980,245],{"class":225},[204,2982,248],{"class":225},[204,2984,2986,2989,2991],{"class":206,"line":2985},65,[204,2987,2988],{"class":232},"        content",[204,2990,192],{"class":225},[204,2992,654],{"class":225},[204,2994,2996,2999,3001,3003,3005,3007],{"class":206,"line":2995},66,[204,2997,2998],{"class":232},"          type",[204,3000,192],{"class":225},[204,3002,238],{"class":225},[204,3004,800],{"class":241},[204,3006,245],{"class":225},[204,3008,248],{"class":225},[204,3010,3012,3015,3017,3019,3022,3024],{"class":206,"line":3011},67,[204,3013,3014],{"class":232},"          text",[204,3016,192],{"class":225},[204,3018,238],{"class":225},[204,3020,3021],{"class":241},"How can I manage users?",[204,3023,245],{"class":225},[204,3025,248],{"class":225},[204,3027,3029],{"class":206,"line":3028},68,[204,3030,3031],{"class":225},"        },\n",[204,3033,3035,3037,3039],{"class":206,"line":3034},69,[204,3036,822],{"class":225},[204,3038,825],{"class":232},[204,3040,248],{"class":225},[204,3042,3044],{"class":206,"line":3043},70,[204,3045,833],{"class":225},[204,3047,3049],{"class":206,"line":3048},71,[204,3050,696],{"class":225},[204,3052,3054,3056],{"class":206,"line":3053},72,[204,3055,278],{"class":225},[204,3057,281],{"class":221},[204,3059,3061],{"class":206,"line":3060},73,[204,3062,469],{"emptyLinePlaceholder":468},[204,3064,3066],{"class":206,"line":3065},74,[204,3067,3068],{"class":271},"// Export the handler\n",[204,3070,3072,3074,3076,3078,3080],{"class":206,"line":3071},75,[204,3073,211],{"class":210},[204,3075,214],{"class":210},[204,3077,218],{"class":217},[204,3079,222],{"class":221},[204,3081,226],{"class":225},[204,3083,3085,3087,3089,3091,3094,3096],{"class":206,"line":3084},76,[204,3086,377],{"class":232},[204,3088,192],{"class":225},[204,3090,238],{"class":225},[204,3092,3093],{"class":241},"api",[204,3095,245],{"class":225},[204,3097,248],{"class":225},[204,3099,3101,3103,3105,3107,3109,3111],{"class":206,"line":3100},77,[204,3102,233],{"class":232},[204,3104,192],{"class":225},[204,3106,238],{"class":225},[204,3108,1089],{"class":241},[204,3110,245],{"class":225},[204,3112,248],{"class":225},[204,3114,3116,3118,3120,3122,3125,3127],{"class":206,"line":3115},78,[204,3117,901],{"class":232},[204,3119,192],{"class":225},[204,3121,238],{"class":225},[204,3123,3124],{"class":241},"/mcp/api",[204,3126,245],{"class":225},[204,3128,248],{"class":225},[204,3130,3132,3134,3136,3139,3141,3144],{"class":206,"line":3131},79,[204,3133,491],{"class":232},[204,3135,192],{"class":225},[204,3137,3138],{"class":221}," [getUserTool",[204,3140,446],{"class":225},[204,3142,3143],{"class":221}," createUserTool]",[204,3145,248],{"class":225},[204,3147,3149,3151,3153,3156],{"class":206,"line":3148},80,[204,3150,1186],{"class":232},[204,3152,192],{"class":225},[204,3154,3155],{"class":221}," [userResource]",[204,3157,248],{"class":225},[204,3159,3161,3163,3165,3168],{"class":206,"line":3160},81,[204,3162,1204],{"class":232},[204,3164,192],{"class":225},[204,3166,3167],{"class":221}," [userPrompt]",[204,3169,248],{"class":225},[204,3171,3173,3175,3177,3179,3182,3184],{"class":206,"line":3172},82,[204,3174,254],{"class":232},[204,3176,192],{"class":225},[204,3178,238],{"class":225},[204,3180,3181],{"class":241},"/docs/api",[204,3183,245],{"class":225},[204,3185,248],{"class":225},[204,3187,3189,3191],{"class":206,"line":3188},83,[204,3190,278],{"class":225},[204,3192,281],{"class":221},[133,3194,3196],{"id":3195},"multiple-handlers","Multiple Handlers",[138,3198,3199],{},"You can create multiple handlers in your application:",[194,3201,3205],{"className":3202,"code":3204,"language":800},[3203],"language-text","server/\n└── mcp/\n    ├── migration.ts          # Migration handler\n    ├── api-handler.ts        # API handler\n    ├── admin-handler.ts      # Admin handler\n    ├── tools/\n    │   └── echo.ts           # Default handler tools\n    ├── resources/\n    │   └── readme.ts         # Default handler resources\n    └── prompts/\n        └── greeting.ts       # Default handler prompts\n",[170,3206,3204],{"__ignoreMap":200},[138,3208,3209],{},"Each handler file should export a default handler definition:",[194,3211,3213],{"className":196,"code":3212,"filename":524,"language":199,"meta":200,"style":200},"import { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'migration',\n  tools: [ ... ],\n})\n",[170,3214,3215,3235,3239,3251,3265,3279],{"__ignoreMap":200},[204,3216,3217,3219,3221,3223,3225,3227,3229,3231,3233],{"class":206,"line":207},[204,3218,437],{"class":210},[204,3220,440],{"class":225},[204,3222,218],{"class":221},[204,3224,452],{"class":225},[204,3226,455],{"class":210},[204,3228,238],{"class":225},[204,3230,568],{"class":241},[204,3232,245],{"class":225},[204,3234,573],{"class":271},[204,3236,3237],{"class":206,"line":229},[204,3238,469],{"emptyLinePlaceholder":468},[204,3240,3241,3243,3245,3247,3249],{"class":206,"line":251},[204,3242,211],{"class":210},[204,3244,214],{"class":210},[204,3246,218],{"class":217},[204,3248,222],{"class":221},[204,3250,226],{"class":225},[204,3252,3253,3255,3257,3259,3261,3263],{"class":206,"line":268},[204,3254,377],{"class":232},[204,3256,192],{"class":225},[204,3258,238],{"class":225},[204,3260,875],{"class":241},[204,3262,245],{"class":225},[204,3264,248],{"class":225},[204,3266,3267,3269,3271,3273,3275,3277],{"class":206,"line":275},[204,3268,491],{"class":232},[204,3270,192],{"class":225},[204,3272,1170],{"class":221},[204,3274,1173],{"class":225},[204,3276,1176],{"class":221},[204,3278,248],{"class":225},[204,3280,3281,3283],{"class":206,"line":506},[204,3282,278],{"class":225},[204,3284,281],{"class":221},[194,3286,3288],{"className":196,"code":3287,"filename":2125,"language":199,"meta":200,"style":200},"import { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'api',\n  tools: [ ... ],\n})\n",[170,3289,3290,3310,3314,3326,3340,3354],{"__ignoreMap":200},[204,3291,3292,3294,3296,3298,3300,3302,3304,3306,3308],{"class":206,"line":207},[204,3293,437],{"class":210},[204,3295,440],{"class":225},[204,3297,218],{"class":221},[204,3299,452],{"class":225},[204,3301,455],{"class":210},[204,3303,238],{"class":225},[204,3305,568],{"class":241},[204,3307,245],{"class":225},[204,3309,573],{"class":271},[204,3311,3312],{"class":206,"line":229},[204,3313,469],{"emptyLinePlaceholder":468},[204,3315,3316,3318,3320,3322,3324],{"class":206,"line":251},[204,3317,211],{"class":210},[204,3319,214],{"class":210},[204,3321,218],{"class":217},[204,3323,222],{"class":221},[204,3325,226],{"class":225},[204,3327,3328,3330,3332,3334,3336,3338],{"class":206,"line":268},[204,3329,377],{"class":232},[204,3331,192],{"class":225},[204,3333,238],{"class":225},[204,3335,3093],{"class":241},[204,3337,245],{"class":225},[204,3339,248],{"class":225},[204,3341,3342,3344,3346,3348,3350,3352],{"class":206,"line":275},[204,3343,491],{"class":232},[204,3345,192],{"class":225},[204,3347,1170],{"class":221},[204,3349,1173],{"class":225},[204,3351,1176],{"class":221},[204,3353,248],{"class":225},[204,3355,3356,3358],{"class":206,"line":506},[204,3357,278],{"class":225},[204,3359,281],{"class":221},[133,3361,3363],{"id":3362},"handler-routes","Handler Routes",[138,3365,3366,3367,3369,3370,3372,3373,3376],{},"The handler's ",[170,3368,303],{}," determines where it will be mounted. By default, handlers are accessible at ",[170,3371,1242],{}," where ",[170,3374,3375],{},":name"," is the handler's name:",[150,3378,3379,3388,3395],{},[153,3380,3381,3382,3385,3386],{},"Handler with ",[170,3383,3384],{},"name: 'migration'"," → mounted at ",[170,3387,908],{},[153,3389,3381,3390,3385,3393],{},[170,3391,3392],{},"name: 'api'",[170,3394,3124],{},[153,3396,3381,3397,3385,3400],{},[170,3398,3399],{},"name: 'admin'",[170,3401,3402],{},"/mcp/admin",[138,3404,3405],{},"You can also specify a custom route to override the default:",[194,3407,3409],{"className":196,"code":3408,"language":199,"meta":200,"style":200},"import { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'api',\n  route: '/api/mcp/v1', // Custom route instead of /mcp/api\n})\n",[170,3410,3411,3431,3435,3447,3461,3479],{"__ignoreMap":200},[204,3412,3413,3415,3417,3419,3421,3423,3425,3427,3429],{"class":206,"line":207},[204,3414,437],{"class":210},[204,3416,440],{"class":225},[204,3418,218],{"class":221},[204,3420,452],{"class":225},[204,3422,455],{"class":210},[204,3424,238],{"class":225},[204,3426,568],{"class":241},[204,3428,245],{"class":225},[204,3430,573],{"class":271},[204,3432,3433],{"class":206,"line":229},[204,3434,469],{"emptyLinePlaceholder":468},[204,3436,3437,3439,3441,3443,3445],{"class":206,"line":251},[204,3438,211],{"class":210},[204,3440,214],{"class":210},[204,3442,218],{"class":217},[204,3444,222],{"class":221},[204,3446,226],{"class":225},[204,3448,3449,3451,3453,3455,3457,3459],{"class":206,"line":268},[204,3450,377],{"class":232},[204,3452,192],{"class":225},[204,3454,238],{"class":225},[204,3456,3093],{"class":241},[204,3458,245],{"class":225},[204,3460,248],{"class":225},[204,3462,3463,3465,3467,3469,3472,3474,3476],{"class":206,"line":275},[204,3464,901],{"class":232},[204,3466,192],{"class":225},[204,3468,238],{"class":225},[204,3470,3471],{"class":241},"/api/mcp/v1",[204,3473,245],{"class":225},[204,3475,446],{"class":225},[204,3477,3478],{"class":271}," // Custom route instead of /mcp/api\n",[204,3480,3481,3483],{"class":206,"line":506},[204,3482,278],{"class":225},[204,3484,281],{"class":221},[133,3486,3488],{"id":3487},"default-vs-custom-handlers","Default vs Custom Handlers",[3490,3491,3492],"prose-table",{},[3493,3494,3495,3515],"table",{},[3496,3497,3498],"thead",{},[3499,3500,3501,3505,3507,3512],"tr",{},[3502,3503,3504],"th",{},"Feature",[3502,3506,165],{},[3502,3508,3509,3510,328],{},"Default Handler Override (",[170,3511,188],{},[3502,3513,3514],{},"Custom Handler",[3516,3517,3518,3538,3554,3567,3580,3594],"tbody",{},[3499,3519,3520,3524,3529,3533],{},[3521,3522,3523],"td",{},"Route",[3521,3525,3526,3528],{},[170,3527,172],{}," (via config)",[3521,3530,3531,3528],{},[170,3532,172],{},[3521,3534,3535,3537],{},[170,3536,1242],{}," (or custom route)",[3499,3539,3540,3542,3548,3551],{},[3521,3541,49],{},[3521,3543,3544,3545],{},"From ",[170,3546,3547],{},"server/mcp/tools/",[3521,3549,3550],{},"Custom or global",[3521,3552,3553],{},"Defined in handler",[3499,3555,3556,3558,3563,3565],{},[3521,3557,54],{},[3521,3559,3544,3560],{},[170,3561,3562],{},"server/mcp/resources/",[3521,3564,3550],{},[3521,3566,3553],{},[3499,3568,3569,3571,3576,3578],{},[3521,3570,59],{},[3521,3572,3544,3573],{},[170,3574,3575],{},"server/mcp/prompts/",[3521,3577,3550],{},[3521,3579,3553],{},[3499,3581,3582,3585,3588,3591],{},[3521,3583,3584],{},"Name",[3521,3586,3587],{},"From config",[3521,3589,3590],{},"Custom or config",[3521,3592,3593],{},"Handler name (required)",[3499,3595,3596,3599,3601,3603],{},[3521,3597,3598],{},"Version",[3521,3600,3587],{},[3521,3602,3590],{},[3521,3604,3605],{},"Handler version",[133,3607,3609],{"id":3608},"use-cases","Use Cases",[179,3611,3613],{"id":3612},"_1-feature-separation","1. Feature Separation",[138,3615,3616],{},"Separate different features into different handlers:",[194,3618,3621],{"className":196,"code":3619,"filename":3620,"language":199,"meta":200,"style":200},"import { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'users',\n  tools: [getUserTool, createUserTool, updateUserTool],\n})\n","server/mcp/user-management.ts",[170,3622,3623,3643,3647,3659,3673,3693],{"__ignoreMap":200},[204,3624,3625,3627,3629,3631,3633,3635,3637,3639,3641],{"class":206,"line":207},[204,3626,437],{"class":210},[204,3628,440],{"class":225},[204,3630,218],{"class":221},[204,3632,452],{"class":225},[204,3634,455],{"class":210},[204,3636,238],{"class":225},[204,3638,568],{"class":241},[204,3640,245],{"class":225},[204,3642,573],{"class":271},[204,3644,3645],{"class":206,"line":229},[204,3646,469],{"emptyLinePlaceholder":468},[204,3648,3649,3651,3653,3655,3657],{"class":206,"line":251},[204,3650,211],{"class":210},[204,3652,214],{"class":210},[204,3654,218],{"class":217},[204,3656,222],{"class":221},[204,3658,226],{"class":225},[204,3660,3661,3663,3665,3667,3669,3671],{"class":206,"line":268},[204,3662,377],{"class":232},[204,3664,192],{"class":225},[204,3666,238],{"class":225},[204,3668,2299],{"class":241},[204,3670,245],{"class":225},[204,3672,248],{"class":225},[204,3674,3675,3677,3679,3681,3683,3686,3688,3691],{"class":206,"line":275},[204,3676,491],{"class":232},[204,3678,192],{"class":225},[204,3680,3138],{"class":221},[204,3682,446],{"class":225},[204,3684,3685],{"class":221}," createUserTool",[204,3687,446],{"class":225},[204,3689,3690],{"class":221}," updateUserTool]",[204,3692,248],{"class":225},[204,3694,3695,3697],{"class":206,"line":506},[204,3696,278],{"class":225},[204,3698,281],{"class":221},[194,3700,3703],{"className":196,"code":3701,"filename":3702,"language":199,"meta":200,"style":200},"import { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'content',\n  tools: [createPostTool, updatePostTool, deletePostTool],\n})\n","server/mcp/content-management.ts",[170,3704,3705,3725,3729,3741,3756,3777],{"__ignoreMap":200},[204,3706,3707,3709,3711,3713,3715,3717,3719,3721,3723],{"class":206,"line":207},[204,3708,437],{"class":210},[204,3710,440],{"class":225},[204,3712,218],{"class":221},[204,3714,452],{"class":225},[204,3716,455],{"class":210},[204,3718,238],{"class":225},[204,3720,568],{"class":241},[204,3722,245],{"class":225},[204,3724,573],{"class":271},[204,3726,3727],{"class":206,"line":229},[204,3728,469],{"emptyLinePlaceholder":468},[204,3730,3731,3733,3735,3737,3739],{"class":206,"line":251},[204,3732,211],{"class":210},[204,3734,214],{"class":210},[204,3736,218],{"class":217},[204,3738,222],{"class":221},[204,3740,226],{"class":225},[204,3742,3743,3745,3747,3749,3752,3754],{"class":206,"line":268},[204,3744,377],{"class":232},[204,3746,192],{"class":225},[204,3748,238],{"class":225},[204,3750,3751],{"class":241},"content",[204,3753,245],{"class":225},[204,3755,248],{"class":225},[204,3757,3758,3760,3762,3765,3767,3770,3772,3775],{"class":206,"line":275},[204,3759,491],{"class":232},[204,3761,192],{"class":225},[204,3763,3764],{"class":221}," [createPostTool",[204,3766,446],{"class":225},[204,3768,3769],{"class":221}," updatePostTool",[204,3771,446],{"class":225},[204,3773,3774],{"class":221}," deletePostTool]",[204,3776,248],{"class":225},[204,3778,3779,3781],{"class":206,"line":506},[204,3780,278],{"class":225},[204,3782,281],{"class":221},[179,3784,3786],{"id":3785},"_2-versioned-apis","2. Versioned APIs",[138,3788,3789],{},"Create versioned handlers:",[194,3791,3794],{"className":196,"code":3792,"filename":3793,"language":199,"meta":200,"style":200},"import { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'api-v1',\n  version: '1.0.0',\n  route: '/api/v1/mcp',\n  tools: [ ... ],\n})\n","server/mcp/api-v1.ts",[170,3795,3796,3816,3820,3832,3847,3861,3876,3890],{"__ignoreMap":200},[204,3797,3798,3800,3802,3804,3806,3808,3810,3812,3814],{"class":206,"line":207},[204,3799,437],{"class":210},[204,3801,440],{"class":225},[204,3803,218],{"class":221},[204,3805,452],{"class":225},[204,3807,455],{"class":210},[204,3809,238],{"class":225},[204,3811,568],{"class":241},[204,3813,245],{"class":225},[204,3815,573],{"class":271},[204,3817,3818],{"class":206,"line":229},[204,3819,469],{"emptyLinePlaceholder":468},[204,3821,3822,3824,3826,3828,3830],{"class":206,"line":251},[204,3823,211],{"class":210},[204,3825,214],{"class":210},[204,3827,218],{"class":217},[204,3829,222],{"class":221},[204,3831,226],{"class":225},[204,3833,3834,3836,3838,3840,3843,3845],{"class":206,"line":268},[204,3835,377],{"class":232},[204,3837,192],{"class":225},[204,3839,238],{"class":225},[204,3841,3842],{"class":241},"api-v1",[204,3844,245],{"class":225},[204,3846,248],{"class":225},[204,3848,3849,3851,3853,3855,3857,3859],{"class":206,"line":275},[204,3850,233],{"class":232},[204,3852,192],{"class":225},[204,3854,238],{"class":225},[204,3856,1089],{"class":241},[204,3858,245],{"class":225},[204,3860,248],{"class":225},[204,3862,3863,3865,3867,3869,3872,3874],{"class":206,"line":506},[204,3864,901],{"class":232},[204,3866,192],{"class":225},[204,3868,238],{"class":225},[204,3870,3871],{"class":241},"/api/v1/mcp",[204,3873,245],{"class":225},[204,3875,248],{"class":225},[204,3877,3878,3880,3882,3884,3886,3888],{"class":206,"line":629},[204,3879,491],{"class":232},[204,3881,192],{"class":225},[204,3883,1170],{"class":221},[204,3885,1173],{"class":225},[204,3887,1176],{"class":221},[204,3889,248],{"class":225},[204,3891,3892,3894],{"class":206,"line":646},[204,3893,278],{"class":225},[204,3895,281],{"class":221},[194,3897,3900],{"className":196,"code":3898,"filename":3899,"language":199,"meta":200,"style":200},"import { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'api-v2',\n  version: '2.0.0',\n  route: '/api/v2/mcp',\n  tools: [ ... ],\n})\n","server/mcp/api-v2.ts",[170,3901,3902,3922,3926,3938,3953,3967,3982,3996],{"__ignoreMap":200},[204,3903,3904,3906,3908,3910,3912,3914,3916,3918,3920],{"class":206,"line":207},[204,3905,437],{"class":210},[204,3907,440],{"class":225},[204,3909,218],{"class":221},[204,3911,452],{"class":225},[204,3913,455],{"class":210},[204,3915,238],{"class":225},[204,3917,568],{"class":241},[204,3919,245],{"class":225},[204,3921,573],{"class":271},[204,3923,3924],{"class":206,"line":229},[204,3925,469],{"emptyLinePlaceholder":468},[204,3927,3928,3930,3932,3934,3936],{"class":206,"line":251},[204,3929,211],{"class":210},[204,3931,214],{"class":210},[204,3933,218],{"class":217},[204,3935,222],{"class":221},[204,3937,226],{"class":225},[204,3939,3940,3942,3944,3946,3949,3951],{"class":206,"line":268},[204,3941,377],{"class":232},[204,3943,192],{"class":225},[204,3945,238],{"class":225},[204,3947,3948],{"class":241},"api-v2",[204,3950,245],{"class":225},[204,3952,248],{"class":225},[204,3954,3955,3957,3959,3961,3963,3965],{"class":206,"line":275},[204,3956,233],{"class":232},[204,3958,192],{"class":225},[204,3960,238],{"class":225},[204,3962,242],{"class":241},[204,3964,245],{"class":225},[204,3966,248],{"class":225},[204,3968,3969,3971,3973,3975,3978,3980],{"class":206,"line":506},[204,3970,901],{"class":232},[204,3972,192],{"class":225},[204,3974,238],{"class":225},[204,3976,3977],{"class":241},"/api/v2/mcp",[204,3979,245],{"class":225},[204,3981,248],{"class":225},[204,3983,3984,3986,3988,3990,3992,3994],{"class":206,"line":629},[204,3985,491],{"class":232},[204,3987,192],{"class":225},[204,3989,1170],{"class":221},[204,3991,1173],{"class":225},[204,3993,1176],{"class":221},[204,3995,248],{"class":225},[204,3997,3998,4000],{"class":206,"line":646},[204,3999,278],{"class":225},[204,4001,281],{"class":221},[179,4003,4005],{"id":4004},"_3-domain-specific-handlers","3. Domain-Specific Handlers",[138,4007,4008],{},"Organize by domain:",[194,4010,4013],{"className":196,"code":4011,"filename":4012,"language":199,"meta":200,"style":200},"import { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'ecommerce',\n  tools: [addToCartTool, checkoutTool, getProductsTool],\n})\n","server/mcp/ecommerce.ts",[170,4014,4015,4035,4039,4051,4066,4087],{"__ignoreMap":200},[204,4016,4017,4019,4021,4023,4025,4027,4029,4031,4033],{"class":206,"line":207},[204,4018,437],{"class":210},[204,4020,440],{"class":225},[204,4022,218],{"class":221},[204,4024,452],{"class":225},[204,4026,455],{"class":210},[204,4028,238],{"class":225},[204,4030,568],{"class":241},[204,4032,245],{"class":225},[204,4034,573],{"class":271},[204,4036,4037],{"class":206,"line":229},[204,4038,469],{"emptyLinePlaceholder":468},[204,4040,4041,4043,4045,4047,4049],{"class":206,"line":251},[204,4042,211],{"class":210},[204,4044,214],{"class":210},[204,4046,218],{"class":217},[204,4048,222],{"class":221},[204,4050,226],{"class":225},[204,4052,4053,4055,4057,4059,4062,4064],{"class":206,"line":268},[204,4054,377],{"class":232},[204,4056,192],{"class":225},[204,4058,238],{"class":225},[204,4060,4061],{"class":241},"ecommerce",[204,4063,245],{"class":225},[204,4065,248],{"class":225},[204,4067,4068,4070,4072,4075,4077,4080,4082,4085],{"class":206,"line":275},[204,4069,491],{"class":232},[204,4071,192],{"class":225},[204,4073,4074],{"class":221}," [addToCartTool",[204,4076,446],{"class":225},[204,4078,4079],{"class":221}," checkoutTool",[204,4081,446],{"class":225},[204,4083,4084],{"class":221}," getProductsTool]",[204,4086,248],{"class":225},[204,4088,4089,4091],{"class":206,"line":506},[204,4090,278],{"class":225},[204,4092,281],{"class":221},[194,4094,4097],{"className":196,"code":4095,"filename":4096,"language":199,"meta":200,"style":200},"import { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'analytics',\n  tools: [getStatsTool, generateReportTool],\n})\n","server/mcp/analytics.ts",[170,4098,4099,4119,4123,4135,4150,4166],{"__ignoreMap":200},[204,4100,4101,4103,4105,4107,4109,4111,4113,4115,4117],{"class":206,"line":207},[204,4102,437],{"class":210},[204,4104,440],{"class":225},[204,4106,218],{"class":221},[204,4108,452],{"class":225},[204,4110,455],{"class":210},[204,4112,238],{"class":225},[204,4114,568],{"class":241},[204,4116,245],{"class":225},[204,4118,573],{"class":271},[204,4120,4121],{"class":206,"line":229},[204,4122,469],{"emptyLinePlaceholder":468},[204,4124,4125,4127,4129,4131,4133],{"class":206,"line":251},[204,4126,211],{"class":210},[204,4128,214],{"class":210},[204,4130,218],{"class":217},[204,4132,222],{"class":221},[204,4134,226],{"class":225},[204,4136,4137,4139,4141,4143,4146,4148],{"class":206,"line":268},[204,4138,377],{"class":232},[204,4140,192],{"class":225},[204,4142,238],{"class":225},[204,4144,4145],{"class":241},"analytics",[204,4147,245],{"class":225},[204,4149,248],{"class":225},[204,4151,4152,4154,4156,4159,4161,4164],{"class":206,"line":275},[204,4153,491],{"class":232},[204,4155,192],{"class":225},[204,4157,4158],{"class":221}," [getStatsTool",[204,4160,446],{"class":225},[204,4162,4163],{"class":221}," generateReportTool]",[204,4165,248],{"class":225},[204,4167,4168,4170],{"class":206,"line":506},[204,4169,278],{"class":225},[204,4171,281],{"class":221},[133,4173,4175],{"id":4174},"sharing-tools-between-handlers","Sharing Tools Between Handlers",[138,4177,4178],{},"You can share tool definitions between handlers by exporting them from a separate file:",[194,4180,4183],{"className":196,"code":4181,"filename":4182,"language":199,"meta":200,"style":200},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport const sharedTool = defineMcpTool({\n  name: 'shared-tool',\n  description: 'A shared tool',\n  inputSchema: {\n    input: z.string(),\n  },\n  handler: async ({ input }) => {\n    return {\n      content: [{\n        type: 'text',\n        text: `Shared: ${input}`,\n      }],\n    }\n  },\n})\n","server/mcp/shared-tools.ts",[170,4184,4185,4203,4223,4227,4245,4260,4275,4283,4300,4304,4323,4329,4339,4353,4373,4381,4385,4389],{"__ignoreMap":200},[204,4186,4187,4189,4191,4193,4195,4197,4199,4201],{"class":206,"line":207},[204,4188,437],{"class":210},[204,4190,440],{"class":225},[204,4192,535],{"class":221},[204,4194,452],{"class":225},[204,4196,455],{"class":210},[204,4198,238],{"class":225},[204,4200,544],{"class":241},[204,4202,463],{"class":225},[204,4204,4205,4207,4209,4211,4213,4215,4217,4219,4221],{"class":206,"line":229},[204,4206,437],{"class":210},[204,4208,440],{"class":225},[204,4210,555],{"class":221},[204,4212,452],{"class":225},[204,4214,455],{"class":210},[204,4216,238],{"class":225},[204,4218,568],{"class":241},[204,4220,245],{"class":225},[204,4222,573],{"class":271},[204,4224,4225],{"class":206,"line":251},[204,4226,469],{"emptyLinePlaceholder":468},[204,4228,4229,4231,4234,4237,4239,4241,4243],{"class":206,"line":268},[204,4230,211],{"class":210},[204,4232,4233],{"class":582}," const",[204,4235,4236],{"class":221}," sharedTool ",[204,4238,589],{"class":225},[204,4240,555],{"class":217},[204,4242,222],{"class":221},[204,4244,226],{"class":225},[204,4246,4247,4249,4251,4253,4256,4258],{"class":206,"line":275},[204,4248,377],{"class":232},[204,4250,192],{"class":225},[204,4252,238],{"class":225},[204,4254,4255],{"class":241},"shared-tool",[204,4257,245],{"class":225},[204,4259,248],{"class":225},[204,4261,4262,4264,4266,4268,4271,4273],{"class":206,"line":506},[204,4263,632],{"class":232},[204,4265,192],{"class":225},[204,4267,238],{"class":225},[204,4269,4270],{"class":241},"A shared tool",[204,4272,245],{"class":225},[204,4274,248],{"class":225},[204,4276,4277,4279,4281],{"class":206,"line":629},[204,4278,649],{"class":232},[204,4280,192],{"class":225},[204,4282,654],{"class":225},[204,4284,4285,4288,4290,4292,4294,4296,4298],{"class":206,"line":646},[204,4286,4287],{"class":232},"    input",[204,4289,192],{"class":225},[204,4291,535],{"class":221},[204,4293,350],{"class":225},[204,4295,669],{"class":217},[204,4297,672],{"class":221},[204,4299,248],{"class":225},[204,4301,4302],{"class":206,"line":657},[204,4303,696],{"class":225},[204,4305,4306,4308,4310,4312,4314,4317,4319,4321],{"class":206,"line":693},[204,4307,702],{"class":217},[204,4309,192],{"class":225},[204,4311,707],{"class":582},[204,4313,710],{"class":225},[204,4315,4316],{"class":713}," input",[204,4318,717],{"class":225},[204,4320,720],{"class":582},[204,4322,654],{"class":225},[204,4324,4325,4327],{"class":206,"line":699},[204,4326,772],{"class":210},[204,4328,654],{"class":225},[204,4330,4331,4333,4335,4337],{"class":206,"line":725},[204,4332,780],{"class":232},[204,4334,192],{"class":225},[204,4336,785],{"class":232},[204,4338,226],{"class":225},[204,4340,4341,4343,4345,4347,4349,4351],{"class":206,"line":769},[204,4342,793],{"class":232},[204,4344,192],{"class":225},[204,4346,238],{"class":225},[204,4348,800],{"class":241},[204,4350,245],{"class":225},[204,4352,248],{"class":225},[204,4354,4355,4357,4359,4361,4364,4366,4369,4371],{"class":206,"line":777},[204,4356,810],{"class":232},[204,4358,192],{"class":225},[204,4360,2591],{"class":225},[204,4362,4363],{"class":241},"Shared: ",[204,4365,2597],{"class":225},[204,4367,4368],{"class":221},"input",[204,4370,2607],{"class":225},[204,4372,248],{"class":225},[204,4374,4375,4377,4379],{"class":206,"line":790},[204,4376,822],{"class":225},[204,4378,825],{"class":232},[204,4380,248],{"class":225},[204,4382,4383],{"class":206,"line":807},[204,4384,833],{"class":225},[204,4386,4387],{"class":206,"line":819},[204,4388,696],{"class":225},[204,4390,4391,4393],{"class":206,"line":830},[204,4392,278],{"class":225},[204,4394,281],{"class":221},[194,4396,4399],{"className":196,"code":4397,"filename":4398,"language":199,"meta":200,"style":200},"import { sharedTool } from './shared-tools'\nimport { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'handler1',\n  tools: [sharedTool],\n})\n","server/mcp/handler1.ts",[170,4400,4401,4421,4441,4445,4457,4472,4483],{"__ignoreMap":200},[204,4402,4403,4405,4407,4410,4412,4414,4416,4419],{"class":206,"line":207},[204,4404,437],{"class":210},[204,4406,440],{"class":225},[204,4408,4409],{"class":221}," sharedTool",[204,4411,452],{"class":225},[204,4413,455],{"class":210},[204,4415,238],{"class":225},[204,4417,4418],{"class":241},"./shared-tools",[204,4420,463],{"class":225},[204,4422,4423,4425,4427,4429,4431,4433,4435,4437,4439],{"class":206,"line":229},[204,4424,437],{"class":210},[204,4426,440],{"class":225},[204,4428,218],{"class":221},[204,4430,452],{"class":225},[204,4432,455],{"class":210},[204,4434,238],{"class":225},[204,4436,568],{"class":241},[204,4438,245],{"class":225},[204,4440,573],{"class":271},[204,4442,4443],{"class":206,"line":251},[204,4444,469],{"emptyLinePlaceholder":468},[204,4446,4447,4449,4451,4453,4455],{"class":206,"line":268},[204,4448,211],{"class":210},[204,4450,214],{"class":210},[204,4452,218],{"class":217},[204,4454,222],{"class":221},[204,4456,226],{"class":225},[204,4458,4459,4461,4463,4465,4468,4470],{"class":206,"line":275},[204,4460,377],{"class":232},[204,4462,192],{"class":225},[204,4464,238],{"class":225},[204,4466,4467],{"class":241},"handler1",[204,4469,245],{"class":225},[204,4471,248],{"class":225},[204,4473,4474,4476,4478,4481],{"class":206,"line":506},[204,4475,491],{"class":232},[204,4477,192],{"class":225},[204,4479,4480],{"class":221}," [sharedTool]",[204,4482,248],{"class":225},[204,4484,4485,4487],{"class":206,"line":629},[204,4486,278],{"class":225},[204,4488,281],{"class":221},[194,4490,4493],{"className":196,"code":4491,"filename":4492,"language":199,"meta":200,"style":200},"import { sharedTool } from './shared-tools'\nimport { defineMcpHandler } from '@nuxtjs/mcp-toolkit/server' // optional\n\nexport default defineMcpHandler({\n  name: 'handler2',\n  tools: [sharedTool],\n})\n","server/mcp/handler2.ts",[170,4494,4495,4513,4533,4537,4549,4564,4574],{"__ignoreMap":200},[204,4496,4497,4499,4501,4503,4505,4507,4509,4511],{"class":206,"line":207},[204,4498,437],{"class":210},[204,4500,440],{"class":225},[204,4502,4409],{"class":221},[204,4504,452],{"class":225},[204,4506,455],{"class":210},[204,4508,238],{"class":225},[204,4510,4418],{"class":241},[204,4512,463],{"class":225},[204,4514,4515,4517,4519,4521,4523,4525,4527,4529,4531],{"class":206,"line":229},[204,4516,437],{"class":210},[204,4518,440],{"class":225},[204,4520,218],{"class":221},[204,4522,452],{"class":225},[204,4524,455],{"class":210},[204,4526,238],{"class":225},[204,4528,568],{"class":241},[204,4530,245],{"class":225},[204,4532,573],{"class":271},[204,4534,4535],{"class":206,"line":251},[204,4536,469],{"emptyLinePlaceholder":468},[204,4538,4539,4541,4543,4545,4547],{"class":206,"line":268},[204,4540,211],{"class":210},[204,4542,214],{"class":210},[204,4544,218],{"class":217},[204,4546,222],{"class":221},[204,4548,226],{"class":225},[204,4550,4551,4553,4555,4557,4560,4562],{"class":206,"line":275},[204,4552,377],{"class":232},[204,4554,192],{"class":225},[204,4556,238],{"class":225},[204,4558,4559],{"class":241},"handler2",[204,4561,245],{"class":225},[204,4563,248],{"class":225},[204,4565,4566,4568,4570,4572],{"class":206,"line":506},[204,4567,491],{"class":232},[204,4569,192],{"class":225},[204,4571,4480],{"class":221},[204,4573,248],{"class":225},[204,4575,4576,4578],{"class":206,"line":629},[204,4577,278],{"class":225},[204,4579,281],{"class":221},[133,4581,4583],{"id":4582},"file-organization","File Organization",[138,4585,4586,4587,4589],{},"Organize handlers in your ",[170,4588,176],{}," directory:",[194,4591,4594],{"className":4592,"code":4593,"language":800},[3203],"server/\n└── mcp/\n    ├── index.ts              # Default handler override (optional)\n    ├── migration.ts          # Custom handler\n    ├── api-handler.ts        # Custom handler\n    ├── admin.ts              # Custom handler\n    ├── shared-tools.ts       # Shared tool definitions\n    ├── tools/\n    │   └── # Tools for default handler\n    ├── resources/\n    │   └── # Resources for default handler\n    └── prompts/\n        └── # Prompts for default handler\n",[170,4595,4593],{"__ignoreMap":200},[330,4597,334,4598,4600],{"color":1701,"icon":117},[170,4599,188],{}," file is special - it overrides the default handler configuration instead of creating a new custom handler.",[133,4602,4604],{"id":4603},"best-practices","Best Practices",[4606,4607,4608,4614,4620,4626,4632],"ol",{},[153,4609,4610,4613],{},[142,4611,4612],{},"Use descriptive names",": Make handler names clear and specific",[153,4615,4616,4619],{},[142,4617,4618],{},"Group related functionality",": Put related tools/resources together",[153,4621,4622,4625],{},[142,4623,4624],{},"Version your handlers",": Use semantic versioning for handler versions",[153,4627,4628,4631],{},[142,4629,4630],{},"Document your handlers",": Add comments explaining what each handler does",[153,4633,4634,4637],{},[142,4635,4636],{},"Keep handlers focused",": Each handler should have a clear, single purpose",[133,4639,4641],{"id":4640},"next-steps","Next Steps",[150,4643,4644,4649,4654,4659],{},[153,4645,4646,4648],{},[325,4647,79],{"href":80}," - Add authentication and logging",[153,4650,4651,4653],{},[325,4652,20],{"href":21}," - Configure the default handler",[153,4655,4656,4658],{},[325,4657,49],{"href":50}," - Create tools for your handlers",[153,4660,4661,4663],{},[325,4662,99],{"href":115}," - See more handler examples",[4665,4666,4667],"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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":200,"searchDepth":229,"depth":229,"links":4669},[4670,4671,4674,4675,4676,4694,4695,4696,4697,4698,4703,4704,4705,4706],{"id":135,"depth":229,"text":136},{"id":164,"depth":229,"text":165,"children":4672},[4673],{"id":181,"depth":251,"text":182},{"id":513,"depth":229,"text":514},{"id":949,"depth":229,"text":950},{"id":1226,"depth":229,"text":1227,"children":4677},[4678,4680,4682,4684,4686,4688,4690,4692],{"id":1230,"depth":251,"text":4679},"name (required)",{"id":1309,"depth":251,"text":4681},"version (optional)",{"id":1393,"depth":251,"text":4683},"route (optional)",{"id":1498,"depth":251,"text":4685},"browserRedirect (optional)",{"id":1584,"depth":251,"text":4687},"middleware (optional)",{"id":1709,"depth":251,"text":4689},"tools (optional)",{"id":1845,"depth":251,"text":4691},"resources (optional)",{"id":1981,"depth":251,"text":4693},"prompts (optional)",{"id":2117,"depth":229,"text":2118},{"id":3195,"depth":229,"text":3196},{"id":3362,"depth":229,"text":3363},{"id":3487,"depth":229,"text":3488},{"id":3608,"depth":229,"text":3609,"children":4699},[4700,4701,4702],{"id":3612,"depth":251,"text":3613},{"id":3785,"depth":251,"text":3786},{"id":4004,"depth":251,"text":4005},{"id":4174,"depth":229,"text":4175},{"id":4582,"depth":229,"text":4583},{"id":4603,"depth":229,"text":4604},{"id":4640,"depth":229,"text":4641},"Create custom MCP endpoints with their own tools, resources, and prompts.","md",null,{},{"icon":67},{"title":64,"description":4713},"Create custom MCP endpoints with defineMcpHandler for multiple MCP servers in one application.","uVwWtjS1J6dHhR0JJps0C8bldvvWgCOFVuR4RuwyqXg",[4716,4718],{"title":59,"path":60,"stem":61,"description":4717,"icon":62,"children":-1},"Create reusable prompts for AI assistants with optional arguments.",{"title":74,"path":75,"stem":76,"description":4719,"icon":77,"children":-1},"Customize where the module looks for MCP definitions.",1770625730479]