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