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