[{"data":1,"prerenderedAt":3436},["ShallowReactive",2],{"navigation_docs":3,"-advanced-dynamic-definitions":139,"-advanced-dynamic-definitions-surround":3431},[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":101,"body":141,"description":3422,"extension":3423,"links":3424,"meta":3425,"navigation":3426,"path":102,"seo":3427,"stem":103,"__hash__":3430},"docs\u002F3.advanced\u002F7.dynamic-definitions.md",{"type":142,"value":143,"toc":3400},"minimark",[144,149,163,166,189,200,229,236,246,250,568,571,779,782,1058,1062,1067,1246,1324,1328,1346,1663,1666,1678,1682,1690,1826,1942,1955,1959,1971,1974,1985,1988,1992,2009,2018,2022,2134,2138,2493,2496,2500,2506,3061,3065,3074,3227,3238,3242,3265,3273,3275,3278,3375,3379,3396],[145,146,148],"h2",{"id":147},"overview","Overview",[150,151,152,153,157,158,162],"p",{},"By default, every tool, resource, and prompt defined in ",[154,155,156],"code",{},"server\u002Fmcp\u002F"," is registered for all clients. Dynamic definitions let you control ",[159,160,161],"strong",{},"which definitions are visible"," based on request context — for example, showing admin-only tools to authenticated admins while hiding them from regular users.",[150,164,165],{},"There are two complementary mechanisms:",[167,168,169,179],"ol",{},[170,171,172,178],"li",{},[159,173,174,177],{},[154,175,176],{},"enabled"," guard"," — A per-definition callback that controls visibility",[170,180,181,184,185,188],{},[159,182,183],{},"Dynamic handler definitions"," — A function in ",[154,186,187],{},"defineMcpHandler"," that returns definitions based on context",[150,190,191,192,195,196,199],{},"Both mechanisms run ",[159,193,194],{},"after middleware",", so ",[154,197,198],{},"event.context"," (e.g. authentication data) is available.",[201,202,205,206,209,210,212,213,216,217,220,221,224,225,228],"callout",{"color":203,"icon":204},"info","i-lucide-info","If you only need to change tool\u002Fprompt ",[159,207,208],{},"behavior"," (not visibility), you can already do that by reading ",[154,211,198],{}," inside your handler via ",[154,214,215],{},"useEvent()",". Dynamic definitions are for controlling which definitions appear in ",[154,218,219],{},"tools\u002Flist",", ",[154,222,223],{},"prompts\u002Flist",", and ",[154,226,227],{},"resources\u002Flist",".",[145,230,232,233,235],{"id":231},"the-enabled-guard","The ",[154,234,176],{}," Guard",[150,237,238,239,241,242,245],{},"Add an ",[154,240,176],{}," callback to any tool, resource, or prompt definition. When the callback returns ",[154,243,244],{},"false",", the definition is hidden from the client.",[247,248,46],"h3",{"id":249},"tools",[251,252,258],"pre",{"className":253,"code":254,"filename":255,"language":256,"meta":257,"style":257},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  name: 'delete-all',\n  description: 'Delete all records (admin only)',\n  inputSchema: {\n    confirm: z.boolean().describe('Confirm deletion'),\n  },\n  enabled: event => event.context.user?.role === 'admin',\n  handler: async ({ confirm }) => {\n    if (!confirm) return 'Deletion cancelled'\n    await deleteAllRecords()\n    return 'All records deleted'\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fdelete-all.ts","typescript","",[154,259,260,293,314,321,339,360,377,388,425,431,477,501,529,541,554,559],{"__ignoreMap":257},[261,262,265,269,273,277,280,283,286,290],"span",{"class":263,"line":264},"line",1,[261,266,268],{"class":267},"s7zQu","import",[261,270,272],{"class":271},"sMK4o"," {",[261,274,276],{"class":275},"sTEyZ"," z",[261,278,279],{"class":271}," }",[261,281,282],{"class":267}," from",[261,284,285],{"class":271}," '",[261,287,289],{"class":288},"sfazB","zod",[261,291,292],{"class":271},"'\n",[261,294,296,298,300,303,305,307,309,312],{"class":263,"line":295},2,[261,297,268],{"class":267},[261,299,272],{"class":271},[261,301,302],{"class":275}," defineMcpTool",[261,304,279],{"class":271},[261,306,282],{"class":267},[261,308,285],{"class":271},[261,310,311],{"class":288},"@nuxtjs\u002Fmcp-toolkit\u002Fserver",[261,313,292],{"class":271},[261,315,317],{"class":263,"line":316},3,[261,318,320],{"emptyLinePlaceholder":319},true,"\n",[261,322,324,327,330,333,336],{"class":263,"line":323},4,[261,325,326],{"class":267},"export",[261,328,329],{"class":267}," default",[261,331,302],{"class":332},"s2Zo4",[261,334,335],{"class":275},"(",[261,337,338],{"class":271},"{\n",[261,340,342,346,349,351,354,357],{"class":263,"line":341},5,[261,343,345],{"class":344},"swJcz","  name",[261,347,348],{"class":271},":",[261,350,285],{"class":271},[261,352,353],{"class":288},"delete-all",[261,355,356],{"class":271},"'",[261,358,359],{"class":271},",\n",[261,361,363,366,368,370,373,375],{"class":263,"line":362},6,[261,364,365],{"class":344},"  description",[261,367,348],{"class":271},[261,369,285],{"class":271},[261,371,372],{"class":288},"Delete all records (admin only)",[261,374,356],{"class":271},[261,376,359],{"class":271},[261,378,380,383,385],{"class":263,"line":379},7,[261,381,382],{"class":344},"  inputSchema",[261,384,348],{"class":271},[261,386,387],{"class":271}," {\n",[261,389,391,394,396,398,400,403,406,408,411,413,415,418,420,423],{"class":263,"line":390},8,[261,392,393],{"class":344},"    confirm",[261,395,348],{"class":271},[261,397,276],{"class":275},[261,399,228],{"class":271},[261,401,402],{"class":332},"boolean",[261,404,405],{"class":275},"()",[261,407,228],{"class":271},[261,409,410],{"class":332},"describe",[261,412,335],{"class":275},[261,414,356],{"class":271},[261,416,417],{"class":288},"Confirm deletion",[261,419,356],{"class":271},[261,421,422],{"class":275},")",[261,424,359],{"class":271},[261,426,428],{"class":263,"line":427},9,[261,429,430],{"class":271},"  },\n",[261,432,434,437,439,443,447,449,451,454,456,459,462,465,468,470,473,475],{"class":263,"line":433},10,[261,435,436],{"class":332},"  enabled",[261,438,348],{"class":271},[261,440,442],{"class":441},"sHdIc"," event",[261,444,446],{"class":445},"spNyl"," =>",[261,448,442],{"class":275},[261,450,228],{"class":271},[261,452,453],{"class":275},"context",[261,455,228],{"class":271},[261,457,458],{"class":275},"user",[261,460,461],{"class":271},"?.",[261,463,464],{"class":275},"role ",[261,466,467],{"class":271},"===",[261,469,285],{"class":271},[261,471,472],{"class":288},"admin",[261,474,356],{"class":271},[261,476,359],{"class":271},[261,478,480,483,485,488,491,494,497,499],{"class":263,"line":479},11,[261,481,482],{"class":332},"  handler",[261,484,348],{"class":271},[261,486,487],{"class":445}," async",[261,489,490],{"class":271}," ({",[261,492,493],{"class":441}," confirm",[261,495,496],{"class":271}," })",[261,498,446],{"class":445},[261,500,387],{"class":271},[261,502,504,507,510,513,516,519,522,524,527],{"class":263,"line":503},12,[261,505,506],{"class":267},"    if",[261,508,509],{"class":344}," (",[261,511,512],{"class":271},"!",[261,514,515],{"class":275},"confirm",[261,517,518],{"class":344},") ",[261,520,521],{"class":267},"return",[261,523,285],{"class":271},[261,525,526],{"class":288},"Deletion cancelled",[261,528,292],{"class":271},[261,530,532,535,538],{"class":263,"line":531},13,[261,533,534],{"class":267},"    await",[261,536,537],{"class":332}," deleteAllRecords",[261,539,540],{"class":344},"()\n",[261,542,544,547,549,552],{"class":263,"line":543},14,[261,545,546],{"class":267},"    return",[261,548,285],{"class":271},[261,550,551],{"class":288},"All records deleted",[261,553,292],{"class":271},[261,555,557],{"class":263,"line":556},15,[261,558,430],{"class":271},[261,560,562,565],{"class":263,"line":561},16,[261,563,564],{"class":271},"}",[261,566,567],{"class":275},")\n",[247,569,51],{"id":570},"resources",[251,572,575],{"className":253,"code":573,"filename":574,"language":256,"meta":257,"style":257},"import { defineMcpResource } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpResource({\n  name: 'internal-logs',\n  description: 'Application logs (admin only)',\n  uri: 'app:\u002F\u002Flogs',\n  enabled: event => event.context.user?.role === 'admin',\n  handler: async (uri) => ({\n    contents: [{ uri: uri.toString(), text: await readLogs() }],\n  }),\n})\n","server\u002Fmcp\u002Fresources\u002Finternal-logs.ts",[154,576,577,596,600,612,627,642,658,692,713,764,773],{"__ignoreMap":257},[261,578,579,581,583,586,588,590,592,594],{"class":263,"line":264},[261,580,268],{"class":267},[261,582,272],{"class":271},[261,584,585],{"class":275}," defineMcpResource",[261,587,279],{"class":271},[261,589,282],{"class":267},[261,591,285],{"class":271},[261,593,311],{"class":288},[261,595,292],{"class":271},[261,597,598],{"class":263,"line":295},[261,599,320],{"emptyLinePlaceholder":319},[261,601,602,604,606,608,610],{"class":263,"line":316},[261,603,326],{"class":267},[261,605,329],{"class":267},[261,607,585],{"class":332},[261,609,335],{"class":275},[261,611,338],{"class":271},[261,613,614,616,618,620,623,625],{"class":263,"line":323},[261,615,345],{"class":344},[261,617,348],{"class":271},[261,619,285],{"class":271},[261,621,622],{"class":288},"internal-logs",[261,624,356],{"class":271},[261,626,359],{"class":271},[261,628,629,631,633,635,638,640],{"class":263,"line":341},[261,630,365],{"class":344},[261,632,348],{"class":271},[261,634,285],{"class":271},[261,636,637],{"class":288},"Application logs (admin only)",[261,639,356],{"class":271},[261,641,359],{"class":271},[261,643,644,647,649,651,654,656],{"class":263,"line":362},[261,645,646],{"class":344},"  uri",[261,648,348],{"class":271},[261,650,285],{"class":271},[261,652,653],{"class":288},"app:\u002F\u002Flogs",[261,655,356],{"class":271},[261,657,359],{"class":271},[261,659,660,662,664,666,668,670,672,674,676,678,680,682,684,686,688,690],{"class":263,"line":379},[261,661,436],{"class":332},[261,663,348],{"class":271},[261,665,442],{"class":441},[261,667,446],{"class":445},[261,669,442],{"class":275},[261,671,228],{"class":271},[261,673,453],{"class":275},[261,675,228],{"class":271},[261,677,458],{"class":275},[261,679,461],{"class":271},[261,681,464],{"class":275},[261,683,467],{"class":271},[261,685,285],{"class":271},[261,687,472],{"class":288},[261,689,356],{"class":271},[261,691,359],{"class":271},[261,693,694,696,698,700,702,705,707,709,711],{"class":263,"line":390},[261,695,482],{"class":332},[261,697,348],{"class":271},[261,699,487],{"class":445},[261,701,509],{"class":271},[261,703,704],{"class":441},"uri",[261,706,422],{"class":271},[261,708,446],{"class":445},[261,710,509],{"class":275},[261,712,338],{"class":271},[261,714,715,718,720,723,726,729,731,733,735,738,740,743,746,748,751,754,757,759,762],{"class":263,"line":427},[261,716,717],{"class":344},"    contents",[261,719,348],{"class":271},[261,721,722],{"class":275}," [",[261,724,725],{"class":271},"{",[261,727,728],{"class":344}," uri",[261,730,348],{"class":271},[261,732,728],{"class":275},[261,734,228],{"class":271},[261,736,737],{"class":332},"toString",[261,739,405],{"class":275},[261,741,742],{"class":271},",",[261,744,745],{"class":344}," text",[261,747,348],{"class":271},[261,749,750],{"class":267}," await",[261,752,753],{"class":332}," readLogs",[261,755,756],{"class":275},"() ",[261,758,564],{"class":271},[261,760,761],{"class":275},"]",[261,763,359],{"class":271},[261,765,766,769,771],{"class":263,"line":433},[261,767,768],{"class":271},"  }",[261,770,422],{"class":275},[261,772,359],{"class":271},[261,774,775,777],{"class":263,"line":479},[261,776,564],{"class":271},[261,778,567],{"class":275},[247,780,56],{"id":781},"prompts",[251,783,786],{"className":253,"code":784,"filename":785,"language":256,"meta":257,"style":257},"import { useEvent } from 'h3'\nimport { defineMcpPrompt } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpPrompt({\n  name: 'onboarding',\n  description: 'Personalized onboarding (authenticated users only)',\n  enabled: event => !!event.context.user,\n  handler: async () => {\n    const event = useEvent()\n    return {\n      messages: [{\n        role: 'user',\n        content: {\n          type: 'text',\n          text: `Welcome ${event.context.user.name}! Here's how to get started...`,\n        },\n      }],\n    }\n  },\n})\n","server\u002Fmcp\u002Fprompts\u002Fonboarding.ts",[154,787,788,807,826,830,842,857,872,898,913,927,933,944,959,968,984,1025,1030,1040,1046,1051],{"__ignoreMap":257},[261,789,790,792,794,797,799,801,803,805],{"class":263,"line":264},[261,791,268],{"class":267},[261,793,272],{"class":271},[261,795,796],{"class":275}," useEvent",[261,798,279],{"class":271},[261,800,282],{"class":267},[261,802,285],{"class":271},[261,804,247],{"class":288},[261,806,292],{"class":271},[261,808,809,811,813,816,818,820,822,824],{"class":263,"line":295},[261,810,268],{"class":267},[261,812,272],{"class":271},[261,814,815],{"class":275}," defineMcpPrompt",[261,817,279],{"class":271},[261,819,282],{"class":267},[261,821,285],{"class":271},[261,823,311],{"class":288},[261,825,292],{"class":271},[261,827,828],{"class":263,"line":316},[261,829,320],{"emptyLinePlaceholder":319},[261,831,832,834,836,838,840],{"class":263,"line":323},[261,833,326],{"class":267},[261,835,329],{"class":267},[261,837,815],{"class":332},[261,839,335],{"class":275},[261,841,338],{"class":271},[261,843,844,846,848,850,853,855],{"class":263,"line":341},[261,845,345],{"class":344},[261,847,348],{"class":271},[261,849,285],{"class":271},[261,851,852],{"class":288},"onboarding",[261,854,356],{"class":271},[261,856,359],{"class":271},[261,858,859,861,863,865,868,870],{"class":263,"line":362},[261,860,365],{"class":344},[261,862,348],{"class":271},[261,864,285],{"class":271},[261,866,867],{"class":288},"Personalized onboarding (authenticated users only)",[261,869,356],{"class":271},[261,871,359],{"class":271},[261,873,874,876,878,880,882,885,888,890,892,894,896],{"class":263,"line":379},[261,875,436],{"class":332},[261,877,348],{"class":271},[261,879,442],{"class":441},[261,881,446],{"class":445},[261,883,884],{"class":271}," !!",[261,886,887],{"class":275},"event",[261,889,228],{"class":271},[261,891,453],{"class":275},[261,893,228],{"class":271},[261,895,458],{"class":275},[261,897,359],{"class":271},[261,899,900,902,904,906,909,911],{"class":263,"line":390},[261,901,482],{"class":332},[261,903,348],{"class":271},[261,905,487],{"class":445},[261,907,908],{"class":271}," ()",[261,910,446],{"class":445},[261,912,387],{"class":271},[261,914,915,918,920,923,925],{"class":263,"line":427},[261,916,917],{"class":445},"    const",[261,919,442],{"class":275},[261,921,922],{"class":271}," =",[261,924,796],{"class":332},[261,926,540],{"class":344},[261,928,929,931],{"class":263,"line":433},[261,930,546],{"class":267},[261,932,387],{"class":271},[261,934,935,938,940,942],{"class":263,"line":479},[261,936,937],{"class":344},"      messages",[261,939,348],{"class":271},[261,941,722],{"class":344},[261,943,338],{"class":271},[261,945,946,949,951,953,955,957],{"class":263,"line":503},[261,947,948],{"class":344},"        role",[261,950,348],{"class":271},[261,952,285],{"class":271},[261,954,458],{"class":288},[261,956,356],{"class":271},[261,958,359],{"class":271},[261,960,961,964,966],{"class":263,"line":531},[261,962,963],{"class":344},"        content",[261,965,348],{"class":271},[261,967,387],{"class":271},[261,969,970,973,975,977,980,982],{"class":263,"line":543},[261,971,972],{"class":344},"          type",[261,974,348],{"class":271},[261,976,285],{"class":271},[261,978,979],{"class":288},"text",[261,981,356],{"class":271},[261,983,359],{"class":271},[261,985,986,989,991,994,997,1000,1002,1004,1006,1008,1010,1012,1015,1017,1020,1023],{"class":263,"line":556},[261,987,988],{"class":344},"          text",[261,990,348],{"class":271},[261,992,993],{"class":271}," `",[261,995,996],{"class":288},"Welcome ",[261,998,999],{"class":271},"${",[261,1001,887],{"class":275},[261,1003,228],{"class":271},[261,1005,453],{"class":275},[261,1007,228],{"class":271},[261,1009,458],{"class":275},[261,1011,228],{"class":271},[261,1013,1014],{"class":275},"name",[261,1016,564],{"class":271},[261,1018,1019],{"class":288},"! Here's how to get started...",[261,1021,1022],{"class":271},"`",[261,1024,359],{"class":271},[261,1026,1027],{"class":263,"line":561},[261,1028,1029],{"class":271},"        },\n",[261,1031,1033,1036,1038],{"class":263,"line":1032},17,[261,1034,1035],{"class":271},"      }",[261,1037,761],{"class":344},[261,1039,359],{"class":271},[261,1041,1043],{"class":263,"line":1042},18,[261,1044,1045],{"class":271},"    }\n",[261,1047,1049],{"class":263,"line":1048},19,[261,1050,430],{"class":271},[261,1052,1054,1056],{"class":263,"line":1053},20,[261,1055,564],{"class":271},[261,1057,567],{"class":275},[247,1059,1061],{"id":1060},"middleware-setup","Middleware Setup",[150,1063,232,1064,1066],{},[154,1065,176],{}," guard runs after middleware, so set up your auth context in middleware:",[251,1068,1071],{"className":253,"code":1069,"filename":1070,"language":256,"meta":257,"style":257},"import { getHeader } from 'h3'\nimport { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpHandler({\n  middleware: async (event) => {\n    const token = getHeader(event, 'authorization')?.replace('Bearer ', '')\n    if (token) {\n      event.context.user = await verifyToken(token)\n    }\n  },\n})\n","server\u002Fmcp\u002Findex.ts",[154,1072,1073,1092,1111,1115,1127,1146,1193,1206,1232,1236,1240],{"__ignoreMap":257},[261,1074,1075,1077,1079,1082,1084,1086,1088,1090],{"class":263,"line":264},[261,1076,268],{"class":267},[261,1078,272],{"class":271},[261,1080,1081],{"class":275}," getHeader",[261,1083,279],{"class":271},[261,1085,282],{"class":267},[261,1087,285],{"class":271},[261,1089,247],{"class":288},[261,1091,292],{"class":271},[261,1093,1094,1096,1098,1101,1103,1105,1107,1109],{"class":263,"line":295},[261,1095,268],{"class":267},[261,1097,272],{"class":271},[261,1099,1100],{"class":275}," defineMcpHandler",[261,1102,279],{"class":271},[261,1104,282],{"class":267},[261,1106,285],{"class":271},[261,1108,311],{"class":288},[261,1110,292],{"class":271},[261,1112,1113],{"class":263,"line":316},[261,1114,320],{"emptyLinePlaceholder":319},[261,1116,1117,1119,1121,1123,1125],{"class":263,"line":323},[261,1118,326],{"class":267},[261,1120,329],{"class":267},[261,1122,1100],{"class":332},[261,1124,335],{"class":275},[261,1126,338],{"class":271},[261,1128,1129,1132,1134,1136,1138,1140,1142,1144],{"class":263,"line":341},[261,1130,1131],{"class":332},"  middleware",[261,1133,348],{"class":271},[261,1135,487],{"class":445},[261,1137,509],{"class":271},[261,1139,887],{"class":441},[261,1141,422],{"class":271},[261,1143,446],{"class":445},[261,1145,387],{"class":271},[261,1147,1148,1150,1153,1155,1157,1159,1161,1163,1165,1168,1170,1172,1174,1177,1179,1181,1184,1186,1188,1191],{"class":263,"line":362},[261,1149,917],{"class":445},[261,1151,1152],{"class":275}," token",[261,1154,922],{"class":271},[261,1156,1081],{"class":332},[261,1158,335],{"class":344},[261,1160,887],{"class":275},[261,1162,742],{"class":271},[261,1164,285],{"class":271},[261,1166,1167],{"class":288},"authorization",[261,1169,356],{"class":271},[261,1171,422],{"class":344},[261,1173,461],{"class":271},[261,1175,1176],{"class":332},"replace",[261,1178,335],{"class":344},[261,1180,356],{"class":271},[261,1182,1183],{"class":288},"Bearer ",[261,1185,356],{"class":271},[261,1187,742],{"class":271},[261,1189,1190],{"class":271}," ''",[261,1192,567],{"class":344},[261,1194,1195,1197,1199,1202,1204],{"class":263,"line":379},[261,1196,506],{"class":267},[261,1198,509],{"class":344},[261,1200,1201],{"class":275},"token",[261,1203,518],{"class":344},[261,1205,338],{"class":271},[261,1207,1208,1211,1213,1215,1217,1219,1221,1223,1226,1228,1230],{"class":263,"line":390},[261,1209,1210],{"class":275},"      event",[261,1212,228],{"class":271},[261,1214,453],{"class":275},[261,1216,228],{"class":271},[261,1218,458],{"class":275},[261,1220,922],{"class":271},[261,1222,750],{"class":267},[261,1224,1225],{"class":332}," verifyToken",[261,1227,335],{"class":344},[261,1229,1201],{"class":275},[261,1231,567],{"class":344},[261,1233,1234],{"class":263,"line":427},[261,1235,1045],{"class":271},[261,1237,1238],{"class":263,"line":433},[261,1239,430],{"class":271},[261,1241,1242,1244],{"class":263,"line":479},[261,1243,564],{"class":271},[261,1245,567],{"class":275},[201,1247,1249,1259],{"color":1248,"icon":129},"primary",[150,1250,1251,1252,1254,1255,1258],{},"To use ",[154,1253,215],{}," inside handlers, enable ",[154,1256,1257],{},"asyncContext"," in your Nuxt config:",[251,1260,1263],{"className":253,"code":1261,"filename":1262,"language":256,"meta":257,"style":257},"export default defineNuxtConfig({\n  nitro: {\n    experimental: {\n      asyncContext: true,\n    },\n  },\n})\n","nuxt.config.ts",[154,1264,1265,1278,1287,1296,1309,1314,1318],{"__ignoreMap":257},[261,1266,1267,1269,1271,1274,1276],{"class":263,"line":264},[261,1268,326],{"class":267},[261,1270,329],{"class":267},[261,1272,1273],{"class":332}," defineNuxtConfig",[261,1275,335],{"class":275},[261,1277,338],{"class":271},[261,1279,1280,1283,1285],{"class":263,"line":295},[261,1281,1282],{"class":344},"  nitro",[261,1284,348],{"class":271},[261,1286,387],{"class":271},[261,1288,1289,1292,1294],{"class":263,"line":316},[261,1290,1291],{"class":344},"    experimental",[261,1293,348],{"class":271},[261,1295,387],{"class":271},[261,1297,1298,1301,1303,1307],{"class":263,"line":323},[261,1299,1300],{"class":344},"      asyncContext",[261,1302,348],{"class":271},[261,1304,1306],{"class":1305},"sfNiH"," true",[261,1308,359],{"class":271},[261,1310,1311],{"class":263,"line":341},[261,1312,1313],{"class":271},"    },\n",[261,1315,1316],{"class":263,"line":362},[261,1317,430],{"class":271},[261,1319,1320,1322],{"class":263,"line":379},[261,1321,564],{"class":271},[261,1323,567],{"class":275},[145,1325,1327],{"id":1326},"dynamic-handler-definitions","Dynamic Handler Definitions",[150,1329,1330,1331,1334,1335,220,1337,1339,1340,1342,1343,1345],{},"For more control, pass a ",[159,1332,1333],{},"function"," as ",[154,1336,249],{},[154,1338,570],{},", or ",[154,1341,781],{}," in ",[154,1344,187],{},". The function receives the H3 event and returns an array of definitions.",[251,1347,1349],{"className":253,"code":1348,"filename":1070,"language":256,"meta":257,"style":257},"import { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\nimport { adminTools } from '.\u002Fadmin-tools'\nimport { publicTools } from '.\u002Fpublic-tools'\n\nexport default defineMcpHandler({\n  middleware: async (event) => {\n    event.context.user = await getUser(event)\n  },\n  tools: async (event) => {\n    const base = [...publicTools]\n    if (event.context.user?.role === 'admin') {\n      base.push(...adminTools)\n    }\n    return base\n  },\n  prompts: async (event) => {\n    if (event.context.user) {\n      return [authenticatedPrompt, dashboardPrompt]\n    }\n    return [guestPrompt]\n  },\n})\n",[154,1350,1351,1369,1389,1409,1413,1425,1443,1469,1473,1492,1512,1546,1565,1569,1576,1580,1599,1619,1636,1640,1651,1656],{"__ignoreMap":257},[261,1352,1353,1355,1357,1359,1361,1363,1365,1367],{"class":263,"line":264},[261,1354,268],{"class":267},[261,1356,272],{"class":271},[261,1358,1100],{"class":275},[261,1360,279],{"class":271},[261,1362,282],{"class":267},[261,1364,285],{"class":271},[261,1366,311],{"class":288},[261,1368,292],{"class":271},[261,1370,1371,1373,1375,1378,1380,1382,1384,1387],{"class":263,"line":295},[261,1372,268],{"class":267},[261,1374,272],{"class":271},[261,1376,1377],{"class":275}," adminTools",[261,1379,279],{"class":271},[261,1381,282],{"class":267},[261,1383,285],{"class":271},[261,1385,1386],{"class":288},".\u002Fadmin-tools",[261,1388,292],{"class":271},[261,1390,1391,1393,1395,1398,1400,1402,1404,1407],{"class":263,"line":316},[261,1392,268],{"class":267},[261,1394,272],{"class":271},[261,1396,1397],{"class":275}," publicTools",[261,1399,279],{"class":271},[261,1401,282],{"class":267},[261,1403,285],{"class":271},[261,1405,1406],{"class":288},".\u002Fpublic-tools",[261,1408,292],{"class":271},[261,1410,1411],{"class":263,"line":323},[261,1412,320],{"emptyLinePlaceholder":319},[261,1414,1415,1417,1419,1421,1423],{"class":263,"line":341},[261,1416,326],{"class":267},[261,1418,329],{"class":267},[261,1420,1100],{"class":332},[261,1422,335],{"class":275},[261,1424,338],{"class":271},[261,1426,1427,1429,1431,1433,1435,1437,1439,1441],{"class":263,"line":362},[261,1428,1131],{"class":332},[261,1430,348],{"class":271},[261,1432,487],{"class":445},[261,1434,509],{"class":271},[261,1436,887],{"class":441},[261,1438,422],{"class":271},[261,1440,446],{"class":445},[261,1442,387],{"class":271},[261,1444,1445,1448,1450,1452,1454,1456,1458,1460,1463,1465,1467],{"class":263,"line":379},[261,1446,1447],{"class":275},"    event",[261,1449,228],{"class":271},[261,1451,453],{"class":275},[261,1453,228],{"class":271},[261,1455,458],{"class":275},[261,1457,922],{"class":271},[261,1459,750],{"class":267},[261,1461,1462],{"class":332}," getUser",[261,1464,335],{"class":344},[261,1466,887],{"class":275},[261,1468,567],{"class":344},[261,1470,1471],{"class":263,"line":390},[261,1472,430],{"class":271},[261,1474,1475,1478,1480,1482,1484,1486,1488,1490],{"class":263,"line":427},[261,1476,1477],{"class":332},"  tools",[261,1479,348],{"class":271},[261,1481,487],{"class":445},[261,1483,509],{"class":271},[261,1485,887],{"class":441},[261,1487,422],{"class":271},[261,1489,446],{"class":445},[261,1491,387],{"class":271},[261,1493,1494,1496,1499,1501,1503,1506,1509],{"class":263,"line":433},[261,1495,917],{"class":445},[261,1497,1498],{"class":275}," base",[261,1500,922],{"class":271},[261,1502,722],{"class":344},[261,1504,1505],{"class":271},"...",[261,1507,1508],{"class":275},"publicTools",[261,1510,1511],{"class":344},"]\n",[261,1513,1514,1516,1518,1520,1522,1524,1526,1528,1530,1533,1536,1538,1540,1542,1544],{"class":263,"line":479},[261,1515,506],{"class":267},[261,1517,509],{"class":344},[261,1519,887],{"class":275},[261,1521,228],{"class":271},[261,1523,453],{"class":275},[261,1525,228],{"class":271},[261,1527,458],{"class":275},[261,1529,461],{"class":271},[261,1531,1532],{"class":275},"role",[261,1534,1535],{"class":271}," ===",[261,1537,285],{"class":271},[261,1539,472],{"class":288},[261,1541,356],{"class":271},[261,1543,518],{"class":344},[261,1545,338],{"class":271},[261,1547,1548,1551,1553,1556,1558,1560,1563],{"class":263,"line":503},[261,1549,1550],{"class":275},"      base",[261,1552,228],{"class":271},[261,1554,1555],{"class":332},"push",[261,1557,335],{"class":344},[261,1559,1505],{"class":271},[261,1561,1562],{"class":275},"adminTools",[261,1564,567],{"class":344},[261,1566,1567],{"class":263,"line":531},[261,1568,1045],{"class":271},[261,1570,1571,1573],{"class":263,"line":543},[261,1572,546],{"class":267},[261,1574,1575],{"class":275}," base\n",[261,1577,1578],{"class":263,"line":556},[261,1579,430],{"class":271},[261,1581,1582,1585,1587,1589,1591,1593,1595,1597],{"class":263,"line":561},[261,1583,1584],{"class":332},"  prompts",[261,1586,348],{"class":271},[261,1588,487],{"class":445},[261,1590,509],{"class":271},[261,1592,887],{"class":441},[261,1594,422],{"class":271},[261,1596,446],{"class":445},[261,1598,387],{"class":271},[261,1600,1601,1603,1605,1607,1609,1611,1613,1615,1617],{"class":263,"line":1032},[261,1602,506],{"class":267},[261,1604,509],{"class":344},[261,1606,887],{"class":275},[261,1608,228],{"class":271},[261,1610,453],{"class":275},[261,1612,228],{"class":271},[261,1614,458],{"class":275},[261,1616,518],{"class":344},[261,1618,338],{"class":271},[261,1620,1621,1624,1626,1629,1631,1634],{"class":263,"line":1042},[261,1622,1623],{"class":267},"      return",[261,1625,722],{"class":344},[261,1627,1628],{"class":275},"authenticatedPrompt",[261,1630,742],{"class":271},[261,1632,1633],{"class":275}," dashboardPrompt",[261,1635,1511],{"class":344},[261,1637,1638],{"class":263,"line":1048},[261,1639,1045],{"class":271},[261,1641,1642,1644,1646,1649],{"class":263,"line":1053},[261,1643,546],{"class":267},[261,1645,722],{"class":344},[261,1647,1648],{"class":275},"guestPrompt",[261,1650,1511],{"class":344},[261,1652,1654],{"class":263,"line":1653},21,[261,1655,430],{"class":271},[261,1657,1659,1661],{"class":263,"line":1658},22,[261,1660,564],{"class":271},[261,1662,567],{"class":275},[150,1664,1665],{},"This is useful when you need to:",[1667,1668,1669,1672,1675],"ul",{},[170,1670,1671],{},"Build the tool list programmatically from a database or config",[170,1673,1674],{},"Compose definitions from multiple modules",[170,1676,1677],{},"Apply complex filtering logic",[145,1679,1681],{"id":1680},"combining-both-approaches","Combining Both Approaches",[150,1683,232,1684,1686,1687,1689],{},[154,1685,176],{}," guard and dynamic handler definitions work together. When you use dynamic handler definitions, each returned definition's ",[154,1688,176],{}," guard is still evaluated:",[251,1691,1693],{"className":253,"code":1692,"filename":1070,"language":256,"meta":257,"style":257},"import { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpHandler({\n  middleware: async (event) => {\n    event.context.user = await getUser(event)\n  },\n  tools: async (event) => {\n    const allTools = await loadToolsFromConfig()\n    return allTools\n  },\n})\n",[154,1694,1695,1713,1717,1729,1747,1771,1775,1793,1809,1816,1820],{"__ignoreMap":257},[261,1696,1697,1699,1701,1703,1705,1707,1709,1711],{"class":263,"line":264},[261,1698,268],{"class":267},[261,1700,272],{"class":271},[261,1702,1100],{"class":275},[261,1704,279],{"class":271},[261,1706,282],{"class":267},[261,1708,285],{"class":271},[261,1710,311],{"class":288},[261,1712,292],{"class":271},[261,1714,1715],{"class":263,"line":295},[261,1716,320],{"emptyLinePlaceholder":319},[261,1718,1719,1721,1723,1725,1727],{"class":263,"line":316},[261,1720,326],{"class":267},[261,1722,329],{"class":267},[261,1724,1100],{"class":332},[261,1726,335],{"class":275},[261,1728,338],{"class":271},[261,1730,1731,1733,1735,1737,1739,1741,1743,1745],{"class":263,"line":323},[261,1732,1131],{"class":332},[261,1734,348],{"class":271},[261,1736,487],{"class":445},[261,1738,509],{"class":271},[261,1740,887],{"class":441},[261,1742,422],{"class":271},[261,1744,446],{"class":445},[261,1746,387],{"class":271},[261,1748,1749,1751,1753,1755,1757,1759,1761,1763,1765,1767,1769],{"class":263,"line":341},[261,1750,1447],{"class":275},[261,1752,228],{"class":271},[261,1754,453],{"class":275},[261,1756,228],{"class":271},[261,1758,458],{"class":275},[261,1760,922],{"class":271},[261,1762,750],{"class":267},[261,1764,1462],{"class":332},[261,1766,335],{"class":344},[261,1768,887],{"class":275},[261,1770,567],{"class":344},[261,1772,1773],{"class":263,"line":362},[261,1774,430],{"class":271},[261,1776,1777,1779,1781,1783,1785,1787,1789,1791],{"class":263,"line":379},[261,1778,1477],{"class":332},[261,1780,348],{"class":271},[261,1782,487],{"class":445},[261,1784,509],{"class":271},[261,1786,887],{"class":441},[261,1788,422],{"class":271},[261,1790,446],{"class":445},[261,1792,387],{"class":271},[261,1794,1795,1797,1800,1802,1804,1807],{"class":263,"line":390},[261,1796,917],{"class":445},[261,1798,1799],{"class":275}," allTools",[261,1801,922],{"class":271},[261,1803,750],{"class":267},[261,1805,1806],{"class":332}," loadToolsFromConfig",[261,1808,540],{"class":344},[261,1810,1811,1813],{"class":263,"line":427},[261,1812,546],{"class":267},[261,1814,1815],{"class":275}," allTools\n",[261,1817,1818],{"class":263,"line":433},[261,1819,430],{"class":271},[261,1821,1822,1824],{"class":263,"line":479},[261,1823,564],{"class":271},[261,1825,567],{"class":275},[251,1827,1830],{"className":253,"code":1828,"filename":1829,"language":256,"meta":257,"style":257},"import { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  name: 'admin-delete',\n  enabled: event => event.context.user?.role === 'admin',\n  handler: async () => { \u002F* ... *\u002F },\n})\n","server\u002Fmcp\u002Ftools\u002Fadmin-delete.ts",[154,1831,1832,1850,1854,1866,1881,1915,1936],{"__ignoreMap":257},[261,1833,1834,1836,1838,1840,1842,1844,1846,1848],{"class":263,"line":264},[261,1835,268],{"class":267},[261,1837,272],{"class":271},[261,1839,302],{"class":275},[261,1841,279],{"class":271},[261,1843,282],{"class":267},[261,1845,285],{"class":271},[261,1847,311],{"class":288},[261,1849,292],{"class":271},[261,1851,1852],{"class":263,"line":295},[261,1853,320],{"emptyLinePlaceholder":319},[261,1855,1856,1858,1860,1862,1864],{"class":263,"line":316},[261,1857,326],{"class":267},[261,1859,329],{"class":267},[261,1861,302],{"class":332},[261,1863,335],{"class":275},[261,1865,338],{"class":271},[261,1867,1868,1870,1872,1874,1877,1879],{"class":263,"line":323},[261,1869,345],{"class":344},[261,1871,348],{"class":271},[261,1873,285],{"class":271},[261,1875,1876],{"class":288},"admin-delete",[261,1878,356],{"class":271},[261,1880,359],{"class":271},[261,1882,1883,1885,1887,1889,1891,1893,1895,1897,1899,1901,1903,1905,1907,1909,1911,1913],{"class":263,"line":341},[261,1884,436],{"class":332},[261,1886,348],{"class":271},[261,1888,442],{"class":441},[261,1890,446],{"class":445},[261,1892,442],{"class":275},[261,1894,228],{"class":271},[261,1896,453],{"class":275},[261,1898,228],{"class":271},[261,1900,458],{"class":275},[261,1902,461],{"class":271},[261,1904,464],{"class":275},[261,1906,467],{"class":271},[261,1908,285],{"class":271},[261,1910,472],{"class":288},[261,1912,356],{"class":271},[261,1914,359],{"class":271},[261,1916,1917,1919,1921,1923,1925,1927,1929,1933],{"class":263,"line":362},[261,1918,482],{"class":332},[261,1920,348],{"class":271},[261,1922,487],{"class":445},[261,1924,908],{"class":271},[261,1926,446],{"class":445},[261,1928,272],{"class":271},[261,1930,1932],{"class":1931},"sHwdD"," \u002F* ... *\u002F",[261,1934,1935],{"class":271}," },\n",[261,1937,1938,1940],{"class":263,"line":379},[261,1939,564],{"class":271},[261,1941,567],{"class":275},[150,1943,1944,1945,1947,1948,1951,1952,1954],{},"In this case, ",[154,1946,1876],{}," is loaded by auto-discovery (or dynamically) ",[159,1949,1950],{},"and"," filtered by its ",[154,1953,176],{}," guard.",[145,1956,1958],{"id":1957},"session-behavior","Session Behavior",[150,1960,1961,1962,1966,1967,1970],{},"When ",[1963,1964,1965],"a",{"href":97},"sessions"," are enabled, the MCP server is created on the ",[159,1968,1969],{},"first request"," of a session. Dynamic definitions are resolved at that point, and the same tool set persists for the session's lifetime.",[150,1972,1973],{},"This means:",[1667,1975,1976,1979,1982],{},[170,1977,1978],{},"An admin who connects gets admin tools for the entire session",[170,1980,1981],{},"A regular user who connects never sees admin tools, even if they gain admin access mid-session",[170,1983,1984],{},"Different sessions can have different tool sets",[150,1986,1987],{},"Without sessions, a new server is created per request, so definitions can vary per request.",[145,1989,1991],{"id":1990},"mid-session-mutations","Mid-Session Mutations",[150,1993,232,1994,1996,1997,2000,2001,2004,2005,2008],{},[154,1995,176],{}," guard and dynamic handler definitions control which definitions are registered ",[159,1998,1999],{},"when the session starts",". For cases where you need to add, remove, or update definitions ",[159,2002,2003],{},"during"," an active session, use the ",[154,2006,2007],{},"useMcpServer()"," composable.",[150,2010,2011,2013,2014,2017],{},[154,2012,2007],{}," returns a helper with methods to register, remove, and manage tools, prompts, and resources. The SDK automatically sends ",[154,2015,2016],{},"notifications\u002Ftools\u002Flist_changed"," (or the equivalent for prompts\u002Fresources) to the client, prompting it to re-fetch the list.",[247,2019,2021],{"id":2020},"api","API",[2023,2024,2025,2038],"table",{},[2026,2027,2028],"thead",{},[2029,2030,2031,2035],"tr",{},[2032,2033,2034],"th",{},"Method",[2032,2036,2037],{},"Description",[2039,2040,2041,2056,2069,2082,2096,2108,2120],"tbody",{},[2029,2042,2043,2049],{},[2044,2045,2046],"td",{},[154,2047,2048],{},"registerTool(name, config, handler)",[2044,2050,2051,2052,2055],{},"Register a new tool. Returns a ",[154,2053,2054],{},"RegisteredTool"," handle.",[2029,2057,2058,2063],{},[2044,2059,2060],{},[154,2061,2062],{},"registerPrompt(name, config, handler)",[2044,2064,2065,2066,2055],{},"Register a new prompt. Returns a ",[154,2067,2068],{},"RegisteredPrompt",[2029,2070,2071,2076],{},[2044,2072,2073],{},[154,2074,2075],{},"registerResource(name, uri, config, handler)",[2044,2077,2078,2079,2055],{},"Register a new resource. Returns a ",[154,2080,2081],{},"RegisteredResource",[2029,2083,2084,2089],{},[2044,2085,2086],{},[154,2087,2088],{},"removeTool(name)",[2044,2090,2091,2092,2095],{},"Remove a tool by name. Returns ",[154,2093,2094],{},"true"," if found.",[2029,2097,2098,2103],{},[2044,2099,2100],{},[154,2101,2102],{},"removePrompt(name)",[2044,2104,2105,2106,2095],{},"Remove a prompt by name. Returns ",[154,2107,2094],{},[2029,2109,2110,2115],{},[2044,2111,2112],{},[154,2113,2114],{},"removeResource(name)",[2044,2116,2117,2118,2095],{},"Remove a resource by name. Returns ",[154,2119,2094],{},[2029,2121,2122,2127],{},[2044,2123,2124],{},[154,2125,2126],{},"server",[2044,2128,2129,2130,2133],{},"The underlying ",[154,2131,2132],{},"McpServer"," instance for advanced SDK operations.",[247,2135,2137],{"id":2136},"registering-a-tool-mid-session","Registering a Tool Mid-Session",[251,2139,2142],{"className":253,"code":2140,"filename":2141,"language":256,"meta":257,"style":257},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  description: 'Create a shortcut tool for a specific query',\n  inputSchema: {\n    name: z.string().describe('Name for the shortcut tool'),\n    query: z.string().describe('The query this shortcut runs'),\n  },\n  handler: async ({ name, query }) => {\n    const mcp = useMcpServer()\n    mcp.registerTool(name, {\n      description: `Shortcut: ${query}`,\n    }, async () => {\n      const result = await runQuery(query)\n      return { content: [{ type: 'text', text: JSON.stringify(result) }] }\n    })\n    return `Shortcut \"${name}\" created`\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fcreate-shortcut.ts",[154,2143,2144,2162,2180,2184,2196,2211,2219,2252,2284,2288,2312,2326,2344,2366,2379,2400,2455,2462,2483,2487],{"__ignoreMap":257},[261,2145,2146,2148,2150,2152,2154,2156,2158,2160],{"class":263,"line":264},[261,2147,268],{"class":267},[261,2149,272],{"class":271},[261,2151,276],{"class":275},[261,2153,279],{"class":271},[261,2155,282],{"class":267},[261,2157,285],{"class":271},[261,2159,289],{"class":288},[261,2161,292],{"class":271},[261,2163,2164,2166,2168,2170,2172,2174,2176,2178],{"class":263,"line":295},[261,2165,268],{"class":267},[261,2167,272],{"class":271},[261,2169,302],{"class":275},[261,2171,279],{"class":271},[261,2173,282],{"class":267},[261,2175,285],{"class":271},[261,2177,311],{"class":288},[261,2179,292],{"class":271},[261,2181,2182],{"class":263,"line":316},[261,2183,320],{"emptyLinePlaceholder":319},[261,2185,2186,2188,2190,2192,2194],{"class":263,"line":323},[261,2187,326],{"class":267},[261,2189,329],{"class":267},[261,2191,302],{"class":332},[261,2193,335],{"class":275},[261,2195,338],{"class":271},[261,2197,2198,2200,2202,2204,2207,2209],{"class":263,"line":341},[261,2199,365],{"class":344},[261,2201,348],{"class":271},[261,2203,285],{"class":271},[261,2205,2206],{"class":288},"Create a shortcut tool for a specific query",[261,2208,356],{"class":271},[261,2210,359],{"class":271},[261,2212,2213,2215,2217],{"class":263,"line":362},[261,2214,382],{"class":344},[261,2216,348],{"class":271},[261,2218,387],{"class":271},[261,2220,2221,2224,2226,2228,2230,2233,2235,2237,2239,2241,2243,2246,2248,2250],{"class":263,"line":379},[261,2222,2223],{"class":344},"    name",[261,2225,348],{"class":271},[261,2227,276],{"class":275},[261,2229,228],{"class":271},[261,2231,2232],{"class":332},"string",[261,2234,405],{"class":275},[261,2236,228],{"class":271},[261,2238,410],{"class":332},[261,2240,335],{"class":275},[261,2242,356],{"class":271},[261,2244,2245],{"class":288},"Name for the shortcut tool",[261,2247,356],{"class":271},[261,2249,422],{"class":275},[261,2251,359],{"class":271},[261,2253,2254,2257,2259,2261,2263,2265,2267,2269,2271,2273,2275,2278,2280,2282],{"class":263,"line":390},[261,2255,2256],{"class":344},"    query",[261,2258,348],{"class":271},[261,2260,276],{"class":275},[261,2262,228],{"class":271},[261,2264,2232],{"class":332},[261,2266,405],{"class":275},[261,2268,228],{"class":271},[261,2270,410],{"class":332},[261,2272,335],{"class":275},[261,2274,356],{"class":271},[261,2276,2277],{"class":288},"The query this shortcut runs",[261,2279,356],{"class":271},[261,2281,422],{"class":275},[261,2283,359],{"class":271},[261,2285,2286],{"class":263,"line":427},[261,2287,430],{"class":271},[261,2289,2290,2292,2294,2296,2298,2301,2303,2306,2308,2310],{"class":263,"line":433},[261,2291,482],{"class":332},[261,2293,348],{"class":271},[261,2295,487],{"class":445},[261,2297,490],{"class":271},[261,2299,2300],{"class":441}," name",[261,2302,742],{"class":271},[261,2304,2305],{"class":441}," query",[261,2307,496],{"class":271},[261,2309,446],{"class":445},[261,2311,387],{"class":271},[261,2313,2314,2316,2319,2321,2324],{"class":263,"line":479},[261,2315,917],{"class":445},[261,2317,2318],{"class":275}," mcp",[261,2320,922],{"class":271},[261,2322,2323],{"class":332}," useMcpServer",[261,2325,540],{"class":344},[261,2327,2328,2331,2333,2336,2338,2340,2342],{"class":263,"line":503},[261,2329,2330],{"class":275},"    mcp",[261,2332,228],{"class":271},[261,2334,2335],{"class":332},"registerTool",[261,2337,335],{"class":344},[261,2339,1014],{"class":275},[261,2341,742],{"class":271},[261,2343,387],{"class":271},[261,2345,2346,2349,2351,2353,2356,2358,2361,2364],{"class":263,"line":531},[261,2347,2348],{"class":344},"      description",[261,2350,348],{"class":271},[261,2352,993],{"class":271},[261,2354,2355],{"class":288},"Shortcut: ",[261,2357,999],{"class":271},[261,2359,2360],{"class":275},"query",[261,2362,2363],{"class":271},"}`",[261,2365,359],{"class":271},[261,2367,2368,2371,2373,2375,2377],{"class":263,"line":543},[261,2369,2370],{"class":271},"    },",[261,2372,487],{"class":445},[261,2374,908],{"class":271},[261,2376,446],{"class":445},[261,2378,387],{"class":271},[261,2380,2381,2384,2387,2389,2391,2394,2396,2398],{"class":263,"line":556},[261,2382,2383],{"class":445},"      const",[261,2385,2386],{"class":275}," result",[261,2388,922],{"class":271},[261,2390,750],{"class":267},[261,2392,2393],{"class":332}," runQuery",[261,2395,335],{"class":344},[261,2397,2360],{"class":275},[261,2399,567],{"class":344},[261,2401,2402,2404,2406,2409,2411,2413,2415,2418,2420,2422,2424,2426,2428,2430,2432,2435,2437,2440,2442,2445,2447,2449,2452],{"class":263,"line":561},[261,2403,1623],{"class":267},[261,2405,272],{"class":271},[261,2407,2408],{"class":344}," content",[261,2410,348],{"class":271},[261,2412,722],{"class":344},[261,2414,725],{"class":271},[261,2416,2417],{"class":344}," type",[261,2419,348],{"class":271},[261,2421,285],{"class":271},[261,2423,979],{"class":288},[261,2425,356],{"class":271},[261,2427,742],{"class":271},[261,2429,745],{"class":344},[261,2431,348],{"class":271},[261,2433,2434],{"class":275}," JSON",[261,2436,228],{"class":271},[261,2438,2439],{"class":332},"stringify",[261,2441,335],{"class":344},[261,2443,2444],{"class":275},"result",[261,2446,518],{"class":344},[261,2448,564],{"class":271},[261,2450,2451],{"class":344},"] ",[261,2453,2454],{"class":271},"}\n",[261,2456,2457,2460],{"class":263,"line":1032},[261,2458,2459],{"class":271},"    }",[261,2461,567],{"class":344},[261,2463,2464,2466,2468,2471,2473,2475,2477,2480],{"class":263,"line":1042},[261,2465,546],{"class":267},[261,2467,993],{"class":271},[261,2469,2470],{"class":288},"Shortcut \"",[261,2472,999],{"class":271},[261,2474,1014],{"class":275},[261,2476,564],{"class":271},[261,2478,2479],{"class":288},"\" created",[261,2481,2482],{"class":271},"`\n",[261,2484,2485],{"class":263,"line":1048},[261,2486,430],{"class":271},[261,2488,2489,2491],{"class":263,"line":1053},[261,2490,564],{"class":271},[261,2492,567],{"class":275},[150,2494,2495],{},"After calling this tool, the client's tool list refreshes and includes the new shortcut.",[247,2497,2499],{"id":2498},"removing-a-tool-mid-session","Removing a Tool Mid-Session",[150,2501,2502,2503,2505],{},"Use ",[154,2504,2088],{}," to remove a tool by name -- no need to store handles:",[251,2507,2510],{"className":253,"code":2508,"filename":2509,"language":256,"meta":257,"style":257},"import { z } from 'zod'\nimport { createError } from 'h3'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport const registerAgent = defineMcpTool({\n  name: 'register-agent',\n  inputSchema: {\n    agentId: z.string(),\n    agentName: z.string(),\n  },\n  handler: async ({ agentId, agentName }) => {\n    const mcp = useMcpServer()\n    mcp.registerTool(`call-${agentId}`, {\n      description: `Call agent: ${agentName}`,\n    }, async () => {\n      const response = await callAgent(agentId)\n      return { content: [{ type: 'text', text: response }] }\n    })\n    return `Agent \"${agentName}\" registered`\n  },\n})\n\nexport const unregisterAgent = defineMcpTool({\n  name: 'unregister-agent',\n  inputSchema: {\n    agentId: z.string(),\n  },\n  handler: async ({ agentId }) => {\n    const mcp = useMcpServer()\n    const removed = mcp.removeTool(`call-${agentId}`)\n    if (!removed) throw createError({ statusCode: 404, message: `Agent \"${agentId}\" not found` })\n    return `Agent \"${agentId}\" unregistered`\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fmanage-agents.ts",[154,2511,2512,2530,2549,2567,2571,2590,2605,2613,2630,2647,2651,2675,2687,2713,2733,2745,2765,2803,2809,2829,2833,2839,2843,2861,2877,2886,2903,2908,2927,2940,2971,3029,3049,3054],{"__ignoreMap":257},[261,2513,2514,2516,2518,2520,2522,2524,2526,2528],{"class":263,"line":264},[261,2515,268],{"class":267},[261,2517,272],{"class":271},[261,2519,276],{"class":275},[261,2521,279],{"class":271},[261,2523,282],{"class":267},[261,2525,285],{"class":271},[261,2527,289],{"class":288},[261,2529,292],{"class":271},[261,2531,2532,2534,2536,2539,2541,2543,2545,2547],{"class":263,"line":295},[261,2533,268],{"class":267},[261,2535,272],{"class":271},[261,2537,2538],{"class":275}," createError",[261,2540,279],{"class":271},[261,2542,282],{"class":267},[261,2544,285],{"class":271},[261,2546,247],{"class":288},[261,2548,292],{"class":271},[261,2550,2551,2553,2555,2557,2559,2561,2563,2565],{"class":263,"line":316},[261,2552,268],{"class":267},[261,2554,272],{"class":271},[261,2556,302],{"class":275},[261,2558,279],{"class":271},[261,2560,282],{"class":267},[261,2562,285],{"class":271},[261,2564,311],{"class":288},[261,2566,292],{"class":271},[261,2568,2569],{"class":263,"line":323},[261,2570,320],{"emptyLinePlaceholder":319},[261,2572,2573,2575,2578,2581,2584,2586,2588],{"class":263,"line":341},[261,2574,326],{"class":267},[261,2576,2577],{"class":445}," const",[261,2579,2580],{"class":275}," registerAgent ",[261,2582,2583],{"class":271},"=",[261,2585,302],{"class":332},[261,2587,335],{"class":275},[261,2589,338],{"class":271},[261,2591,2592,2594,2596,2598,2601,2603],{"class":263,"line":362},[261,2593,345],{"class":344},[261,2595,348],{"class":271},[261,2597,285],{"class":271},[261,2599,2600],{"class":288},"register-agent",[261,2602,356],{"class":271},[261,2604,359],{"class":271},[261,2606,2607,2609,2611],{"class":263,"line":379},[261,2608,382],{"class":344},[261,2610,348],{"class":271},[261,2612,387],{"class":271},[261,2614,2615,2618,2620,2622,2624,2626,2628],{"class":263,"line":390},[261,2616,2617],{"class":344},"    agentId",[261,2619,348],{"class":271},[261,2621,276],{"class":275},[261,2623,228],{"class":271},[261,2625,2232],{"class":332},[261,2627,405],{"class":275},[261,2629,359],{"class":271},[261,2631,2632,2635,2637,2639,2641,2643,2645],{"class":263,"line":427},[261,2633,2634],{"class":344},"    agentName",[261,2636,348],{"class":271},[261,2638,276],{"class":275},[261,2640,228],{"class":271},[261,2642,2232],{"class":332},[261,2644,405],{"class":275},[261,2646,359],{"class":271},[261,2648,2649],{"class":263,"line":433},[261,2650,430],{"class":271},[261,2652,2653,2655,2657,2659,2661,2664,2666,2669,2671,2673],{"class":263,"line":479},[261,2654,482],{"class":332},[261,2656,348],{"class":271},[261,2658,487],{"class":445},[261,2660,490],{"class":271},[261,2662,2663],{"class":441}," agentId",[261,2665,742],{"class":271},[261,2667,2668],{"class":441}," agentName",[261,2670,496],{"class":271},[261,2672,446],{"class":445},[261,2674,387],{"class":271},[261,2676,2677,2679,2681,2683,2685],{"class":263,"line":503},[261,2678,917],{"class":445},[261,2680,2318],{"class":275},[261,2682,922],{"class":271},[261,2684,2323],{"class":332},[261,2686,540],{"class":344},[261,2688,2689,2691,2693,2695,2697,2699,2702,2704,2707,2709,2711],{"class":263,"line":531},[261,2690,2330],{"class":275},[261,2692,228],{"class":271},[261,2694,2335],{"class":332},[261,2696,335],{"class":344},[261,2698,1022],{"class":271},[261,2700,2701],{"class":288},"call-",[261,2703,999],{"class":271},[261,2705,2706],{"class":275},"agentId",[261,2708,2363],{"class":271},[261,2710,742],{"class":271},[261,2712,387],{"class":271},[261,2714,2715,2717,2719,2721,2724,2726,2729,2731],{"class":263,"line":543},[261,2716,2348],{"class":344},[261,2718,348],{"class":271},[261,2720,993],{"class":271},[261,2722,2723],{"class":288},"Call agent: ",[261,2725,999],{"class":271},[261,2727,2728],{"class":275},"agentName",[261,2730,2363],{"class":271},[261,2732,359],{"class":271},[261,2734,2735,2737,2739,2741,2743],{"class":263,"line":556},[261,2736,2370],{"class":271},[261,2738,487],{"class":445},[261,2740,908],{"class":271},[261,2742,446],{"class":445},[261,2744,387],{"class":271},[261,2746,2747,2749,2752,2754,2756,2759,2761,2763],{"class":263,"line":561},[261,2748,2383],{"class":445},[261,2750,2751],{"class":275}," response",[261,2753,922],{"class":271},[261,2755,750],{"class":267},[261,2757,2758],{"class":332}," callAgent",[261,2760,335],{"class":344},[261,2762,2706],{"class":275},[261,2764,567],{"class":344},[261,2766,2767,2769,2771,2773,2775,2777,2779,2781,2783,2785,2787,2789,2791,2793,2795,2797,2799,2801],{"class":263,"line":1032},[261,2768,1623],{"class":267},[261,2770,272],{"class":271},[261,2772,2408],{"class":344},[261,2774,348],{"class":271},[261,2776,722],{"class":344},[261,2778,725],{"class":271},[261,2780,2417],{"class":344},[261,2782,348],{"class":271},[261,2784,285],{"class":271},[261,2786,979],{"class":288},[261,2788,356],{"class":271},[261,2790,742],{"class":271},[261,2792,745],{"class":344},[261,2794,348],{"class":271},[261,2796,2751],{"class":275},[261,2798,279],{"class":271},[261,2800,2451],{"class":344},[261,2802,2454],{"class":271},[261,2804,2805,2807],{"class":263,"line":1042},[261,2806,2459],{"class":271},[261,2808,567],{"class":344},[261,2810,2811,2813,2815,2818,2820,2822,2824,2827],{"class":263,"line":1048},[261,2812,546],{"class":267},[261,2814,993],{"class":271},[261,2816,2817],{"class":288},"Agent \"",[261,2819,999],{"class":271},[261,2821,2728],{"class":275},[261,2823,564],{"class":271},[261,2825,2826],{"class":288},"\" registered",[261,2828,2482],{"class":271},[261,2830,2831],{"class":263,"line":1053},[261,2832,430],{"class":271},[261,2834,2835,2837],{"class":263,"line":1653},[261,2836,564],{"class":271},[261,2838,567],{"class":275},[261,2840,2841],{"class":263,"line":1658},[261,2842,320],{"emptyLinePlaceholder":319},[261,2844,2846,2848,2850,2853,2855,2857,2859],{"class":263,"line":2845},23,[261,2847,326],{"class":267},[261,2849,2577],{"class":445},[261,2851,2852],{"class":275}," unregisterAgent ",[261,2854,2583],{"class":271},[261,2856,302],{"class":332},[261,2858,335],{"class":275},[261,2860,338],{"class":271},[261,2862,2864,2866,2868,2870,2873,2875],{"class":263,"line":2863},24,[261,2865,345],{"class":344},[261,2867,348],{"class":271},[261,2869,285],{"class":271},[261,2871,2872],{"class":288},"unregister-agent",[261,2874,356],{"class":271},[261,2876,359],{"class":271},[261,2878,2880,2882,2884],{"class":263,"line":2879},25,[261,2881,382],{"class":344},[261,2883,348],{"class":271},[261,2885,387],{"class":271},[261,2887,2889,2891,2893,2895,2897,2899,2901],{"class":263,"line":2888},26,[261,2890,2617],{"class":344},[261,2892,348],{"class":271},[261,2894,276],{"class":275},[261,2896,228],{"class":271},[261,2898,2232],{"class":332},[261,2900,405],{"class":275},[261,2902,359],{"class":271},[261,2904,2906],{"class":263,"line":2905},27,[261,2907,430],{"class":271},[261,2909,2911,2913,2915,2917,2919,2921,2923,2925],{"class":263,"line":2910},28,[261,2912,482],{"class":332},[261,2914,348],{"class":271},[261,2916,487],{"class":445},[261,2918,490],{"class":271},[261,2920,2663],{"class":441},[261,2922,496],{"class":271},[261,2924,446],{"class":445},[261,2926,387],{"class":271},[261,2928,2930,2932,2934,2936,2938],{"class":263,"line":2929},29,[261,2931,917],{"class":445},[261,2933,2318],{"class":275},[261,2935,922],{"class":271},[261,2937,2323],{"class":332},[261,2939,540],{"class":344},[261,2941,2943,2945,2948,2950,2952,2954,2957,2959,2961,2963,2965,2967,2969],{"class":263,"line":2942},30,[261,2944,917],{"class":445},[261,2946,2947],{"class":275}," removed",[261,2949,922],{"class":271},[261,2951,2318],{"class":275},[261,2953,228],{"class":271},[261,2955,2956],{"class":332},"removeTool",[261,2958,335],{"class":344},[261,2960,1022],{"class":271},[261,2962,2701],{"class":288},[261,2964,999],{"class":271},[261,2966,2706],{"class":275},[261,2968,2363],{"class":271},[261,2970,567],{"class":344},[261,2972,2974,2976,2978,2980,2983,2985,2988,2990,2992,2994,2997,2999,3003,3005,3008,3010,3012,3014,3016,3018,3020,3023,3025,3027],{"class":263,"line":2973},31,[261,2975,506],{"class":267},[261,2977,509],{"class":344},[261,2979,512],{"class":271},[261,2981,2982],{"class":275},"removed",[261,2984,518],{"class":344},[261,2986,2987],{"class":267},"throw",[261,2989,2538],{"class":332},[261,2991,335],{"class":344},[261,2993,725],{"class":271},[261,2995,2996],{"class":344}," statusCode",[261,2998,348],{"class":271},[261,3000,3002],{"class":3001},"sbssI"," 404",[261,3004,742],{"class":271},[261,3006,3007],{"class":344}," message",[261,3009,348],{"class":271},[261,3011,993],{"class":271},[261,3013,2817],{"class":288},[261,3015,999],{"class":271},[261,3017,2706],{"class":275},[261,3019,564],{"class":271},[261,3021,3022],{"class":288},"\" not found",[261,3024,1022],{"class":271},[261,3026,279],{"class":271},[261,3028,567],{"class":344},[261,3030,3032,3034,3036,3038,3040,3042,3044,3047],{"class":263,"line":3031},32,[261,3033,546],{"class":267},[261,3035,993],{"class":271},[261,3037,2817],{"class":288},[261,3039,999],{"class":271},[261,3041,2706],{"class":275},[261,3043,564],{"class":271},[261,3045,3046],{"class":288},"\" unregistered",[261,3048,2482],{"class":271},[261,3050,3052],{"class":263,"line":3051},33,[261,3053,430],{"class":271},[261,3055,3057,3059],{"class":263,"line":3056},34,[261,3058,564],{"class":271},[261,3060,567],{"class":275},[247,3062,3064],{"id":3063},"updating-and-toggling-definitions","Updating and Toggling Definitions",[150,3066,3067,3068,3070,3071,348],{},"For in-place updates, use the ",[154,3069,2054],{}," handle returned by ",[154,3072,3073],{},"registerTool()",[251,3075,3077],{"className":253,"code":3076,"language":256,"meta":257,"style":257},"const mcp = useMcpServer()\nconst registered = mcp.registerTool('my-tool', { description: 'v1' }, handler)\n\n\u002F\u002F Update the description and handler\nregistered.update({ description: 'v2', callback: newHandler })\n\n\u002F\u002F Temporarily hide from the client\nregistered.disable()\n\n\u002F\u002F Re-enable\nregistered.enable()\n",[154,3078,3079,3093,3139,3143,3148,3187,3191,3196,3207,3211,3216],{"__ignoreMap":257},[261,3080,3081,3084,3087,3089,3091],{"class":263,"line":264},[261,3082,3083],{"class":445},"const",[261,3085,3086],{"class":275}," mcp ",[261,3088,2583],{"class":271},[261,3090,2323],{"class":332},[261,3092,540],{"class":275},[261,3094,3095,3097,3100,3102,3104,3106,3108,3110,3112,3115,3117,3119,3121,3124,3126,3128,3131,3133,3136],{"class":263,"line":295},[261,3096,3083],{"class":445},[261,3098,3099],{"class":275}," registered ",[261,3101,2583],{"class":271},[261,3103,2318],{"class":275},[261,3105,228],{"class":271},[261,3107,2335],{"class":332},[261,3109,335],{"class":275},[261,3111,356],{"class":271},[261,3113,3114],{"class":288},"my-tool",[261,3116,356],{"class":271},[261,3118,742],{"class":271},[261,3120,272],{"class":271},[261,3122,3123],{"class":344}," description",[261,3125,348],{"class":271},[261,3127,285],{"class":271},[261,3129,3130],{"class":288},"v1",[261,3132,356],{"class":271},[261,3134,3135],{"class":271}," },",[261,3137,3138],{"class":275}," handler)\n",[261,3140,3141],{"class":263,"line":316},[261,3142,320],{"emptyLinePlaceholder":319},[261,3144,3145],{"class":263,"line":323},[261,3146,3147],{"class":1931},"\u002F\u002F Update the description and handler\n",[261,3149,3150,3153,3155,3158,3160,3162,3164,3166,3168,3171,3173,3175,3178,3180,3183,3185],{"class":263,"line":341},[261,3151,3152],{"class":275},"registered",[261,3154,228],{"class":271},[261,3156,3157],{"class":332},"update",[261,3159,335],{"class":275},[261,3161,725],{"class":271},[261,3163,3123],{"class":344},[261,3165,348],{"class":271},[261,3167,285],{"class":271},[261,3169,3170],{"class":288},"v2",[261,3172,356],{"class":271},[261,3174,742],{"class":271},[261,3176,3177],{"class":344}," callback",[261,3179,348],{"class":271},[261,3181,3182],{"class":275}," newHandler ",[261,3184,564],{"class":271},[261,3186,567],{"class":275},[261,3188,3189],{"class":263,"line":362},[261,3190,320],{"emptyLinePlaceholder":319},[261,3192,3193],{"class":263,"line":379},[261,3194,3195],{"class":1931},"\u002F\u002F Temporarily hide from the client\n",[261,3197,3198,3200,3202,3205],{"class":263,"line":390},[261,3199,3152],{"class":275},[261,3201,228],{"class":271},[261,3203,3204],{"class":332},"disable",[261,3206,540],{"class":275},[261,3208,3209],{"class":263,"line":427},[261,3210,320],{"emptyLinePlaceholder":319},[261,3212,3213],{"class":263,"line":433},[261,3214,3215],{"class":1931},"\u002F\u002F Re-enable\n",[261,3217,3218,3220,3222,3225],{"class":263,"line":479},[261,3219,3152],{"class":275},[261,3221,228],{"class":271},[261,3223,3224],{"class":332},"enable",[261,3226,540],{"class":275},[150,3228,3229,3230,3233,3234,3237],{},"The same pattern applies to ",[154,3231,3232],{},"registerPrompt()"," and ",[154,3235,3236],{},"registerResource()",", which return handles with the same methods.",[247,3239,3241],{"id":3240},"requirements","Requirements",[1667,3243,3244,3258],{},[170,3245,3246,3251,3252,3254,3255,3257],{},[159,3247,3248],{},[154,3249,3250],{},"nitro.experimental.asyncContext"," must be ",[154,3253,2094],{}," in your Nuxt config (required for ",[154,3256,2007],{}," to access the request context)",[170,3259,3260,3261,3264],{},"Mid-session mutations are most useful with ",[159,3262,3263],{},"sessions enabled",", since the server instance persists across requests. Without sessions, each request creates a fresh server, so mutations only last for a single request.",[201,3266,3269,3270,3272],{"color":3267,"icon":3268},"warning","i-lucide-triangle-alert","Not all MCP clients support ",[154,3271,2016],{},". If a client doesn't support it, the user may need to reconnect to see updated definitions. Check your client's documentation for compatibility.",[145,3274,81],{"id":256},[150,3276,3277],{},"For type-safe context, extend the H3 event context:",[251,3279,3282],{"className":253,"code":3280,"filename":3281,"language":256,"meta":257,"style":257},"declare module 'h3' {\n  interface H3EventContext {\n    user?: {\n      id: string\n      name: string\n      role: 'user' | 'admin'\n    }\n  }\n}\n","server\u002Ftypes.ts",[154,3283,3284,3300,3311,3321,3331,3340,3362,3366,3371],{"__ignoreMap":257},[261,3285,3286,3289,3292,3294,3296,3298],{"class":263,"line":264},[261,3287,3288],{"class":445},"declare",[261,3290,3291],{"class":445}," module",[261,3293,285],{"class":271},[261,3295,247],{"class":288},[261,3297,356],{"class":271},[261,3299,387],{"class":271},[261,3301,3302,3305,3309],{"class":263,"line":295},[261,3303,3304],{"class":445},"  interface",[261,3306,3308],{"class":3307},"sBMFI"," H3EventContext",[261,3310,387],{"class":271},[261,3312,3313,3316,3319],{"class":263,"line":316},[261,3314,3315],{"class":344},"    user",[261,3317,3318],{"class":271},"?:",[261,3320,387],{"class":271},[261,3322,3323,3326,3328],{"class":263,"line":323},[261,3324,3325],{"class":344},"      id",[261,3327,348],{"class":271},[261,3329,3330],{"class":3307}," string\n",[261,3332,3333,3336,3338],{"class":263,"line":341},[261,3334,3335],{"class":344},"      name",[261,3337,348],{"class":271},[261,3339,3330],{"class":3307},[261,3341,3342,3345,3347,3349,3351,3353,3356,3358,3360],{"class":263,"line":362},[261,3343,3344],{"class":344},"      role",[261,3346,348],{"class":271},[261,3348,285],{"class":271},[261,3350,458],{"class":288},[261,3352,356],{"class":271},[261,3354,3355],{"class":271}," |",[261,3357,285],{"class":271},[261,3359,472],{"class":288},[261,3361,292],{"class":271},[261,3363,3364],{"class":263,"line":379},[261,3365,1045],{"class":271},[261,3367,3368],{"class":263,"line":390},[261,3369,3370],{"class":271},"  }\n",[261,3372,3373],{"class":263,"line":427},[261,3374,2454],{"class":271},[145,3376,3378],{"id":3377},"next-steps","Next Steps",[1667,3380,3381,3386,3391],{},[170,3382,3383,3385],{},[1963,3384,76],{"href":77}," — Set up authentication context",[170,3387,3388,3390],{},[1963,3389,96],{"href":97}," — Enable per-session state",[170,3392,3393,3395],{},[1963,3394,61],{"href":62}," — Create custom MCP endpoints",[3397,3398,3399],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":257,"searchDepth":295,"depth":295,"links":3401},[3402,3403,3410,3411,3412,3413,3420,3421],{"id":147,"depth":295,"text":148},{"id":231,"depth":295,"text":3404,"children":3405},"The enabled Guard",[3406,3407,3408,3409],{"id":249,"depth":316,"text":46},{"id":570,"depth":316,"text":51},{"id":781,"depth":316,"text":56},{"id":1060,"depth":316,"text":1061},{"id":1326,"depth":295,"text":1327},{"id":1680,"depth":295,"text":1681},{"id":1957,"depth":295,"text":1958},{"id":1990,"depth":295,"text":1991,"children":3414},[3415,3416,3417,3418,3419],{"id":2020,"depth":316,"text":2021},{"id":2136,"depth":316,"text":2137},{"id":2498,"depth":316,"text":2499},{"id":3063,"depth":316,"text":3064},{"id":3240,"depth":316,"text":3241},{"id":256,"depth":295,"text":81},{"id":3377,"depth":295,"text":3378},"Conditionally register tools, resources, and prompts based on authentication, roles, or request context.","md",null,{},{"icon":104},{"title":3428,"description":3429},"Dynamic MCP Definitions","Control which MCP tools, resources, and prompts are visible per session using enabled guards and dynamic handlers.","zNIHx_U5NiNlDVrr7Vdld9tVW0WHo16K0Uyzzadgxrw",[3432,3434],{"title":96,"path":97,"stem":98,"description":3433,"icon":99,"children":-1},"Persist per-session state across tool calls with useMcpSession().",{"title":106,"path":107,"stem":108,"description":3435,"icon":109,"children":-1},"Let LLMs orchestrate multiple tool calls in a single JavaScript execution.",1774885097170]