[{"data":1,"prerenderedAt":4754},["ShallowReactive",2],{"navigation_docs":3,"-core-concepts-handlers":139,"-core-concepts-handlers-surround":4749},[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":4741,"extension":4742,"links":4743,"meta":4744,"navigation":4745,"path":62,"seo":4746,"stem":63,"__hash__":4748},"docs\u002F2.core-concepts\u002F5.handlers.md",{"type":142,"value":143,"toc":4702},"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,1826,1831,1834,2180,2189,2197,2202,2205,2331,2335,2338,3298,3302,3305,3311,3314,3387,3460,3464,3477,3503,3506,3583,3587,3701,3705,3709,3712,3792,3874,3878,3881,3985,4089,4093,4096,4178,4255,4259,4262,4423,4515,4604,4608,4614,4620,4625,4629,4662,4666,4698],[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},[414,1821,1705,1822,1825],{"color":1704,"icon":13},[409,1823,1824],{"href":107},"Code Mode guide"," for full documentation, security details, and configuration options.",[272,1827,1829,1322],{"id":1828},"tools-optional",[170,1830,393],{},[150,1832,1833],{},"Array of tool definitions specific to this handler, or a function that returns tools dynamically based on request context:",[955,1835,1836,1963],{},[162,1837,1840],{"className":288,"code":1838,"filename":1839,"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,1841,1842,1864,1868,1890,1911,1915,1927,1941,1957],{"__ignoreMap":168},[173,1843,1844,1846,1848,1850,1852,1854,1856,1858,1860,1862],{"class":175,"line":176},[173,1845,521],{"class":298},[173,1847,524],{"class":313},[173,1849,636],{"class":309},[173,1851,530],{"class":313},[173,1853,306],{"class":309},[173,1855,536],{"class":313},[173,1857,539],{"class":298},[173,1859,325],{"class":313},[173,1861,649],{"class":328},[173,1863,547],{"class":313},[173,1865,1866],{"class":175,"line":182},[173,1867,186],{"emptyLinePlaceholder":185},[173,1869,1870,1872,1875,1877,1879,1881,1884,1886,1888],{"class":175,"line":189},[173,1871,661],{"class":660},[173,1873,1874],{"class":309}," tool1 ",[173,1876,667],{"class":313},[173,1878,636],{"class":305},[173,1880,310],{"class":309},[173,1882,1883],{"class":313},"{",[173,1885,1151],{"class":313},[173,1887,536],{"class":313},[173,1889,365],{"class":309},[173,1891,1892,1894,1897,1899,1901,1903,1905,1907,1909],{"class":175,"line":195},[173,1893,661],{"class":660},[173,1895,1896],{"class":309}," tool2 ",[173,1898,667],{"class":313},[173,1900,636],{"class":305},[173,1902,310],{"class":309},[173,1904,1883],{"class":313},[173,1906,1151],{"class":313},[173,1908,536],{"class":313},[173,1910,365],{"class":309},[173,1912,1913],{"class":175,"line":201},[173,1914,186],{"emptyLinePlaceholder":185},[173,1916,1917,1919,1921,1923,1925],{"class":175,"line":207},[173,1918,299],{"class":298},[173,1920,302],{"class":298},[173,1922,306],{"class":305},[173,1924,310],{"class":309},[173,1926,314],{"class":313},[173,1928,1929,1931,1933,1935,1937,1939],{"class":175,"line":213},[173,1930,461],{"class":319},[173,1932,285],{"class":313},[173,1934,325],{"class":313},[173,1936,1644],{"class":328},[173,1938,332],{"class":313},[173,1940,335],{"class":313},[173,1942,1943,1945,1947,1950,1952,1955],{"class":175,"line":219},[173,1944,573],{"class":319},[173,1946,285],{"class":313},[173,1948,1949],{"class":309}," [tool1",[173,1951,530],{"class":313},[173,1953,1954],{"class":309}," tool2]",[173,1956,335],{"class":313},[173,1958,1959,1961],{"class":175,"line":225},[173,1960,362],{"class":313},[173,1962,365],{"class":309},[162,1964,1967],{"className":288,"code":1965,"filename":1966,"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,1968,1969,1987,1991,2003,2017,2035,2062,2066,2084,2103,2141,2158,2163,2170,2174],{"__ignoreMap":168},[173,1970,1971,1973,1975,1977,1979,1981,1983,1985],{"class":175,"line":176},[173,1972,521],{"class":298},[173,1974,524],{"class":313},[173,1976,306],{"class":309},[173,1978,536],{"class":313},[173,1980,539],{"class":298},[173,1982,325],{"class":313},[173,1984,649],{"class":328},[173,1986,547],{"class":313},[173,1988,1989],{"class":175,"line":182},[173,1990,186],{"emptyLinePlaceholder":185},[173,1992,1993,1995,1997,1999,2001],{"class":175,"line":189},[173,1994,299],{"class":298},[173,1996,302],{"class":298},[173,1998,306],{"class":305},[173,2000,310],{"class":309},[173,2002,314],{"class":313},[173,2004,2005,2007,2009,2011,2013,2015],{"class":175,"line":195},[173,2006,461],{"class":319},[173,2008,285],{"class":313},[173,2010,325],{"class":313},[173,2012,1644],{"class":328},[173,2014,332],{"class":313},[173,2016,335],{"class":313},[173,2018,2019,2021,2023,2025,2027,2029,2031,2033],{"class":175,"line":201},[173,2020,1132],{"class":305},[173,2022,285],{"class":313},[173,2024,780],{"class":660},[173,2026,1139],{"class":313},[173,2028,1142],{"class":786},[173,2030,412],{"class":313},[173,2032,793],{"class":660},[173,2034,730],{"class":313},[173,2036,2037,2039,2041,2043,2045,2048,2050,2053,2056,2058,2060],{"class":175,"line":207},[173,2038,1671],{"class":309},[173,2040,434],{"class":313},[173,2042,1676],{"class":309},[173,2044,434],{"class":313},[173,2046,2047],{"class":309},"user",[173,2049,1684],{"class":313},[173,2051,2052],{"class":298}," await",[173,2054,2055],{"class":305}," getUser",[173,2057,310],{"class":319},[173,2059,1142],{"class":309},[173,2061,365],{"class":319},[173,2063,2064],{"class":175,"line":213},[173,2065,770],{"class":313},[173,2067,2068,2070,2072,2074,2076,2078,2080,2082],{"class":175,"line":219},[173,2069,573],{"class":305},[173,2071,285],{"class":313},[173,2073,780],{"class":660},[173,2075,1139],{"class":313},[173,2077,1142],{"class":786},[173,2079,412],{"class":313},[173,2081,793],{"class":660},[173,2083,730],{"class":313},[173,2085,2086,2089,2092,2094,2097,2100],{"class":175,"line":225},[173,2087,2088],{"class":660},"    const",[173,2090,2091],{"class":309}," base",[173,2093,1684],{"class":313},[173,2095,2096],{"class":319}," [",[173,2098,2099],{"class":309},"publicTool",[173,2101,2102],{"class":319},"]\n",[173,2104,2105,2108,2110,2112,2114,2116,2118,2120,2123,2126,2129,2131,2134,2136,2139],{"class":175,"line":231},[173,2106,2107],{"class":298},"    if",[173,2109,1139],{"class":319},[173,2111,1142],{"class":309},[173,2113,434],{"class":313},[173,2115,1676],{"class":309},[173,2117,434],{"class":313},[173,2119,2047],{"class":309},[173,2121,2122],{"class":313},"?.",[173,2124,2125],{"class":309},"role",[173,2127,2128],{"class":313}," ===",[173,2130,325],{"class":313},[173,2132,2133],{"class":328},"admin",[173,2135,332],{"class":313},[173,2137,2138],{"class":319},") ",[173,2140,314],{"class":313},[173,2142,2143,2146,2148,2151,2153,2156],{"class":175,"line":236},[173,2144,2145],{"class":309},"      base",[173,2147,434],{"class":313},[173,2149,2150],{"class":305},"push",[173,2152,310],{"class":319},[173,2154,2155],{"class":309},"adminTool",[173,2157,365],{"class":319},[173,2159,2160],{"class":175,"line":798},[173,2161,2162],{"class":313},"    }\n",[173,2164,2165,2167],{"class":175,"line":836},[173,2166,801],{"class":298},[173,2168,2169],{"class":309}," base\n",[173,2171,2172],{"class":175,"line":841},[173,2173,770],{"class":313},[173,2175,2176,2178],{"class":175,"line":848},[173,2177,362],{"class":313},[173,2179,365],{"class":309},[414,2181,1705,2182,2184,2185,2188],{"color":1704,"icon":13},[409,2183,101],{"href":102}," guide for details on auth-based filtering and the ",[170,2186,2187],{},"enabled"," guard.",[162,2190,2195],{"className":2191,"code":2193,"language":2194},[2192],"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,2196,2193],{"__ignoreMap":168},[272,2198,2200,1322],{"id":2199},"prompts-optional",[170,2201,400],{},[150,2203,2204],{},"Array of prompt definitions specific to this handler.",[162,2206,2208],{"className":288,"code":2207,"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,2209,2210,2233,2237,2258,2279,2283,2295,2309,2325],{"__ignoreMap":168},[173,2211,2212,2214,2216,2219,2221,2223,2225,2227,2229,2231],{"class":175,"line":176},[173,2213,521],{"class":298},[173,2215,524],{"class":313},[173,2217,2218],{"class":309}," defineMcpPrompt",[173,2220,530],{"class":313},[173,2222,306],{"class":309},[173,2224,536],{"class":313},[173,2226,539],{"class":298},[173,2228,325],{"class":313},[173,2230,649],{"class":328},[173,2232,547],{"class":313},[173,2234,2235],{"class":175,"line":182},[173,2236,186],{"emptyLinePlaceholder":185},[173,2238,2239,2241,2244,2246,2248,2250,2252,2254,2256],{"class":175,"line":189},[173,2240,661],{"class":660},[173,2242,2243],{"class":309}," prompt1 ",[173,2245,667],{"class":313},[173,2247,2218],{"class":305},[173,2249,310],{"class":309},[173,2251,1883],{"class":313},[173,2253,1151],{"class":313},[173,2255,536],{"class":313},[173,2257,365],{"class":309},[173,2259,2260,2262,2265,2267,2269,2271,2273,2275,2277],{"class":175,"line":195},[173,2261,661],{"class":660},[173,2263,2264],{"class":309}," prompt2 ",[173,2266,667],{"class":313},[173,2268,2218],{"class":305},[173,2270,310],{"class":309},[173,2272,1883],{"class":313},[173,2274,1151],{"class":313},[173,2276,536],{"class":313},[173,2278,365],{"class":309},[173,2280,2281],{"class":175,"line":201},[173,2282,186],{"emptyLinePlaceholder":185},[173,2284,2285,2287,2289,2291,2293],{"class":175,"line":207},[173,2286,299],{"class":298},[173,2288,302],{"class":298},[173,2290,306],{"class":305},[173,2292,310],{"class":309},[173,2294,314],{"class":313},[173,2296,2297,2299,2301,2303,2305,2307],{"class":175,"line":213},[173,2298,461],{"class":319},[173,2300,285],{"class":313},[173,2302,325],{"class":313},[173,2304,1644],{"class":328},[173,2306,332],{"class":313},[173,2308,335],{"class":313},[173,2310,2311,2313,2315,2318,2320,2323],{"class":175,"line":219},[173,2312,1200],{"class":319},[173,2314,285],{"class":313},[173,2316,2317],{"class":309}," [prompt1",[173,2319,530],{"class":313},[173,2321,2322],{"class":309}," prompt2]",[173,2324,335],{"class":313},[173,2326,2327,2329],{"class":175,"line":225},[173,2328,362],{"class":313},[173,2330,365],{"class":309},[145,2332,2334],{"id":2333},"complete-example","Complete Example",[150,2336,2337],{},"Here's a complete example of a custom handler:",[162,2339,2342],{"className":288,"code":2340,"filename":2341,"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,2343,2344,2362,2393,2397,2412,2427,2442,2450,2467,2471,2490,2520,2527,2531,2537,2541,2556,2571,2586,2594,2611,2635,2639,2664,2700,2724,2729,2736,2741,2747,2763,2778,2795,2820,2843,2870,2877,2889,2909,2926,2950,2961,2966,2971,2978,2983,2989,3005,3021,3037,3053,3060,3072,3088,3098,3114,3131,3137,3146,3151,3156,3163,3168,3174,3187,3203,3218,3234,3251,3263,3275,3291],{"__ignoreMap":168},[173,2345,2346,2348,2350,2352,2354,2356,2358,2360],{"class":175,"line":176},[173,2347,521],{"class":298},[173,2349,524],{"class":313},[173,2351,616],{"class":309},[173,2353,536],{"class":313},[173,2355,539],{"class":298},[173,2357,325],{"class":313},[173,2359,625],{"class":328},[173,2361,547],{"class":313},[173,2363,2364,2366,2368,2370,2372,2375,2377,2379,2381,2383,2385,2387,2389,2391],{"class":175,"line":182},[173,2365,521],{"class":298},[173,2367,524],{"class":313},[173,2369,636],{"class":309},[173,2371,530],{"class":313},[173,2373,2374],{"class":309}," defineMcpResource",[173,2376,530],{"class":313},[173,2378,2218],{"class":309},[173,2380,530],{"class":313},[173,2382,306],{"class":309},[173,2384,536],{"class":313},[173,2386,539],{"class":298},[173,2388,325],{"class":313},[173,2390,649],{"class":328},[173,2392,547],{"class":313},[173,2394,2395],{"class":175,"line":189},[173,2396,186],{"emptyLinePlaceholder":185},[173,2398,2399,2401,2404,2406,2408,2410],{"class":175,"line":195},[173,2400,661],{"class":660},[173,2402,2403],{"class":309}," getUserTool ",[173,2405,667],{"class":313},[173,2407,636],{"class":305},[173,2409,310],{"class":309},[173,2411,314],{"class":313},[173,2413,2414,2416,2418,2420,2423,2425],{"class":175,"line":201},[173,2415,461],{"class":319},[173,2417,285],{"class":313},[173,2419,325],{"class":313},[173,2421,2422],{"class":328},"get-user",[173,2424,332],{"class":313},[173,2426,335],{"class":313},[173,2428,2429,2431,2433,2435,2438,2440],{"class":175,"line":207},[173,2430,709],{"class":319},[173,2432,285],{"class":313},[173,2434,325],{"class":313},[173,2436,2437],{"class":328},"Get user information",[173,2439,332],{"class":313},[173,2441,335],{"class":313},[173,2443,2444,2446,2448],{"class":175,"line":213},[173,2445,725],{"class":319},[173,2447,285],{"class":313},[173,2449,730],{"class":313},[173,2451,2452,2455,2457,2459,2461,2463,2465],{"class":175,"line":219},[173,2453,2454],{"class":319},"    userId",[173,2456,285],{"class":313},[173,2458,616],{"class":309},[173,2460,434],{"class":313},[173,2462,744],{"class":305},[173,2464,747],{"class":309},[173,2466,335],{"class":313},[173,2468,2469],{"class":175,"line":225},[173,2470,770],{"class":313},[173,2472,2473,2475,2477,2479,2481,2484,2486,2488],{"class":175,"line":231},[173,2474,775],{"class":305},[173,2476,285],{"class":313},[173,2478,780],{"class":660},[173,2480,783],{"class":313},[173,2482,2483],{"class":786}," userId",[173,2485,790],{"class":313},[173,2487,793],{"class":660},[173,2489,730],{"class":313},[173,2491,2492,2494,2497,2499,2501,2504,2506,2509,2511,2514,2516,2518],{"class":175,"line":236},[173,2493,2088],{"class":660},[173,2495,2496],{"class":309}," user",[173,2498,1684],{"class":313},[173,2500,2052],{"class":298},[173,2502,2503],{"class":309}," db",[173,2505,434],{"class":313},[173,2507,2508],{"class":309},"users",[173,2510,434],{"class":313},[173,2512,2513],{"class":305},"find",[173,2515,310],{"class":319},[173,2517,1681],{"class":309},[173,2519,365],{"class":319},[173,2521,2522,2524],{"class":175,"line":798},[173,2523,801],{"class":298},[173,2525,2526],{"class":309}," user\n",[173,2528,2529],{"class":175,"line":836},[173,2530,770],{"class":313},[173,2532,2533,2535],{"class":175,"line":841},[173,2534,362],{"class":313},[173,2536,365],{"class":309},[173,2538,2539],{"class":175,"line":848},[173,2540,186],{"emptyLinePlaceholder":185},[173,2542,2543,2545,2548,2550,2552,2554],{"class":175,"line":853},[173,2544,661],{"class":660},[173,2546,2547],{"class":309}," createUserTool ",[173,2549,667],{"class":313},[173,2551,636],{"class":305},[173,2553,310],{"class":309},[173,2555,314],{"class":313},[173,2557,2558,2560,2562,2564,2567,2569],{"class":175,"line":866},[173,2559,461],{"class":319},[173,2561,285],{"class":313},[173,2563,325],{"class":313},[173,2565,2566],{"class":328},"create-user",[173,2568,332],{"class":313},[173,2570,335],{"class":313},[173,2572,2573,2575,2577,2579,2582,2584],{"class":175,"line":882},[173,2574,709],{"class":319},[173,2576,285],{"class":313},[173,2578,325],{"class":313},[173,2580,2581],{"class":328},"Create a new user",[173,2583,332],{"class":313},[173,2585,335],{"class":313},[173,2587,2588,2590,2592],{"class":175,"line":898},[173,2589,725],{"class":319},[173,2591,285],{"class":313},[173,2593,730],{"class":313},[173,2595,2596,2599,2601,2603,2605,2607,2609],{"class":175,"line":915},[173,2597,2598],{"class":319},"    name",[173,2600,285],{"class":313},[173,2602,616],{"class":309},[173,2604,434],{"class":313},[173,2606,744],{"class":305},[173,2608,747],{"class":309},[173,2610,335],{"class":313},[173,2612,2613,2616,2618,2620,2622,2624,2626,2628,2631,2633],{"class":175,"line":927},[173,2614,2615],{"class":319},"    email",[173,2617,285],{"class":313},[173,2619,616],{"class":309},[173,2621,434],{"class":313},[173,2623,744],{"class":305},[173,2625,747],{"class":309},[173,2627,434],{"class":313},[173,2629,2630],{"class":305},"email",[173,2632,747],{"class":309},[173,2634,335],{"class":313},[173,2636,2637],{"class":175,"line":942},[173,2638,770],{"class":313},[173,2640,2642,2644,2646,2648,2650,2653,2655,2658,2660,2662],{"class":175,"line":2641},23,[173,2643,775],{"class":305},[173,2645,285],{"class":313},[173,2647,780],{"class":660},[173,2649,783],{"class":313},[173,2651,2652],{"class":786}," name",[173,2654,530],{"class":313},[173,2656,2657],{"class":786}," email",[173,2659,790],{"class":313},[173,2661,793],{"class":660},[173,2663,730],{"class":313},[173,2665,2667,2669,2671,2673,2675,2677,2679,2681,2683,2686,2688,2690,2692,2694,2696,2698],{"class":175,"line":2666},24,[173,2668,2088],{"class":660},[173,2670,2496],{"class":309},[173,2672,1684],{"class":313},[173,2674,2052],{"class":298},[173,2676,2503],{"class":309},[173,2678,434],{"class":313},[173,2680,2508],{"class":309},[173,2682,434],{"class":313},[173,2684,2685],{"class":305},"create",[173,2687,310],{"class":319},[173,2689,1883],{"class":313},[173,2691,2652],{"class":309},[173,2693,530],{"class":313},[173,2695,2657],{"class":309},[173,2697,536],{"class":313},[173,2699,365],{"class":319},[173,2701,2703,2705,2708,2711,2714,2716,2718,2721],{"class":175,"line":2702},25,[173,2704,801],{"class":298},[173,2706,2707],{"class":313}," `",[173,2709,2710],{"class":328},"User created: ",[173,2712,2713],{"class":313},"${",[173,2715,2047],{"class":309},[173,2717,434],{"class":313},[173,2719,2720],{"class":309},"id",[173,2722,2723],{"class":313},"}`\n",[173,2725,2727],{"class":175,"line":2726},26,[173,2728,770],{"class":313},[173,2730,2732,2734],{"class":175,"line":2731},27,[173,2733,362],{"class":313},[173,2735,365],{"class":309},[173,2737,2739],{"class":175,"line":2738},28,[173,2740,186],{"emptyLinePlaceholder":185},[173,2742,2744],{"class":175,"line":2743},29,[173,2745,2746],{"class":356},"\u002F\u002F Define resources for this handler\n",[173,2748,2750,2752,2755,2757,2759,2761],{"class":175,"line":2749},30,[173,2751,661],{"class":660},[173,2753,2754],{"class":309}," userResource ",[173,2756,667],{"class":313},[173,2758,2374],{"class":305},[173,2760,310],{"class":309},[173,2762,314],{"class":313},[173,2764,2766,2768,2770,2772,2774,2776],{"class":175,"line":2765},31,[173,2767,461],{"class":319},[173,2769,285],{"class":313},[173,2771,325],{"class":313},[173,2773,2047],{"class":328},[173,2775,332],{"class":313},[173,2777,335],{"class":313},[173,2779,2781,2784,2786,2788,2791,2793],{"class":175,"line":2780},32,[173,2782,2783],{"class":319},"  uri",[173,2785,285],{"class":313},[173,2787,325],{"class":313},[173,2789,2790],{"class":328},"api:\u002F\u002Fusers\u002F{id}",[173,2792,332],{"class":313},[173,2794,335],{"class":313},[173,2796,2798,2800,2802,2804,2806,2809,2811,2814,2816,2818],{"class":175,"line":2797},33,[173,2799,775],{"class":305},[173,2801,285],{"class":313},[173,2803,780],{"class":660},[173,2805,1139],{"class":313},[173,2807,2808],{"class":786},"uri",[173,2810,530],{"class":313},[173,2812,2813],{"class":786}," variables",[173,2815,412],{"class":313},[173,2817,793],{"class":660},[173,2819,730],{"class":313},[173,2821,2823,2825,2828,2830,2832,2834,2836,2839],{"class":175,"line":2822},34,[173,2824,2088],{"class":660},[173,2826,2827],{"class":309}," id",[173,2829,1684],{"class":313},[173,2831,2813],{"class":309},[173,2833,434],{"class":313},[173,2835,2720],{"class":309},[173,2837,2838],{"class":298}," as",[173,2840,2842],{"class":2841},"sBMFI"," string\n",[173,2844,2846,2848,2850,2852,2854,2856,2858,2860,2862,2864,2866,2868],{"class":175,"line":2845},35,[173,2847,2088],{"class":660},[173,2849,2496],{"class":309},[173,2851,1684],{"class":313},[173,2853,2052],{"class":298},[173,2855,2503],{"class":309},[173,2857,434],{"class":313},[173,2859,2508],{"class":309},[173,2861,434],{"class":313},[173,2863,2513],{"class":305},[173,2865,310],{"class":319},[173,2867,2720],{"class":309},[173,2869,365],{"class":319},[173,2871,2873,2875],{"class":175,"line":2872},36,[173,2874,801],{"class":298},[173,2876,730],{"class":313},[173,2878,2880,2883,2885,2887],{"class":175,"line":2879},37,[173,2881,2882],{"class":319},"      contents",[173,2884,285],{"class":313},[173,2886,2096],{"class":319},[173,2888,314],{"class":313},[173,2890,2892,2895,2897,2900,2902,2905,2907],{"class":175,"line":2891},38,[173,2893,2894],{"class":319},"        uri",[173,2896,285],{"class":313},[173,2898,2899],{"class":309}," uri",[173,2901,434],{"class":313},[173,2903,2904],{"class":305},"toString",[173,2906,747],{"class":319},[173,2908,335],{"class":313},[173,2910,2912,2915,2917,2919,2922,2924],{"class":175,"line":2911},39,[173,2913,2914],{"class":319},"        mimeType",[173,2916,285],{"class":313},[173,2918,325],{"class":313},[173,2920,2921],{"class":328},"application\u002Fjson",[173,2923,332],{"class":313},[173,2925,335],{"class":313},[173,2927,2929,2932,2934,2937,2939,2942,2944,2946,2948],{"class":175,"line":2928},40,[173,2930,2931],{"class":319},"        text",[173,2933,285],{"class":313},[173,2935,2936],{"class":309}," JSON",[173,2938,434],{"class":313},[173,2940,2941],{"class":305},"stringify",[173,2943,310],{"class":319},[173,2945,2047],{"class":309},[173,2947,412],{"class":319},[173,2949,335],{"class":313},[173,2951,2953,2956,2959],{"class":175,"line":2952},41,[173,2954,2955],{"class":313},"      }",[173,2957,2958],{"class":319},"]",[173,2960,335],{"class":313},[173,2962,2964],{"class":175,"line":2963},42,[173,2965,2162],{"class":313},[173,2967,2969],{"class":175,"line":2968},43,[173,2970,770],{"class":313},[173,2972,2974,2976],{"class":175,"line":2973},44,[173,2975,362],{"class":313},[173,2977,365],{"class":309},[173,2979,2981],{"class":175,"line":2980},45,[173,2982,186],{"emptyLinePlaceholder":185},[173,2984,2986],{"class":175,"line":2985},46,[173,2987,2988],{"class":356},"\u002F\u002F Define prompts for this handler\n",[173,2990,2992,2994,2997,2999,3001,3003],{"class":175,"line":2991},47,[173,2993,661],{"class":660},[173,2995,2996],{"class":309}," userPrompt ",[173,2998,667],{"class":313},[173,3000,2218],{"class":305},[173,3002,310],{"class":309},[173,3004,314],{"class":313},[173,3006,3008,3010,3012,3014,3017,3019],{"class":175,"line":3007},48,[173,3009,461],{"class":319},[173,3011,285],{"class":313},[173,3013,325],{"class":313},[173,3015,3016],{"class":328},"user-help",[173,3018,332],{"class":313},[173,3020,335],{"class":313},[173,3022,3024,3026,3028,3030,3033,3035],{"class":175,"line":3023},49,[173,3025,709],{"class":319},[173,3027,285],{"class":313},[173,3029,325],{"class":313},[173,3031,3032],{"class":328},"Get help with user operations",[173,3034,332],{"class":313},[173,3036,335],{"class":313},[173,3038,3040,3042,3044,3046,3049,3051],{"class":175,"line":3039},50,[173,3041,775],{"class":305},[173,3043,285],{"class":313},[173,3045,780],{"class":660},[173,3047,3048],{"class":313}," ()",[173,3050,793],{"class":660},[173,3052,730],{"class":313},[173,3054,3056,3058],{"class":175,"line":3055},51,[173,3057,801],{"class":298},[173,3059,730],{"class":313},[173,3061,3063,3066,3068,3070],{"class":175,"line":3062},52,[173,3064,3065],{"class":319},"      messages",[173,3067,285],{"class":313},[173,3069,2096],{"class":319},[173,3071,314],{"class":313},[173,3073,3075,3078,3080,3082,3084,3086],{"class":175,"line":3074},53,[173,3076,3077],{"class":319},"        role",[173,3079,285],{"class":313},[173,3081,325],{"class":313},[173,3083,2047],{"class":328},[173,3085,332],{"class":313},[173,3087,335],{"class":313},[173,3089,3091,3094,3096],{"class":175,"line":3090},54,[173,3092,3093],{"class":319},"        content",[173,3095,285],{"class":313},[173,3097,730],{"class":313},[173,3099,3101,3104,3106,3108,3110,3112],{"class":175,"line":3100},55,[173,3102,3103],{"class":319},"          type",[173,3105,285],{"class":313},[173,3107,325],{"class":313},[173,3109,2194],{"class":328},[173,3111,332],{"class":313},[173,3113,335],{"class":313},[173,3115,3117,3120,3122,3124,3127,3129],{"class":175,"line":3116},56,[173,3118,3119],{"class":319},"          text",[173,3121,285],{"class":313},[173,3123,325],{"class":313},[173,3125,3126],{"class":328},"How can I manage users?",[173,3128,332],{"class":313},[173,3130,335],{"class":313},[173,3132,3134],{"class":175,"line":3133},57,[173,3135,3136],{"class":313},"        },\n",[173,3138,3140,3142,3144],{"class":175,"line":3139},58,[173,3141,2955],{"class":313},[173,3143,2958],{"class":319},[173,3145,335],{"class":313},[173,3147,3149],{"class":175,"line":3148},59,[173,3150,2162],{"class":313},[173,3152,3154],{"class":175,"line":3153},60,[173,3155,770],{"class":313},[173,3157,3159,3161],{"class":175,"line":3158},61,[173,3160,362],{"class":313},[173,3162,365],{"class":309},[173,3164,3166],{"class":175,"line":3165},62,[173,3167,186],{"emptyLinePlaceholder":185},[173,3169,3171],{"class":175,"line":3170},63,[173,3172,3173],{"class":356},"\u002F\u002F Export the handler\n",[173,3175,3177,3179,3181,3183,3185],{"class":175,"line":3176},64,[173,3178,299],{"class":298},[173,3180,302],{"class":298},[173,3182,306],{"class":305},[173,3184,310],{"class":309},[173,3186,314],{"class":313},[173,3188,3190,3192,3194,3196,3199,3201],{"class":175,"line":3189},65,[173,3191,461],{"class":319},[173,3193,285],{"class":313},[173,3195,325],{"class":313},[173,3197,3198],{"class":328},"api",[173,3200,332],{"class":313},[173,3202,335],{"class":313},[173,3204,3206,3208,3210,3212,3214,3216],{"class":175,"line":3205},66,[173,3207,320],{"class":319},[173,3209,285],{"class":313},[173,3211,325],{"class":313},[173,3213,1085],{"class":328},[173,3215,332],{"class":313},[173,3217,335],{"class":313},[173,3219,3221,3223,3225,3227,3230,3232],{"class":175,"line":3220},67,[173,3222,901],{"class":319},[173,3224,285],{"class":313},[173,3226,325],{"class":313},[173,3228,3229],{"class":328},"\u002Fmcp\u002Fapi",[173,3231,332],{"class":313},[173,3233,335],{"class":313},[173,3235,3237,3239,3241,3244,3246,3249],{"class":175,"line":3236},68,[173,3238,573],{"class":319},[173,3240,285],{"class":313},[173,3242,3243],{"class":309}," [getUserTool",[173,3245,530],{"class":313},[173,3247,3248],{"class":309}," createUserTool]",[173,3250,335],{"class":313},[173,3252,3254,3256,3258,3261],{"class":175,"line":3253},69,[173,3255,1182],{"class":319},[173,3257,285],{"class":313},[173,3259,3260],{"class":309}," [userResource]",[173,3262,335],{"class":313},[173,3264,3266,3268,3270,3273],{"class":175,"line":3265},70,[173,3267,1200],{"class":319},[173,3269,285],{"class":313},[173,3271,3272],{"class":309}," [userPrompt]",[173,3274,335],{"class":313},[173,3276,3278,3280,3282,3284,3287,3289],{"class":175,"line":3277},71,[173,3279,340],{"class":319},[173,3281,285],{"class":313},[173,3283,325],{"class":313},[173,3285,3286],{"class":328},"\u002Fdocs\u002Fapi",[173,3288,332],{"class":313},[173,3290,335],{"class":313},[173,3292,3294,3296],{"class":175,"line":3293},72,[173,3295,362],{"class":313},[173,3297,365],{"class":309},[145,3299,3301],{"id":3300},"multiple-handlers","Multiple Handlers",[150,3303,3304],{},"You can create multiple handlers in your application:",[162,3306,3309],{"className":3307,"code":3308,"language":2194},[2192],"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,3310,3308],{"__ignoreMap":168},[150,3312,3313],{},"Each handler file should export a default handler definition:",[162,3315,3317],{"className":288,"code":3316,"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,3318,3319,3337,3341,3353,3367,3381],{"__ignoreMap":168},[173,3320,3321,3323,3325,3327,3329,3331,3333,3335],{"class":175,"line":176},[173,3322,521],{"class":298},[173,3324,524],{"class":313},[173,3326,306],{"class":309},[173,3328,536],{"class":313},[173,3330,539],{"class":298},[173,3332,325],{"class":313},[173,3334,649],{"class":328},[173,3336,547],{"class":313},[173,3338,3339],{"class":175,"line":182},[173,3340,186],{"emptyLinePlaceholder":185},[173,3342,3343,3345,3347,3349,3351],{"class":175,"line":189},[173,3344,299],{"class":298},[173,3346,302],{"class":298},[173,3348,306],{"class":305},[173,3350,310],{"class":309},[173,3352,314],{"class":313},[173,3354,3355,3357,3359,3361,3363,3365],{"class":175,"line":195},[173,3356,461],{"class":319},[173,3358,285],{"class":313},[173,3360,325],{"class":313},[173,3362,875],{"class":328},[173,3364,332],{"class":313},[173,3366,335],{"class":313},[173,3368,3369,3371,3373,3375,3377,3379],{"class":175,"line":201},[173,3370,573],{"class":319},[173,3372,285],{"class":313},[173,3374,1166],{"class":309},[173,3376,1169],{"class":313},[173,3378,1172],{"class":309},[173,3380,335],{"class":313},[173,3382,3383,3385],{"class":175,"line":207},[173,3384,362],{"class":313},[173,3386,365],{"class":309},[162,3388,3390],{"className":288,"code":3389,"filename":2341,"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,3391,3392,3410,3414,3426,3440,3454],{"__ignoreMap":168},[173,3393,3394,3396,3398,3400,3402,3404,3406,3408],{"class":175,"line":176},[173,3395,521],{"class":298},[173,3397,524],{"class":313},[173,3399,306],{"class":309},[173,3401,536],{"class":313},[173,3403,539],{"class":298},[173,3405,325],{"class":313},[173,3407,649],{"class":328},[173,3409,547],{"class":313},[173,3411,3412],{"class":175,"line":182},[173,3413,186],{"emptyLinePlaceholder":185},[173,3415,3416,3418,3420,3422,3424],{"class":175,"line":189},[173,3417,299],{"class":298},[173,3419,302],{"class":298},[173,3421,306],{"class":305},[173,3423,310],{"class":309},[173,3425,314],{"class":313},[173,3427,3428,3430,3432,3434,3436,3438],{"class":175,"line":195},[173,3429,461],{"class":319},[173,3431,285],{"class":313},[173,3433,325],{"class":313},[173,3435,3198],{"class":328},[173,3437,332],{"class":313},[173,3439,335],{"class":313},[173,3441,3442,3444,3446,3448,3450,3452],{"class":175,"line":201},[173,3443,573],{"class":319},[173,3445,285],{"class":313},[173,3447,1166],{"class":309},[173,3449,1169],{"class":313},[173,3451,1172],{"class":309},[173,3453,335],{"class":313},[173,3455,3456,3458],{"class":175,"line":207},[173,3457,362],{"class":313},[173,3459,365],{"class":309},[145,3461,3463],{"id":3462},"handler-routes","Handler Routes",[150,3465,3466,3467,3469,3470,3472,3473,3476],{},"The handler's ",[170,3468,387],{}," determines where it will be mounted. By default, handlers are accessible at ",[170,3471,1254],{}," where ",[170,3474,3475],{},":name"," is the handler's name:",[244,3478,3479,3488,3495],{},[247,3480,3481,3482,3485,3486],{},"Handler with ",[170,3483,3484],{},"name: 'migration'"," → mounted at ",[170,3487,908],{},[247,3489,3481,3490,3485,3493],{},[170,3491,3492],{},"name: 'api'",[170,3494,3229],{},[247,3496,3481,3497,3485,3500],{},[170,3498,3499],{},"name: 'admin'",[170,3501,3502],{},"\u002Fmcp\u002Fadmin",[150,3504,3505],{},"You can also specify a custom route to override the default:",[162,3507,3509],{"className":288,"code":3508,"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,3510,3511,3529,3533,3545,3559,3577],{"__ignoreMap":168},[173,3512,3513,3515,3517,3519,3521,3523,3525,3527],{"class":175,"line":176},[173,3514,521],{"class":298},[173,3516,524],{"class":313},[173,3518,306],{"class":309},[173,3520,536],{"class":313},[173,3522,539],{"class":298},[173,3524,325],{"class":313},[173,3526,649],{"class":328},[173,3528,547],{"class":313},[173,3530,3531],{"class":175,"line":182},[173,3532,186],{"emptyLinePlaceholder":185},[173,3534,3535,3537,3539,3541,3543],{"class":175,"line":189},[173,3536,299],{"class":298},[173,3538,302],{"class":298},[173,3540,306],{"class":305},[173,3542,310],{"class":309},[173,3544,314],{"class":313},[173,3546,3547,3549,3551,3553,3555,3557],{"class":175,"line":195},[173,3548,461],{"class":319},[173,3550,285],{"class":313},[173,3552,325],{"class":313},[173,3554,3198],{"class":328},[173,3556,332],{"class":313},[173,3558,335],{"class":313},[173,3560,3561,3563,3565,3567,3570,3572,3574],{"class":175,"line":201},[173,3562,901],{"class":319},[173,3564,285],{"class":313},[173,3566,325],{"class":313},[173,3568,3569],{"class":328},"\u002Fapi\u002Fmcp\u002Fv1",[173,3571,332],{"class":313},[173,3573,530],{"class":313},[173,3575,3576],{"class":356}," \u002F\u002F Custom route instead of \u002Fmcp\u002Fapi\n",[173,3578,3579,3581],{"class":175,"line":207},[173,3580,362],{"class":313},[173,3582,365],{"class":309},[145,3584,3586],{"id":3585},"default-vs-custom-handlers","Default vs Custom Handlers",[3588,3589,3590,3610],"table",{},[3591,3592,3593],"thead",{},[3594,3595,3596,3600,3602,3607],"tr",{},[3597,3598,3599],"th",{},"Feature",[3597,3601,259],{},[3597,3603,3604,3605,412],{},"Default Handler Override (",[170,3606,281],{},[3597,3608,3609],{},"Custom Handler",[3611,3612,3613,3633,3649,3662,3675,3689],"tbody",{},[3594,3614,3615,3619,3624,3628],{},[3616,3617,3618],"td",{},"Route",[3616,3620,3621,3623],{},[170,3622,265],{}," (via config)",[3616,3625,3626,3623],{},[170,3627,265],{},[3616,3629,3630,3632],{},[170,3631,1254],{}," (or custom route)",[3594,3634,3635,3637,3643,3646],{},[3616,3636,46],{},[3616,3638,3639,3640],{},"From ",[170,3641,3642],{},"server\u002Fmcp\u002Ftools\u002F",[3616,3644,3645],{},"Custom or global",[3616,3647,3648],{},"Defined in handler",[3594,3650,3651,3653,3658,3660],{},[3616,3652,51],{},[3616,3654,3639,3655],{},[170,3656,3657],{},"server\u002Fmcp\u002Fresources\u002F",[3616,3659,3645],{},[3616,3661,3648],{},[3594,3663,3664,3666,3671,3673],{},[3616,3665,56],{},[3616,3667,3639,3668],{},[170,3669,3670],{},"server\u002Fmcp\u002Fprompts\u002F",[3616,3672,3645],{},[3616,3674,3648],{},[3594,3676,3677,3680,3683,3686],{},[3616,3678,3679],{},"Name",[3616,3681,3682],{},"From config",[3616,3684,3685],{},"Custom or config",[3616,3687,3688],{},"Handler name (required)",[3594,3690,3691,3694,3696,3698],{},[3616,3692,3693],{},"Version",[3616,3695,3682],{},[3616,3697,3685],{},[3616,3699,3700],{},"Handler version",[145,3702,3704],{"id":3703},"use-cases","Use Cases",[272,3706,3708],{"id":3707},"_1-feature-separation","1. Feature Separation",[150,3710,3711],{},"Separate different features into different handlers:",[162,3713,3716],{"className":288,"code":3714,"filename":3715,"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,3717,3718,3736,3740,3752,3766,3786],{"__ignoreMap":168},[173,3719,3720,3722,3724,3726,3728,3730,3732,3734],{"class":175,"line":176},[173,3721,521],{"class":298},[173,3723,524],{"class":313},[173,3725,306],{"class":309},[173,3727,536],{"class":313},[173,3729,539],{"class":298},[173,3731,325],{"class":313},[173,3733,649],{"class":328},[173,3735,547],{"class":313},[173,3737,3738],{"class":175,"line":182},[173,3739,186],{"emptyLinePlaceholder":185},[173,3741,3742,3744,3746,3748,3750],{"class":175,"line":189},[173,3743,299],{"class":298},[173,3745,302],{"class":298},[173,3747,306],{"class":305},[173,3749,310],{"class":309},[173,3751,314],{"class":313},[173,3753,3754,3756,3758,3760,3762,3764],{"class":175,"line":195},[173,3755,461],{"class":319},[173,3757,285],{"class":313},[173,3759,325],{"class":313},[173,3761,2508],{"class":328},[173,3763,332],{"class":313},[173,3765,335],{"class":313},[173,3767,3768,3770,3772,3774,3776,3779,3781,3784],{"class":175,"line":201},[173,3769,573],{"class":319},[173,3771,285],{"class":313},[173,3773,3243],{"class":309},[173,3775,530],{"class":313},[173,3777,3778],{"class":309}," createUserTool",[173,3780,530],{"class":313},[173,3782,3783],{"class":309}," updateUserTool]",[173,3785,335],{"class":313},[173,3787,3788,3790],{"class":175,"line":207},[173,3789,362],{"class":313},[173,3791,365],{"class":309},[162,3793,3796],{"className":288,"code":3794,"filename":3795,"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,3797,3798,3816,3820,3832,3847,3868],{"__ignoreMap":168},[173,3799,3800,3802,3804,3806,3808,3810,3812,3814],{"class":175,"line":176},[173,3801,521],{"class":298},[173,3803,524],{"class":313},[173,3805,306],{"class":309},[173,3807,536],{"class":313},[173,3809,539],{"class":298},[173,3811,325],{"class":313},[173,3813,649],{"class":328},[173,3815,547],{"class":313},[173,3817,3818],{"class":175,"line":182},[173,3819,186],{"emptyLinePlaceholder":185},[173,3821,3822,3824,3826,3828,3830],{"class":175,"line":189},[173,3823,299],{"class":298},[173,3825,302],{"class":298},[173,3827,306],{"class":305},[173,3829,310],{"class":309},[173,3831,314],{"class":313},[173,3833,3834,3836,3838,3840,3843,3845],{"class":175,"line":195},[173,3835,461],{"class":319},[173,3837,285],{"class":313},[173,3839,325],{"class":313},[173,3841,3842],{"class":328},"content",[173,3844,332],{"class":313},[173,3846,335],{"class":313},[173,3848,3849,3851,3853,3856,3858,3861,3863,3866],{"class":175,"line":201},[173,3850,573],{"class":319},[173,3852,285],{"class":313},[173,3854,3855],{"class":309}," [createPostTool",[173,3857,530],{"class":313},[173,3859,3860],{"class":309}," updatePostTool",[173,3862,530],{"class":313},[173,3864,3865],{"class":309}," deletePostTool]",[173,3867,335],{"class":313},[173,3869,3870,3872],{"class":175,"line":207},[173,3871,362],{"class":313},[173,3873,365],{"class":309},[272,3875,3877],{"id":3876},"_2-versioned-apis","2. Versioned APIs",[150,3879,3880],{},"Create versioned handlers:",[162,3882,3885],{"className":288,"code":3883,"filename":3884,"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,3886,3887,3905,3909,3921,3936,3950,3965,3979],{"__ignoreMap":168},[173,3888,3889,3891,3893,3895,3897,3899,3901,3903],{"class":175,"line":176},[173,3890,521],{"class":298},[173,3892,524],{"class":313},[173,3894,306],{"class":309},[173,3896,536],{"class":313},[173,3898,539],{"class":298},[173,3900,325],{"class":313},[173,3902,649],{"class":328},[173,3904,547],{"class":313},[173,3906,3907],{"class":175,"line":182},[173,3908,186],{"emptyLinePlaceholder":185},[173,3910,3911,3913,3915,3917,3919],{"class":175,"line":189},[173,3912,299],{"class":298},[173,3914,302],{"class":298},[173,3916,306],{"class":305},[173,3918,310],{"class":309},[173,3920,314],{"class":313},[173,3922,3923,3925,3927,3929,3932,3934],{"class":175,"line":195},[173,3924,461],{"class":319},[173,3926,285],{"class":313},[173,3928,325],{"class":313},[173,3930,3931],{"class":328},"api-v1",[173,3933,332],{"class":313},[173,3935,335],{"class":313},[173,3937,3938,3940,3942,3944,3946,3948],{"class":175,"line":201},[173,3939,320],{"class":319},[173,3941,285],{"class":313},[173,3943,325],{"class":313},[173,3945,1085],{"class":328},[173,3947,332],{"class":313},[173,3949,335],{"class":313},[173,3951,3952,3954,3956,3958,3961,3963],{"class":175,"line":207},[173,3953,901],{"class":319},[173,3955,285],{"class":313},[173,3957,325],{"class":313},[173,3959,3960],{"class":328},"\u002Fapi\u002Fv1\u002Fmcp",[173,3962,332],{"class":313},[173,3964,335],{"class":313},[173,3966,3967,3969,3971,3973,3975,3977],{"class":175,"line":213},[173,3968,573],{"class":319},[173,3970,285],{"class":313},[173,3972,1166],{"class":309},[173,3974,1169],{"class":313},[173,3976,1172],{"class":309},[173,3978,335],{"class":313},[173,3980,3981,3983],{"class":175,"line":219},[173,3982,362],{"class":313},[173,3984,365],{"class":309},[162,3986,3989],{"className":288,"code":3987,"filename":3988,"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,3990,3991,4009,4013,4025,4040,4054,4069,4083],{"__ignoreMap":168},[173,3992,3993,3995,3997,3999,4001,4003,4005,4007],{"class":175,"line":176},[173,3994,521],{"class":298},[173,3996,524],{"class":313},[173,3998,306],{"class":309},[173,4000,536],{"class":313},[173,4002,539],{"class":298},[173,4004,325],{"class":313},[173,4006,649],{"class":328},[173,4008,547],{"class":313},[173,4010,4011],{"class":175,"line":182},[173,4012,186],{"emptyLinePlaceholder":185},[173,4014,4015,4017,4019,4021,4023],{"class":175,"line":189},[173,4016,299],{"class":298},[173,4018,302],{"class":298},[173,4020,306],{"class":305},[173,4022,310],{"class":309},[173,4024,314],{"class":313},[173,4026,4027,4029,4031,4033,4036,4038],{"class":175,"line":195},[173,4028,461],{"class":319},[173,4030,285],{"class":313},[173,4032,325],{"class":313},[173,4034,4035],{"class":328},"api-v2",[173,4037,332],{"class":313},[173,4039,335],{"class":313},[173,4041,4042,4044,4046,4048,4050,4052],{"class":175,"line":201},[173,4043,320],{"class":319},[173,4045,285],{"class":313},[173,4047,325],{"class":313},[173,4049,329],{"class":328},[173,4051,332],{"class":313},[173,4053,335],{"class":313},[173,4055,4056,4058,4060,4062,4065,4067],{"class":175,"line":207},[173,4057,901],{"class":319},[173,4059,285],{"class":313},[173,4061,325],{"class":313},[173,4063,4064],{"class":328},"\u002Fapi\u002Fv2\u002Fmcp",[173,4066,332],{"class":313},[173,4068,335],{"class":313},[173,4070,4071,4073,4075,4077,4079,4081],{"class":175,"line":213},[173,4072,573],{"class":319},[173,4074,285],{"class":313},[173,4076,1166],{"class":309},[173,4078,1169],{"class":313},[173,4080,1172],{"class":309},[173,4082,335],{"class":313},[173,4084,4085,4087],{"class":175,"line":219},[173,4086,362],{"class":313},[173,4088,365],{"class":309},[272,4090,4092],{"id":4091},"_3-domain-specific-handlers","3. Domain-Specific Handlers",[150,4094,4095],{},"Organize by domain:",[162,4097,4100],{"className":288,"code":4098,"filename":4099,"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,4101,4102,4120,4124,4136,4151,4172],{"__ignoreMap":168},[173,4103,4104,4106,4108,4110,4112,4114,4116,4118],{"class":175,"line":176},[173,4105,521],{"class":298},[173,4107,524],{"class":313},[173,4109,306],{"class":309},[173,4111,536],{"class":313},[173,4113,539],{"class":298},[173,4115,325],{"class":313},[173,4117,649],{"class":328},[173,4119,547],{"class":313},[173,4121,4122],{"class":175,"line":182},[173,4123,186],{"emptyLinePlaceholder":185},[173,4125,4126,4128,4130,4132,4134],{"class":175,"line":189},[173,4127,299],{"class":298},[173,4129,302],{"class":298},[173,4131,306],{"class":305},[173,4133,310],{"class":309},[173,4135,314],{"class":313},[173,4137,4138,4140,4142,4144,4147,4149],{"class":175,"line":195},[173,4139,461],{"class":319},[173,4141,285],{"class":313},[173,4143,325],{"class":313},[173,4145,4146],{"class":328},"ecommerce",[173,4148,332],{"class":313},[173,4150,335],{"class":313},[173,4152,4153,4155,4157,4160,4162,4165,4167,4170],{"class":175,"line":201},[173,4154,573],{"class":319},[173,4156,285],{"class":313},[173,4158,4159],{"class":309}," [addToCartTool",[173,4161,530],{"class":313},[173,4163,4164],{"class":309}," checkoutTool",[173,4166,530],{"class":313},[173,4168,4169],{"class":309}," getProductsTool]",[173,4171,335],{"class":313},[173,4173,4174,4176],{"class":175,"line":207},[173,4175,362],{"class":313},[173,4177,365],{"class":309},[162,4179,4182],{"className":288,"code":4180,"filename":4181,"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,4183,4184,4202,4206,4218,4233,4249],{"__ignoreMap":168},[173,4185,4186,4188,4190,4192,4194,4196,4198,4200],{"class":175,"line":176},[173,4187,521],{"class":298},[173,4189,524],{"class":313},[173,4191,306],{"class":309},[173,4193,536],{"class":313},[173,4195,539],{"class":298},[173,4197,325],{"class":313},[173,4199,649],{"class":328},[173,4201,547],{"class":313},[173,4203,4204],{"class":175,"line":182},[173,4205,186],{"emptyLinePlaceholder":185},[173,4207,4208,4210,4212,4214,4216],{"class":175,"line":189},[173,4209,299],{"class":298},[173,4211,302],{"class":298},[173,4213,306],{"class":305},[173,4215,310],{"class":309},[173,4217,314],{"class":313},[173,4219,4220,4222,4224,4226,4229,4231],{"class":175,"line":195},[173,4221,461],{"class":319},[173,4223,285],{"class":313},[173,4225,325],{"class":313},[173,4227,4228],{"class":328},"analytics",[173,4230,332],{"class":313},[173,4232,335],{"class":313},[173,4234,4235,4237,4239,4242,4244,4247],{"class":175,"line":201},[173,4236,573],{"class":319},[173,4238,285],{"class":313},[173,4240,4241],{"class":309}," [getStatsTool",[173,4243,530],{"class":313},[173,4245,4246],{"class":309}," generateReportTool]",[173,4248,335],{"class":313},[173,4250,4251,4253],{"class":175,"line":207},[173,4252,362],{"class":313},[173,4254,365],{"class":309},[145,4256,4258],{"id":4257},"sharing-tools-between-handlers","Sharing Tools Between Handlers",[150,4260,4261],{},"You can share tool definitions between handlers by exporting them from a separate file:",[162,4263,4266],{"className":288,"code":4264,"filename":4265,"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,4267,4268,4286,4304,4308,4326,4341,4356,4364,4381,4385,4417],{"__ignoreMap":168},[173,4269,4270,4272,4274,4276,4278,4280,4282,4284],{"class":175,"line":176},[173,4271,521],{"class":298},[173,4273,524],{"class":313},[173,4275,616],{"class":309},[173,4277,536],{"class":313},[173,4279,539],{"class":298},[173,4281,325],{"class":313},[173,4283,625],{"class":328},[173,4285,547],{"class":313},[173,4287,4288,4290,4292,4294,4296,4298,4300,4302],{"class":175,"line":182},[173,4289,521],{"class":298},[173,4291,524],{"class":313},[173,4293,636],{"class":309},[173,4295,536],{"class":313},[173,4297,539],{"class":298},[173,4299,325],{"class":313},[173,4301,649],{"class":328},[173,4303,547],{"class":313},[173,4305,4306],{"class":175,"line":189},[173,4307,186],{"emptyLinePlaceholder":185},[173,4309,4310,4312,4315,4318,4320,4322,4324],{"class":175,"line":195},[173,4311,299],{"class":298},[173,4313,4314],{"class":660}," const",[173,4316,4317],{"class":309}," sharedTool ",[173,4319,667],{"class":313},[173,4321,636],{"class":305},[173,4323,310],{"class":309},[173,4325,314],{"class":313},[173,4327,4328,4330,4332,4334,4337,4339],{"class":175,"line":201},[173,4329,461],{"class":319},[173,4331,285],{"class":313},[173,4333,325],{"class":313},[173,4335,4336],{"class":328},"shared-tool",[173,4338,332],{"class":313},[173,4340,335],{"class":313},[173,4342,4343,4345,4347,4349,4352,4354],{"class":175,"line":207},[173,4344,709],{"class":319},[173,4346,285],{"class":313},[173,4348,325],{"class":313},[173,4350,4351],{"class":328},"A shared tool",[173,4353,332],{"class":313},[173,4355,335],{"class":313},[173,4357,4358,4360,4362],{"class":175,"line":213},[173,4359,725],{"class":319},[173,4361,285],{"class":313},[173,4363,730],{"class":313},[173,4365,4366,4369,4371,4373,4375,4377,4379],{"class":175,"line":219},[173,4367,4368],{"class":319},"    input",[173,4370,285],{"class":313},[173,4372,616],{"class":309},[173,4374,434],{"class":313},[173,4376,744],{"class":305},[173,4378,747],{"class":309},[173,4380,335],{"class":313},[173,4382,4383],{"class":175,"line":225},[173,4384,770],{"class":313},[173,4386,4387,4389,4391,4393,4395,4398,4400,4402,4404,4407,4409,4412,4415],{"class":175,"line":231},[173,4388,775],{"class":305},[173,4390,285],{"class":313},[173,4392,780],{"class":660},[173,4394,783],{"class":313},[173,4396,4397],{"class":786}," input",[173,4399,790],{"class":313},[173,4401,793],{"class":660},[173,4403,2707],{"class":313},[173,4405,4406],{"class":328},"Shared: ",[173,4408,2713],{"class":313},[173,4410,4411],{"class":309},"input",[173,4413,4414],{"class":313},"}`",[173,4416,335],{"class":313},[173,4418,4419,4421],{"class":175,"line":236},[173,4420,362],{"class":313},[173,4422,365],{"class":309},[162,4424,4427],{"className":288,"code":4425,"filename":4426,"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,4428,4429,4449,4467,4471,4483,4498,4509],{"__ignoreMap":168},[173,4430,4431,4433,4435,4438,4440,4442,4444,4447],{"class":175,"line":176},[173,4432,521],{"class":298},[173,4434,524],{"class":313},[173,4436,4437],{"class":309}," sharedTool",[173,4439,536],{"class":313},[173,4441,539],{"class":298},[173,4443,325],{"class":313},[173,4445,4446],{"class":328},".\u002Fshared-tools",[173,4448,547],{"class":313},[173,4450,4451,4453,4455,4457,4459,4461,4463,4465],{"class":175,"line":182},[173,4452,521],{"class":298},[173,4454,524],{"class":313},[173,4456,306],{"class":309},[173,4458,536],{"class":313},[173,4460,539],{"class":298},[173,4462,325],{"class":313},[173,4464,649],{"class":328},[173,4466,547],{"class":313},[173,4468,4469],{"class":175,"line":189},[173,4470,186],{"emptyLinePlaceholder":185},[173,4472,4473,4475,4477,4479,4481],{"class":175,"line":195},[173,4474,299],{"class":298},[173,4476,302],{"class":298},[173,4478,306],{"class":305},[173,4480,310],{"class":309},[173,4482,314],{"class":313},[173,4484,4485,4487,4489,4491,4494,4496],{"class":175,"line":201},[173,4486,461],{"class":319},[173,4488,285],{"class":313},[173,4490,325],{"class":313},[173,4492,4493],{"class":328},"handler1",[173,4495,332],{"class":313},[173,4497,335],{"class":313},[173,4499,4500,4502,4504,4507],{"class":175,"line":207},[173,4501,573],{"class":319},[173,4503,285],{"class":313},[173,4505,4506],{"class":309}," [sharedTool]",[173,4508,335],{"class":313},[173,4510,4511,4513],{"class":175,"line":213},[173,4512,362],{"class":313},[173,4514,365],{"class":309},[162,4516,4519],{"className":288,"code":4517,"filename":4518,"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,4520,4521,4539,4557,4561,4573,4588,4598],{"__ignoreMap":168},[173,4522,4523,4525,4527,4529,4531,4533,4535,4537],{"class":175,"line":176},[173,4524,521],{"class":298},[173,4526,524],{"class":313},[173,4528,4437],{"class":309},[173,4530,536],{"class":313},[173,4532,539],{"class":298},[173,4534,325],{"class":313},[173,4536,4446],{"class":328},[173,4538,547],{"class":313},[173,4540,4541,4543,4545,4547,4549,4551,4553,4555],{"class":175,"line":182},[173,4542,521],{"class":298},[173,4544,524],{"class":313},[173,4546,306],{"class":309},[173,4548,536],{"class":313},[173,4550,539],{"class":298},[173,4552,325],{"class":313},[173,4554,649],{"class":328},[173,4556,547],{"class":313},[173,4558,4559],{"class":175,"line":189},[173,4560,186],{"emptyLinePlaceholder":185},[173,4562,4563,4565,4567,4569,4571],{"class":175,"line":195},[173,4564,299],{"class":298},[173,4566,302],{"class":298},[173,4568,306],{"class":305},[173,4570,310],{"class":309},[173,4572,314],{"class":313},[173,4574,4575,4577,4579,4581,4584,4586],{"class":175,"line":201},[173,4576,461],{"class":319},[173,4578,285],{"class":313},[173,4580,325],{"class":313},[173,4582,4583],{"class":328},"handler2",[173,4585,332],{"class":313},[173,4587,335],{"class":313},[173,4589,4590,4592,4594,4596],{"class":175,"line":207},[173,4591,573],{"class":319},[173,4593,285],{"class":313},[173,4595,4506],{"class":309},[173,4597,335],{"class":313},[173,4599,4600,4602],{"class":175,"line":213},[173,4601,362],{"class":313},[173,4603,365],{"class":309},[145,4605,4607],{"id":4606},"file-organization","File Organization",[150,4609,4610,4611,4613],{},"Organize handlers in your ",[170,4612,269],{}," directory:",[162,4615,4618],{"className":4616,"code":4617,"language":2194},[2192],"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,4619,4617],{"__ignoreMap":168},[414,4621,418,4622,4624],{"color":1704,"icon":129},[170,4623,281],{}," file is special - it overrides the default handler configuration instead of creating a new custom handler.",[145,4626,4628],{"id":4627},"best-practices","Best Practices",[4630,4631,4632,4638,4644,4650,4656],"ol",{},[247,4633,4634,4637],{},[154,4635,4636],{},"Use descriptive names",": Make handler names clear and specific",[247,4639,4640,4643],{},[154,4641,4642],{},"Group related functionality",": Put related tools\u002Fresources together",[247,4645,4646,4649],{},[154,4647,4648],{},"Version your handlers",": Use semantic versioning for handler versions",[247,4651,4652,4655],{},[154,4653,4654],{},"Document your handlers",": Add comments explaining what each handler does",[247,4657,4658,4661],{},[154,4659,4660],{},"Keep handlers focused",": Each handler should have a clear, single purpose",[145,4663,4665],{"id":4664},"next-steps","Next Steps",[244,4667,4668,4673,4678,4683,4688,4693],{},[247,4669,4670,4672],{},[409,4671,106],{"href":107}," - Orchestrate tools with LLM-generated JavaScript",[247,4674,4675,4677],{},[409,4676,76],{"href":77}," - Add authentication and logging",[247,4679,4680,4682],{},[409,4681,101],{"href":102}," - Conditionally register definitions",[247,4684,4685,4687],{},[409,4686,20],{"href":21}," - Configure the default handler",[247,4689,4690,4692],{},[409,4691,46],{"href":47}," - Create tools for your handlers",[247,4694,4695,4697],{},[409,4696,111],{"href":127}," - See more handler examples",[4699,4700,4701],"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":4703},[4704,4705,4708,4709,4710,4728,4729,4730,4731,4732,4737,4738,4739,4740],{"id":147,"depth":182,"text":148},{"id":258,"depth":182,"text":259,"children":4706},[4707],{"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":4711},[4712,4714,4716,4718,4720,4722,4724,4726],{"id":1242,"depth":189,"text":4713},"name (required)",{"id":1319,"depth":189,"text":4715},"version (optional)",{"id":1401,"depth":189,"text":4717},"route (optional)",{"id":1504,"depth":189,"text":4719},"browserRedirect (optional)",{"id":1588,"depth":189,"text":4721},"middleware (optional)",{"id":1712,"depth":189,"text":4723},"experimental_codeMode (optional)",{"id":1828,"depth":189,"text":4725},"tools (optional)",{"id":2199,"depth":189,"text":4727},"prompts (optional)",{"id":2333,"depth":182,"text":2334},{"id":3300,"depth":182,"text":3301},{"id":3462,"depth":182,"text":3463},{"id":3585,"depth":182,"text":3586},{"id":3703,"depth":182,"text":3704,"children":4733},[4734,4735,4736],{"id":3707,"depth":189,"text":3708},{"id":3876,"depth":189,"text":3877},{"id":4091,"depth":189,"text":4092},{"id":4257,"depth":182,"text":4258},{"id":4606,"depth":182,"text":4607},{"id":4627,"depth":182,"text":4628},{"id":4664,"depth":182,"text":4665},"Create custom MCP endpoints with their own tools, resources, and prompts.","md",null,{},{"icon":64},{"title":61,"description":4747},"Create custom MCP endpoints with defineMcpHandler for multiple MCP servers in one application.","9yT2gBP66WVAMHgJN4kxr2qCorZOJNVaqfI52V-ReP8",[4750,4752],{"title":56,"path":57,"stem":58,"description":4751,"icon":59,"children":-1},"Create reusable prompts for AI assistants with optional arguments.",{"title":71,"path":72,"stem":73,"description":4753,"icon":74,"children":-1},"Customize where the module looks for MCP definitions.",1774115717459]