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