[{"data":1,"prerenderedAt":2801},["ShallowReactive",2],{"navigation_docs":3,"-advanced-sessions":139,"-advanced-sessions-surround":2796},[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":96,"body":141,"description":2787,"extension":2788,"links":2789,"meta":2790,"navigation":2791,"path":97,"seo":2792,"stem":98,"__hash__":2795},"docs\u002F3.advanced\u002F6.sessions.md",{"type":142,"value":143,"toc":2769},"minimark",[144,149,158,240,247,269,273,276,346,352,356,363,453,456,561,567,581,586,589,854,857,879,883,886,973,977,1065,1074,1077,1081,1084,1457,1680,1684,1687,2204,2208,2211,2561,2565,2572,2578,2696,2705,2709,2716,2731,2734,2738,2765],[145,146,148],"h2",{"id":147},"what-are-sessions","What are Sessions?",[150,151,152,153,157],"p",{},"By default, the MCP server is ",[154,155,156],"strong",{},"stateless"," — a fresh server instance is created for every request. This works fine for simple request\u002Fresponse tools, but some scenarios require the server to remember context across multiple tool calls.",[159,160,161],"code-collapse",{},[162,163,169],"pre",{"className":164,"code":165,"filename":166,"language":167,"meta":168,"style":168},"language-txt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Add session support to my Nuxt MCP server (@nuxtjs\u002Fmcp-toolkit).\n\n- Enable sessions in nuxt.config.ts: mcp: { sessions: true }\n- Use useMcpSession\u003CT>() (auto-imported) in tool handlers to get\u002Fset per-session state\n- await session.get(key) and await session.set(key, value) persist data across tool calls in the same session\n- Define a TypeScript interface for your session data and pass it as the generic parameter to useMcpSession\u003CMySession>()\n- Sessions are identified by the MCP-Session-Id header, assigned automatically\n- For custom timeout: mcp: { sessions: { enabled: true, maxDuration: 3600000 } }\n- Sessions also enable SSE streaming and resumability\n\nDocs: https:\u002F\u002Fmcp-toolkit.nuxt.dev\u002Fadvanced\u002Fsessions\n","Prompt","txt","",[170,171,172,180,187,193,199,205,211,217,223,229,234],"code",{"__ignoreMap":168},[173,174,177],"span",{"class":175,"line":176},"line",1,[173,178,179],{},"Add session support to my Nuxt MCP server (@nuxtjs\u002Fmcp-toolkit).\n",[173,181,183],{"class":175,"line":182},2,[173,184,186],{"emptyLinePlaceholder":185},true,"\n",[173,188,190],{"class":175,"line":189},3,[173,191,192],{},"- Enable sessions in nuxt.config.ts: mcp: { sessions: true }\n",[173,194,196],{"class":175,"line":195},4,[173,197,198],{},"- Use useMcpSession\u003CT>() (auto-imported) in tool handlers to get\u002Fset per-session state\n",[173,200,202],{"class":175,"line":201},5,[173,203,204],{},"- await session.get(key) and await session.set(key, value) persist data across tool calls in the same session\n",[173,206,208],{"class":175,"line":207},6,[173,209,210],{},"- Define a TypeScript interface for your session data and pass it as the generic parameter to useMcpSession\u003CMySession>()\n",[173,212,214],{"class":175,"line":213},7,[173,215,216],{},"- Sessions are identified by the MCP-Session-Id header, assigned automatically\n",[173,218,220],{"class":175,"line":219},8,[173,221,222],{},"- For custom timeout: mcp: { sessions: { enabled: true, maxDuration: 3600000 } }\n",[173,224,226],{"class":175,"line":225},9,[173,227,228],{},"- Sessions also enable SSE streaming and resumability\n",[173,230,232],{"class":175,"line":231},10,[173,233,186],{"emptyLinePlaceholder":185},[173,235,237],{"class":175,"line":236},11,[173,238,239],{},"Docs: https:\u002F\u002Fmcp-toolkit.nuxt.dev\u002Fadvanced\u002Fsessions\n",[150,241,242,243,246],{},"When sessions are enabled, the server assigns a unique ",[170,244,245],{},"MCP-Session-Id"," to each client connection. This ID is included in every subsequent request, allowing the server to:",[248,249,250,257,263],"ul",{},[251,252,253,256],"li",{},[154,254,255],{},"Maintain state"," across multiple tool calls within the same conversation",[251,258,259,262],{},[154,260,261],{},"Enable SSE streaming"," for real-time server-to-client communication",[251,264,265,268],{},[154,266,267],{},"Support resumability"," so clients can reconnect to an existing session",[145,270,272],{"id":271},"when-to-use-sessions","When to Use Sessions",[150,274,275],{},"Sessions are useful when your MCP tools need to:",[277,278,279,292],"table",{},[280,281,282],"thead",{},[283,284,285,289],"tr",{},[286,287,288],"th",{},"Use Case",[286,290,291],{},"Example",[293,294,295,306,316,326,336],"tbody",{},[283,296,297,303],{},[298,299,300],"td",{},[154,301,302],{},"Track conversation context",[298,304,305],{},"Remember user preferences, language, or prior answers within a session",[283,307,308,313],{},[298,309,310],{},[154,311,312],{},"Accumulate data",[298,314,315],{},"Build up a shopping cart, a list of notes, or a set of selections across tool calls",[283,317,318,323],{},[298,319,320],{},[154,321,322],{},"Multi-step workflows",[298,324,325],{},"Guide users through a wizard (e.g. form builder, deployment pipeline) where each step depends on previous inputs",[283,327,328,333],{},[298,329,330],{},[154,331,332],{},"Per-session counters",[298,334,335],{},"Track API usage, rate limits, or progress within a session",[283,337,338,343],{},[298,339,340],{},[154,341,342],{},"Temporary caches",[298,344,345],{},"Cache expensive computation results that are only relevant to the current session",[347,348,351],"callout",{"color":349,"icon":350},"info","i-lucide-info","If your tools are purely stateless (e.g. fetching data, performing calculations, reading files), you don't need sessions. Only enable them when state across tool calls adds real value.",[145,353,355],{"id":354},"setup","Setup",[150,357,358,359,362],{},"Enable sessions in your ",[170,360,361],{},"nuxt.config.ts",":",[162,364,368],{"className":365,"code":366,"filename":361,"language":367,"meta":168,"style":168},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['@nuxtjs\u002Fmcp-toolkit'],\n  mcp: {\n    sessions: true,\n  },\n})\n","typescript",[170,369,370,391,417,427,440,445],{"__ignoreMap":168},[173,371,372,376,379,383,387],{"class":175,"line":176},[173,373,375],{"class":374},"s7zQu","export",[173,377,378],{"class":374}," default",[173,380,382],{"class":381},"s2Zo4"," defineNuxtConfig",[173,384,386],{"class":385},"sTEyZ","(",[173,388,390],{"class":389},"sMK4o","{\n",[173,392,393,397,399,402,405,409,411,414],{"class":175,"line":182},[173,394,396],{"class":395},"swJcz","  modules",[173,398,362],{"class":389},[173,400,401],{"class":385}," [",[173,403,404],{"class":389},"'",[173,406,408],{"class":407},"sfazB","@nuxtjs\u002Fmcp-toolkit",[173,410,404],{"class":389},[173,412,413],{"class":385},"]",[173,415,416],{"class":389},",\n",[173,418,419,422,424],{"class":175,"line":189},[173,420,421],{"class":395},"  mcp",[173,423,362],{"class":389},[173,425,426],{"class":389}," {\n",[173,428,429,432,434,438],{"class":175,"line":195},[173,430,431],{"class":395},"    sessions",[173,433,362],{"class":389},[173,435,437],{"class":436},"sfNiH"," true",[173,439,416],{"class":389},[173,441,442],{"class":175,"line":201},[173,443,444],{"class":389},"  },\n",[173,446,447,450],{"class":175,"line":207},[173,448,449],{"class":389},"}",[173,451,452],{"class":385},")\n",[150,454,455],{},"You can also configure the session timeout:",[162,457,459],{"className":365,"code":458,"filename":361,"language":367,"meta":168,"style":168},"export default defineNuxtConfig({\n  modules: ['@nuxtjs\u002Fmcp-toolkit'],\n  mcp: {\n    sessions: {\n      enabled: true,\n      maxDuration: 60 * 60 * 1000, \u002F\u002F 1 hour (default: 30 minutes)\n    },\n  },\n})\n",[170,460,461,473,491,499,507,518,546,551,555],{"__ignoreMap":168},[173,462,463,465,467,469,471],{"class":175,"line":176},[173,464,375],{"class":374},[173,466,378],{"class":374},[173,468,382],{"class":381},[173,470,386],{"class":385},[173,472,390],{"class":389},[173,474,475,477,479,481,483,485,487,489],{"class":175,"line":182},[173,476,396],{"class":395},[173,478,362],{"class":389},[173,480,401],{"class":385},[173,482,404],{"class":389},[173,484,408],{"class":407},[173,486,404],{"class":389},[173,488,413],{"class":385},[173,490,416],{"class":389},[173,492,493,495,497],{"class":175,"line":189},[173,494,421],{"class":395},[173,496,362],{"class":389},[173,498,426],{"class":389},[173,500,501,503,505],{"class":175,"line":195},[173,502,431],{"class":395},[173,504,362],{"class":389},[173,506,426],{"class":389},[173,508,509,512,514,516],{"class":175,"line":201},[173,510,511],{"class":395},"      enabled",[173,513,362],{"class":389},[173,515,437],{"class":436},[173,517,416],{"class":389},[173,519,520,523,525,529,532,534,536,539,542],{"class":175,"line":207},[173,521,522],{"class":395},"      maxDuration",[173,524,362],{"class":389},[173,526,528],{"class":527},"sbssI"," 60",[173,530,531],{"class":389}," *",[173,533,528],{"class":527},[173,535,531],{"class":389},[173,537,538],{"class":527}," 1000",[173,540,541],{"class":389},",",[173,543,545],{"class":544},"sHwdD"," \u002F\u002F 1 hour (default: 30 minutes)\n",[173,547,548],{"class":175,"line":213},[173,549,550],{"class":389},"    },\n",[173,552,553],{"class":175,"line":219},[173,554,444],{"class":389},[173,556,557,559],{"class":175,"line":225},[173,558,449],{"class":389},[173,560,452],{"class":385},[145,562,564],{"id":563},"usemcpsession",[170,565,566],{},"useMcpSession()",[150,568,569,570,572,573,580],{},"The ",[170,571,566],{}," server utility provides a typed, per-session key-value store. It is auto-imported and backed by ",[574,575,579],"a",{"href":576,"rel":577},"https:\u002F\u002Funstorage.unjs.io",[578],"nofollow","unstorage",", so it works with any storage driver out of the box.",[582,583,585],"h3",{"id":584},"typed-session-recommended","Typed Session (Recommended)",[150,587,588],{},"Define an interface for your session data and pass it as a generic. Keys and values are fully type-checked:",[162,590,593],{"className":365,"code":591,"filename":592,"language":367,"meta":168,"style":168},"import { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\ninterface CounterSession {\n  counter: number\n}\n\nexport default defineMcpTool({\n  name: 'increment',\n  description: 'Increment a per-session counter',\n  handler: async () => {\n    const session = useMcpSession\u003CCounterSession>()\n    const count = await session.get('counter') ?? 0\n    await session.set('counter', count + 1)\n    return `Counter: ${count + 1}`\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fcounter.ts",[170,594,595,621,625,637,647,652,656,668,684,700,718,744,783,816,842,847],{"__ignoreMap":168},[173,596,597,600,603,606,609,612,615,618],{"class":175,"line":176},[173,598,599],{"class":374},"import",[173,601,602],{"class":389}," {",[173,604,605],{"class":385}," defineMcpTool",[173,607,608],{"class":389}," }",[173,610,611],{"class":374}," from",[173,613,614],{"class":389}," '",[173,616,617],{"class":407},"@nuxtjs\u002Fmcp-toolkit\u002Fserver",[173,619,620],{"class":389},"'\n",[173,622,623],{"class":175,"line":182},[173,624,186],{"emptyLinePlaceholder":185},[173,626,627,631,635],{"class":175,"line":189},[173,628,630],{"class":629},"spNyl","interface",[173,632,634],{"class":633},"sBMFI"," CounterSession",[173,636,426],{"class":389},[173,638,639,642,644],{"class":175,"line":195},[173,640,641],{"class":395},"  counter",[173,643,362],{"class":389},[173,645,646],{"class":633}," number\n",[173,648,649],{"class":175,"line":201},[173,650,651],{"class":389},"}\n",[173,653,654],{"class":175,"line":207},[173,655,186],{"emptyLinePlaceholder":185},[173,657,658,660,662,664,666],{"class":175,"line":213},[173,659,375],{"class":374},[173,661,378],{"class":374},[173,663,605],{"class":381},[173,665,386],{"class":385},[173,667,390],{"class":389},[173,669,670,673,675,677,680,682],{"class":175,"line":219},[173,671,672],{"class":395},"  name",[173,674,362],{"class":389},[173,676,614],{"class":389},[173,678,679],{"class":407},"increment",[173,681,404],{"class":389},[173,683,416],{"class":389},[173,685,686,689,691,693,696,698],{"class":175,"line":225},[173,687,688],{"class":395},"  description",[173,690,362],{"class":389},[173,692,614],{"class":389},[173,694,695],{"class":407},"Increment a per-session counter",[173,697,404],{"class":389},[173,699,416],{"class":389},[173,701,702,705,707,710,713,716],{"class":175,"line":231},[173,703,704],{"class":381},"  handler",[173,706,362],{"class":389},[173,708,709],{"class":629}," async",[173,711,712],{"class":389}," ()",[173,714,715],{"class":629}," =>",[173,717,426],{"class":389},[173,719,720,723,726,729,732,735,738,741],{"class":175,"line":236},[173,721,722],{"class":629},"    const",[173,724,725],{"class":385}," session",[173,727,728],{"class":389}," =",[173,730,731],{"class":381}," useMcpSession",[173,733,734],{"class":389},"\u003C",[173,736,737],{"class":633},"CounterSession",[173,739,740],{"class":389},">",[173,742,743],{"class":395},"()\n",[173,745,747,749,752,754,757,759,762,765,767,769,772,774,777,780],{"class":175,"line":746},12,[173,748,722],{"class":629},[173,750,751],{"class":385}," count",[173,753,728],{"class":389},[173,755,756],{"class":374}," await",[173,758,725],{"class":385},[173,760,761],{"class":389},".",[173,763,764],{"class":381},"get",[173,766,386],{"class":395},[173,768,404],{"class":389},[173,770,771],{"class":407},"counter",[173,773,404],{"class":389},[173,775,776],{"class":395},") ",[173,778,779],{"class":389},"??",[173,781,782],{"class":527}," 0\n",[173,784,786,789,791,793,796,798,800,802,804,806,808,811,814],{"class":175,"line":785},13,[173,787,788],{"class":374},"    await",[173,790,725],{"class":385},[173,792,761],{"class":389},[173,794,795],{"class":381},"set",[173,797,386],{"class":395},[173,799,404],{"class":389},[173,801,771],{"class":407},[173,803,404],{"class":389},[173,805,541],{"class":389},[173,807,751],{"class":385},[173,809,810],{"class":389}," +",[173,812,813],{"class":527}," 1",[173,815,452],{"class":395},[173,817,819,822,825,828,831,834,837,839],{"class":175,"line":818},14,[173,820,821],{"class":374},"    return",[173,823,824],{"class":389}," `",[173,826,827],{"class":407},"Counter: ",[173,829,830],{"class":389},"${",[173,832,833],{"class":385},"count ",[173,835,836],{"class":389},"+",[173,838,813],{"class":527},[173,840,841],{"class":389},"}`\n",[173,843,845],{"class":175,"line":844},15,[173,846,444],{"class":389},[173,848,850,852],{"class":175,"line":849},16,[173,851,449],{"class":389},[173,853,452],{"class":385},[150,855,856],{},"TypeScript will enforce that:",[248,858,859,868,874],{},[251,860,861,864,865],{},[170,862,863],{},"session.get('counter')"," returns ",[170,866,867],{},"number | null",[251,869,870,873],{},[170,871,872],{},"session.set('counter', 'wrong')"," is a compile error",[251,875,876,873],{},[170,877,878],{},"session.get('unknown_key')",[582,880,882],{"id":881},"untyped-session","Untyped Session",[150,884,885],{},"Without generics, the store accepts any string key and untyped values:",[162,887,889],{"className":365,"code":888,"language":367,"meta":168,"style":168},"const session = useMcpSession()\nawait session.set('key', { any: 'value' })\nconst data = await session.get('key')\n",[170,890,891,906,946],{"__ignoreMap":168},[173,892,893,896,899,902,904],{"class":175,"line":176},[173,894,895],{"class":629},"const",[173,897,898],{"class":385}," session ",[173,900,901],{"class":389},"=",[173,903,731],{"class":381},[173,905,743],{"class":385},[173,907,908,911,913,915,917,919,921,924,926,928,930,933,935,937,940,942,944],{"class":175,"line":182},[173,909,910],{"class":374},"await",[173,912,725],{"class":385},[173,914,761],{"class":389},[173,916,795],{"class":381},[173,918,386],{"class":385},[173,920,404],{"class":389},[173,922,923],{"class":407},"key",[173,925,404],{"class":389},[173,927,541],{"class":389},[173,929,602],{"class":389},[173,931,932],{"class":395}," any",[173,934,362],{"class":389},[173,936,614],{"class":389},[173,938,939],{"class":407},"value",[173,941,404],{"class":389},[173,943,608],{"class":389},[173,945,452],{"class":385},[173,947,948,950,953,955,957,959,961,963,965,967,969,971],{"class":175,"line":189},[173,949,895],{"class":629},[173,951,952],{"class":385}," data ",[173,954,901],{"class":389},[173,956,756],{"class":374},[173,958,725],{"class":385},[173,960,761],{"class":389},[173,962,764],{"class":381},[173,964,386],{"class":385},[173,966,404],{"class":389},[173,968,923],{"class":407},[173,970,404],{"class":389},[173,972,452],{"class":385},[582,974,976],{"id":975},"api-reference","API Reference",[277,978,979,989],{},[280,980,981],{},[283,982,983,986],{},[286,984,985],{},"Method",[286,987,988],{},"Description",[293,990,991,1005,1015,1025,1035,1045,1055],{},[283,992,993,998],{},[298,994,995],{},[170,996,997],{},"get(key)",[298,999,1000,1001,1004],{},"Retrieve a value by key (returns ",[170,1002,1003],{},"null"," if missing)",[283,1006,1007,1012],{},[298,1008,1009],{},[170,1010,1011],{},"set(key, value)",[298,1013,1014],{},"Store a value for the given key",[283,1016,1017,1022],{},[298,1018,1019],{},[170,1020,1021],{},"remove(key)",[298,1023,1024],{},"Delete a key from the session",[283,1026,1027,1032],{},[298,1028,1029],{},[170,1030,1031],{},"has(key)",[298,1033,1034],{},"Check if a key exists",[283,1036,1037,1042],{},[298,1038,1039],{},[170,1040,1041],{},"keys()",[298,1043,1044],{},"List all keys in the session",[283,1046,1047,1052],{},[298,1048,1049],{},[170,1050,1051],{},"clear()",[298,1053,1054],{},"Remove all data from the session",[283,1056,1057,1062],{},[298,1058,1059],{},[170,1060,1061],{},"storage",[298,1063,1064],{},"Access the underlying unstorage instance",[150,1066,1067,1068,1070,1071,761],{},"All methods except ",[170,1069,1061],{}," are asynchronous and return a ",[170,1072,1073],{},"Promise",[145,1075,111],{"id":1076},"examples",[582,1078,1080],{"id":1079},"notepad","Notepad",[150,1082,1083],{},"A pair of tools that let the AI take notes during a conversation and retrieve them later:",[162,1085,1088],{"className":365,"code":1086,"filename":1087,"language":367,"meta":168,"style":168},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\ninterface NotesSession {\n  notes: { text: string, createdAt: string }[]\n}\n\nexport default defineMcpTool({\n  name: 'add_note',\n  description: 'Add a note to the session notepad',\n  inputSchema: {\n    note: z.string().describe('The note content'),\n  },\n  handler: async ({ note }) => {\n    const session = useMcpSession\u003CNotesSession>()\n    const notes = await session.get('notes') ?? []\n    notes.push({ text: note, createdAt: new Date().toISOString() })\n    await session.set('notes', notes)\n    return `Note added (${notes.length} total).`\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fadd-note.ts",[170,1089,1090,1110,1128,1132,1141,1172,1176,1180,1192,1207,1222,1231,1267,1271,1293,1312,1345,1393,1418,1445,1450],{"__ignoreMap":168},[173,1091,1092,1094,1096,1099,1101,1103,1105,1108],{"class":175,"line":176},[173,1093,599],{"class":374},[173,1095,602],{"class":389},[173,1097,1098],{"class":385}," z",[173,1100,608],{"class":389},[173,1102,611],{"class":374},[173,1104,614],{"class":389},[173,1106,1107],{"class":407},"zod",[173,1109,620],{"class":389},[173,1111,1112,1114,1116,1118,1120,1122,1124,1126],{"class":175,"line":182},[173,1113,599],{"class":374},[173,1115,602],{"class":389},[173,1117,605],{"class":385},[173,1119,608],{"class":389},[173,1121,611],{"class":374},[173,1123,614],{"class":389},[173,1125,617],{"class":407},[173,1127,620],{"class":389},[173,1129,1130],{"class":175,"line":189},[173,1131,186],{"emptyLinePlaceholder":185},[173,1133,1134,1136,1139],{"class":175,"line":195},[173,1135,630],{"class":629},[173,1137,1138],{"class":633}," NotesSession",[173,1140,426],{"class":389},[173,1142,1143,1146,1148,1150,1153,1155,1158,1160,1163,1165,1167,1169],{"class":175,"line":201},[173,1144,1145],{"class":395},"  notes",[173,1147,362],{"class":389},[173,1149,602],{"class":389},[173,1151,1152],{"class":395}," text",[173,1154,362],{"class":389},[173,1156,1157],{"class":633}," string",[173,1159,541],{"class":389},[173,1161,1162],{"class":395}," createdAt",[173,1164,362],{"class":389},[173,1166,1157],{"class":633},[173,1168,608],{"class":389},[173,1170,1171],{"class":385},"[]\n",[173,1173,1174],{"class":175,"line":207},[173,1175,651],{"class":389},[173,1177,1178],{"class":175,"line":213},[173,1179,186],{"emptyLinePlaceholder":185},[173,1181,1182,1184,1186,1188,1190],{"class":175,"line":219},[173,1183,375],{"class":374},[173,1185,378],{"class":374},[173,1187,605],{"class":381},[173,1189,386],{"class":385},[173,1191,390],{"class":389},[173,1193,1194,1196,1198,1200,1203,1205],{"class":175,"line":225},[173,1195,672],{"class":395},[173,1197,362],{"class":389},[173,1199,614],{"class":389},[173,1201,1202],{"class":407},"add_note",[173,1204,404],{"class":389},[173,1206,416],{"class":389},[173,1208,1209,1211,1213,1215,1218,1220],{"class":175,"line":231},[173,1210,688],{"class":395},[173,1212,362],{"class":389},[173,1214,614],{"class":389},[173,1216,1217],{"class":407},"Add a note to the session notepad",[173,1219,404],{"class":389},[173,1221,416],{"class":389},[173,1223,1224,1227,1229],{"class":175,"line":236},[173,1225,1226],{"class":395},"  inputSchema",[173,1228,362],{"class":389},[173,1230,426],{"class":389},[173,1232,1233,1236,1238,1240,1242,1245,1248,1250,1253,1255,1257,1260,1262,1265],{"class":175,"line":746},[173,1234,1235],{"class":395},"    note",[173,1237,362],{"class":389},[173,1239,1098],{"class":385},[173,1241,761],{"class":389},[173,1243,1244],{"class":381},"string",[173,1246,1247],{"class":385},"()",[173,1249,761],{"class":389},[173,1251,1252],{"class":381},"describe",[173,1254,386],{"class":385},[173,1256,404],{"class":389},[173,1258,1259],{"class":407},"The note content",[173,1261,404],{"class":389},[173,1263,1264],{"class":385},")",[173,1266,416],{"class":389},[173,1268,1269],{"class":175,"line":785},[173,1270,444],{"class":389},[173,1272,1273,1275,1277,1279,1282,1286,1289,1291],{"class":175,"line":818},[173,1274,704],{"class":381},[173,1276,362],{"class":389},[173,1278,709],{"class":629},[173,1280,1281],{"class":389}," ({",[173,1283,1285],{"class":1284},"sHdIc"," note",[173,1287,1288],{"class":389}," })",[173,1290,715],{"class":629},[173,1292,426],{"class":389},[173,1294,1295,1297,1299,1301,1303,1305,1308,1310],{"class":175,"line":844},[173,1296,722],{"class":629},[173,1298,725],{"class":385},[173,1300,728],{"class":389},[173,1302,731],{"class":381},[173,1304,734],{"class":389},[173,1306,1307],{"class":633},"NotesSession",[173,1309,740],{"class":389},[173,1311,743],{"class":395},[173,1313,1314,1316,1319,1321,1323,1325,1327,1329,1331,1333,1336,1338,1340,1342],{"class":175,"line":849},[173,1315,722],{"class":629},[173,1317,1318],{"class":385}," notes",[173,1320,728],{"class":389},[173,1322,756],{"class":374},[173,1324,725],{"class":385},[173,1326,761],{"class":389},[173,1328,764],{"class":381},[173,1330,386],{"class":395},[173,1332,404],{"class":389},[173,1334,1335],{"class":407},"notes",[173,1337,404],{"class":389},[173,1339,776],{"class":395},[173,1341,779],{"class":389},[173,1343,1344],{"class":395}," []\n",[173,1346,1348,1351,1353,1356,1358,1361,1363,1365,1367,1369,1371,1373,1376,1379,1381,1383,1386,1389,1391],{"class":175,"line":1347},17,[173,1349,1350],{"class":385},"    notes",[173,1352,761],{"class":389},[173,1354,1355],{"class":381},"push",[173,1357,386],{"class":395},[173,1359,1360],{"class":389},"{",[173,1362,1152],{"class":395},[173,1364,362],{"class":389},[173,1366,1285],{"class":385},[173,1368,541],{"class":389},[173,1370,1162],{"class":395},[173,1372,362],{"class":389},[173,1374,1375],{"class":389}," new",[173,1377,1378],{"class":381}," Date",[173,1380,1247],{"class":395},[173,1382,761],{"class":389},[173,1384,1385],{"class":381},"toISOString",[173,1387,1388],{"class":395},"() ",[173,1390,449],{"class":389},[173,1392,452],{"class":395},[173,1394,1396,1398,1400,1402,1404,1406,1408,1410,1412,1414,1416],{"class":175,"line":1395},18,[173,1397,788],{"class":374},[173,1399,725],{"class":385},[173,1401,761],{"class":389},[173,1403,795],{"class":381},[173,1405,386],{"class":395},[173,1407,404],{"class":389},[173,1409,1335],{"class":407},[173,1411,404],{"class":389},[173,1413,541],{"class":389},[173,1415,1318],{"class":385},[173,1417,452],{"class":395},[173,1419,1421,1423,1425,1428,1430,1432,1434,1437,1439,1442],{"class":175,"line":1420},19,[173,1422,821],{"class":374},[173,1424,824],{"class":389},[173,1426,1427],{"class":407},"Note added (",[173,1429,830],{"class":389},[173,1431,1335],{"class":385},[173,1433,761],{"class":389},[173,1435,1436],{"class":385},"length",[173,1438,449],{"class":389},[173,1440,1441],{"class":407}," total).",[173,1443,1444],{"class":389},"`\n",[173,1446,1448],{"class":175,"line":1447},20,[173,1449,444],{"class":389},[173,1451,1453,1455],{"class":175,"line":1452},21,[173,1454,449],{"class":389},[173,1456,452],{"class":385},[162,1458,1461],{"className":365,"code":1459,"filename":1460,"language":367,"meta":168,"style":168},"import { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\ninterface NotesSession {\n  notes: { text: string, createdAt: string }[]\n}\n\nexport default defineMcpTool({\n  name: 'get_notes',\n  description: 'Retrieve all notes from the session notepad',\n  handler: async () => {\n    const session = useMcpSession\u003CNotesSession>()\n    const notes = await session.get('notes') ?? []\n    if (notes.length === 0) return 'No notes yet.'\n    return notes\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fget-notes.ts",[170,1462,1463,1481,1485,1493,1519,1523,1527,1539,1554,1569,1583,1601,1631,1663,1670,1674],{"__ignoreMap":168},[173,1464,1465,1467,1469,1471,1473,1475,1477,1479],{"class":175,"line":176},[173,1466,599],{"class":374},[173,1468,602],{"class":389},[173,1470,605],{"class":385},[173,1472,608],{"class":389},[173,1474,611],{"class":374},[173,1476,614],{"class":389},[173,1478,617],{"class":407},[173,1480,620],{"class":389},[173,1482,1483],{"class":175,"line":182},[173,1484,186],{"emptyLinePlaceholder":185},[173,1486,1487,1489,1491],{"class":175,"line":189},[173,1488,630],{"class":629},[173,1490,1138],{"class":633},[173,1492,426],{"class":389},[173,1494,1495,1497,1499,1501,1503,1505,1507,1509,1511,1513,1515,1517],{"class":175,"line":195},[173,1496,1145],{"class":395},[173,1498,362],{"class":389},[173,1500,602],{"class":389},[173,1502,1152],{"class":395},[173,1504,362],{"class":389},[173,1506,1157],{"class":633},[173,1508,541],{"class":389},[173,1510,1162],{"class":395},[173,1512,362],{"class":389},[173,1514,1157],{"class":633},[173,1516,608],{"class":389},[173,1518,1171],{"class":385},[173,1520,1521],{"class":175,"line":201},[173,1522,651],{"class":389},[173,1524,1525],{"class":175,"line":207},[173,1526,186],{"emptyLinePlaceholder":185},[173,1528,1529,1531,1533,1535,1537],{"class":175,"line":213},[173,1530,375],{"class":374},[173,1532,378],{"class":374},[173,1534,605],{"class":381},[173,1536,386],{"class":385},[173,1538,390],{"class":389},[173,1540,1541,1543,1545,1547,1550,1552],{"class":175,"line":219},[173,1542,672],{"class":395},[173,1544,362],{"class":389},[173,1546,614],{"class":389},[173,1548,1549],{"class":407},"get_notes",[173,1551,404],{"class":389},[173,1553,416],{"class":389},[173,1555,1556,1558,1560,1562,1565,1567],{"class":175,"line":225},[173,1557,688],{"class":395},[173,1559,362],{"class":389},[173,1561,614],{"class":389},[173,1563,1564],{"class":407},"Retrieve all notes from the session notepad",[173,1566,404],{"class":389},[173,1568,416],{"class":389},[173,1570,1571,1573,1575,1577,1579,1581],{"class":175,"line":231},[173,1572,704],{"class":381},[173,1574,362],{"class":389},[173,1576,709],{"class":629},[173,1578,712],{"class":389},[173,1580,715],{"class":629},[173,1582,426],{"class":389},[173,1584,1585,1587,1589,1591,1593,1595,1597,1599],{"class":175,"line":236},[173,1586,722],{"class":629},[173,1588,725],{"class":385},[173,1590,728],{"class":389},[173,1592,731],{"class":381},[173,1594,734],{"class":389},[173,1596,1307],{"class":633},[173,1598,740],{"class":389},[173,1600,743],{"class":395},[173,1602,1603,1605,1607,1609,1611,1613,1615,1617,1619,1621,1623,1625,1627,1629],{"class":175,"line":746},[173,1604,722],{"class":629},[173,1606,1318],{"class":385},[173,1608,728],{"class":389},[173,1610,756],{"class":374},[173,1612,725],{"class":385},[173,1614,761],{"class":389},[173,1616,764],{"class":381},[173,1618,386],{"class":395},[173,1620,404],{"class":389},[173,1622,1335],{"class":407},[173,1624,404],{"class":389},[173,1626,776],{"class":395},[173,1628,779],{"class":389},[173,1630,1344],{"class":395},[173,1632,1633,1636,1639,1641,1643,1645,1648,1651,1653,1656,1658,1661],{"class":175,"line":785},[173,1634,1635],{"class":374},"    if",[173,1637,1638],{"class":395}," (",[173,1640,1335],{"class":385},[173,1642,761],{"class":389},[173,1644,1436],{"class":385},[173,1646,1647],{"class":389}," ===",[173,1649,1650],{"class":527}," 0",[173,1652,776],{"class":395},[173,1654,1655],{"class":374},"return",[173,1657,614],{"class":389},[173,1659,1660],{"class":407},"No notes yet.",[173,1662,620],{"class":389},[173,1664,1665,1667],{"class":175,"line":818},[173,1666,821],{"class":374},[173,1668,1669],{"class":385}," notes\n",[173,1671,1672],{"class":175,"line":844},[173,1673,444],{"class":389},[173,1675,1676,1678],{"class":175,"line":849},[173,1677,449],{"class":389},[173,1679,452],{"class":385},[582,1681,1683],{"id":1682},"multi-step-wizard","Multi-Step Wizard",[150,1685,1686],{},"Guide the user through a multi-step form where each step depends on the previous one:",[162,1688,1691],{"className":365,"code":1689,"filename":1690,"language":367,"meta":168,"style":168},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\ninterface WizardSession {\n  step: number\n  projectName: string\n  framework: string\n}\n\nexport default defineMcpTool({\n  name: 'wizard_next',\n  description: 'Advance to the next step of the project setup wizard',\n  inputSchema: {\n    answer: z.string().describe('Answer for the current step'),\n  },\n  handler: async ({ answer }) => {\n    const session = useMcpSession\u003CWizardSession>()\n    const step = await session.get('step') ?? 1\n\n    if (step === 1) {\n      await session.set('projectName', answer)\n      await session.set('step', 2)\n      return `Project name set to \"${answer}\". Step 2: Choose a framework (nuxt, next, svelte).`\n    }\n\n    if (step === 2) {\n      await session.set('framework', answer)\n      await session.set('step', 3)\n      const name = await session.get('projectName')\n      return `Creating \"${name}\" with ${answer}. Setup complete!`\n    }\n\n    return 'Wizard already completed. Use session.clear() to restart.'\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fwizard.ts",[170,1692,1693,1711,1729,1733,1742,1751,1761,1770,1774,1778,1790,1805,1820,1828,1860,1864,1883,1902,1935,1939,1955,1981,2007,2030,2036,2041,2058,2084,2110,2139,2170,2175,2180,2192,2197],{"__ignoreMap":168},[173,1694,1695,1697,1699,1701,1703,1705,1707,1709],{"class":175,"line":176},[173,1696,599],{"class":374},[173,1698,602],{"class":389},[173,1700,1098],{"class":385},[173,1702,608],{"class":389},[173,1704,611],{"class":374},[173,1706,614],{"class":389},[173,1708,1107],{"class":407},[173,1710,620],{"class":389},[173,1712,1713,1715,1717,1719,1721,1723,1725,1727],{"class":175,"line":182},[173,1714,599],{"class":374},[173,1716,602],{"class":389},[173,1718,605],{"class":385},[173,1720,608],{"class":389},[173,1722,611],{"class":374},[173,1724,614],{"class":389},[173,1726,617],{"class":407},[173,1728,620],{"class":389},[173,1730,1731],{"class":175,"line":189},[173,1732,186],{"emptyLinePlaceholder":185},[173,1734,1735,1737,1740],{"class":175,"line":195},[173,1736,630],{"class":629},[173,1738,1739],{"class":633}," WizardSession",[173,1741,426],{"class":389},[173,1743,1744,1747,1749],{"class":175,"line":201},[173,1745,1746],{"class":395},"  step",[173,1748,362],{"class":389},[173,1750,646],{"class":633},[173,1752,1753,1756,1758],{"class":175,"line":207},[173,1754,1755],{"class":395},"  projectName",[173,1757,362],{"class":389},[173,1759,1760],{"class":633}," string\n",[173,1762,1763,1766,1768],{"class":175,"line":213},[173,1764,1765],{"class":395},"  framework",[173,1767,362],{"class":389},[173,1769,1760],{"class":633},[173,1771,1772],{"class":175,"line":219},[173,1773,651],{"class":389},[173,1775,1776],{"class":175,"line":225},[173,1777,186],{"emptyLinePlaceholder":185},[173,1779,1780,1782,1784,1786,1788],{"class":175,"line":231},[173,1781,375],{"class":374},[173,1783,378],{"class":374},[173,1785,605],{"class":381},[173,1787,386],{"class":385},[173,1789,390],{"class":389},[173,1791,1792,1794,1796,1798,1801,1803],{"class":175,"line":236},[173,1793,672],{"class":395},[173,1795,362],{"class":389},[173,1797,614],{"class":389},[173,1799,1800],{"class":407},"wizard_next",[173,1802,404],{"class":389},[173,1804,416],{"class":389},[173,1806,1807,1809,1811,1813,1816,1818],{"class":175,"line":746},[173,1808,688],{"class":395},[173,1810,362],{"class":389},[173,1812,614],{"class":389},[173,1814,1815],{"class":407},"Advance to the next step of the project setup wizard",[173,1817,404],{"class":389},[173,1819,416],{"class":389},[173,1821,1822,1824,1826],{"class":175,"line":785},[173,1823,1226],{"class":395},[173,1825,362],{"class":389},[173,1827,426],{"class":389},[173,1829,1830,1833,1835,1837,1839,1841,1843,1845,1847,1849,1851,1854,1856,1858],{"class":175,"line":818},[173,1831,1832],{"class":395},"    answer",[173,1834,362],{"class":389},[173,1836,1098],{"class":385},[173,1838,761],{"class":389},[173,1840,1244],{"class":381},[173,1842,1247],{"class":385},[173,1844,761],{"class":389},[173,1846,1252],{"class":381},[173,1848,386],{"class":385},[173,1850,404],{"class":389},[173,1852,1853],{"class":407},"Answer for the current step",[173,1855,404],{"class":389},[173,1857,1264],{"class":385},[173,1859,416],{"class":389},[173,1861,1862],{"class":175,"line":844},[173,1863,444],{"class":389},[173,1865,1866,1868,1870,1872,1874,1877,1879,1881],{"class":175,"line":849},[173,1867,704],{"class":381},[173,1869,362],{"class":389},[173,1871,709],{"class":629},[173,1873,1281],{"class":389},[173,1875,1876],{"class":1284}," answer",[173,1878,1288],{"class":389},[173,1880,715],{"class":629},[173,1882,426],{"class":389},[173,1884,1885,1887,1889,1891,1893,1895,1898,1900],{"class":175,"line":1347},[173,1886,722],{"class":629},[173,1888,725],{"class":385},[173,1890,728],{"class":389},[173,1892,731],{"class":381},[173,1894,734],{"class":389},[173,1896,1897],{"class":633},"WizardSession",[173,1899,740],{"class":389},[173,1901,743],{"class":395},[173,1903,1904,1906,1909,1911,1913,1915,1917,1919,1921,1923,1926,1928,1930,1932],{"class":175,"line":1395},[173,1905,722],{"class":629},[173,1907,1908],{"class":385}," step",[173,1910,728],{"class":389},[173,1912,756],{"class":374},[173,1914,725],{"class":385},[173,1916,761],{"class":389},[173,1918,764],{"class":381},[173,1920,386],{"class":395},[173,1922,404],{"class":389},[173,1924,1925],{"class":407},"step",[173,1927,404],{"class":389},[173,1929,776],{"class":395},[173,1931,779],{"class":389},[173,1933,1934],{"class":527}," 1\n",[173,1936,1937],{"class":175,"line":1420},[173,1938,186],{"emptyLinePlaceholder":185},[173,1940,1941,1943,1945,1947,1949,1951,1953],{"class":175,"line":1447},[173,1942,1635],{"class":374},[173,1944,1638],{"class":395},[173,1946,1925],{"class":385},[173,1948,1647],{"class":389},[173,1950,813],{"class":527},[173,1952,776],{"class":395},[173,1954,390],{"class":389},[173,1956,1957,1960,1962,1964,1966,1968,1970,1973,1975,1977,1979],{"class":175,"line":1452},[173,1958,1959],{"class":374},"      await",[173,1961,725],{"class":385},[173,1963,761],{"class":389},[173,1965,795],{"class":381},[173,1967,386],{"class":395},[173,1969,404],{"class":389},[173,1971,1972],{"class":407},"projectName",[173,1974,404],{"class":389},[173,1976,541],{"class":389},[173,1978,1876],{"class":385},[173,1980,452],{"class":395},[173,1982,1984,1986,1988,1990,1992,1994,1996,1998,2000,2002,2005],{"class":175,"line":1983},22,[173,1985,1959],{"class":374},[173,1987,725],{"class":385},[173,1989,761],{"class":389},[173,1991,795],{"class":381},[173,1993,386],{"class":395},[173,1995,404],{"class":389},[173,1997,1925],{"class":407},[173,1999,404],{"class":389},[173,2001,541],{"class":389},[173,2003,2004],{"class":527}," 2",[173,2006,452],{"class":395},[173,2008,2010,2013,2015,2018,2020,2023,2025,2028],{"class":175,"line":2009},23,[173,2011,2012],{"class":374},"      return",[173,2014,824],{"class":389},[173,2016,2017],{"class":407},"Project name set to \"",[173,2019,830],{"class":389},[173,2021,2022],{"class":385},"answer",[173,2024,449],{"class":389},[173,2026,2027],{"class":407},"\". Step 2: Choose a framework (nuxt, next, svelte).",[173,2029,1444],{"class":389},[173,2031,2033],{"class":175,"line":2032},24,[173,2034,2035],{"class":389},"    }\n",[173,2037,2039],{"class":175,"line":2038},25,[173,2040,186],{"emptyLinePlaceholder":185},[173,2042,2044,2046,2048,2050,2052,2054,2056],{"class":175,"line":2043},26,[173,2045,1635],{"class":374},[173,2047,1638],{"class":395},[173,2049,1925],{"class":385},[173,2051,1647],{"class":389},[173,2053,2004],{"class":527},[173,2055,776],{"class":395},[173,2057,390],{"class":389},[173,2059,2061,2063,2065,2067,2069,2071,2073,2076,2078,2080,2082],{"class":175,"line":2060},27,[173,2062,1959],{"class":374},[173,2064,725],{"class":385},[173,2066,761],{"class":389},[173,2068,795],{"class":381},[173,2070,386],{"class":395},[173,2072,404],{"class":389},[173,2074,2075],{"class":407},"framework",[173,2077,404],{"class":389},[173,2079,541],{"class":389},[173,2081,1876],{"class":385},[173,2083,452],{"class":395},[173,2085,2087,2089,2091,2093,2095,2097,2099,2101,2103,2105,2108],{"class":175,"line":2086},28,[173,2088,1959],{"class":374},[173,2090,725],{"class":385},[173,2092,761],{"class":389},[173,2094,795],{"class":381},[173,2096,386],{"class":395},[173,2098,404],{"class":389},[173,2100,1925],{"class":407},[173,2102,404],{"class":389},[173,2104,541],{"class":389},[173,2106,2107],{"class":527}," 3",[173,2109,452],{"class":395},[173,2111,2113,2116,2119,2121,2123,2125,2127,2129,2131,2133,2135,2137],{"class":175,"line":2112},29,[173,2114,2115],{"class":629},"      const",[173,2117,2118],{"class":385}," name",[173,2120,728],{"class":389},[173,2122,756],{"class":374},[173,2124,725],{"class":385},[173,2126,761],{"class":389},[173,2128,764],{"class":381},[173,2130,386],{"class":395},[173,2132,404],{"class":389},[173,2134,1972],{"class":407},[173,2136,404],{"class":389},[173,2138,452],{"class":395},[173,2140,2142,2144,2146,2149,2151,2154,2156,2159,2161,2163,2165,2168],{"class":175,"line":2141},30,[173,2143,2012],{"class":374},[173,2145,824],{"class":389},[173,2147,2148],{"class":407},"Creating \"",[173,2150,830],{"class":389},[173,2152,2153],{"class":385},"name",[173,2155,449],{"class":389},[173,2157,2158],{"class":407},"\" with ",[173,2160,830],{"class":389},[173,2162,2022],{"class":385},[173,2164,449],{"class":389},[173,2166,2167],{"class":407},". Setup complete!",[173,2169,1444],{"class":389},[173,2171,2173],{"class":175,"line":2172},31,[173,2174,2035],{"class":389},[173,2176,2178],{"class":175,"line":2177},32,[173,2179,186],{"emptyLinePlaceholder":185},[173,2181,2183,2185,2187,2190],{"class":175,"line":2182},33,[173,2184,821],{"class":374},[173,2186,614],{"class":389},[173,2188,2189],{"class":407},"Wizard already completed. Use session.clear() to restart.",[173,2191,620],{"class":389},[173,2193,2195],{"class":175,"line":2194},34,[173,2196,444],{"class":389},[173,2198,2200,2202],{"class":175,"line":2199},35,[173,2201,449],{"class":389},[173,2203,452],{"class":385},[582,2205,2207],{"id":2206},"user-preferences","User Preferences",[150,2209,2210],{},"Remember user preferences for the duration of the session:",[162,2212,2215],{"className":365,"code":2213,"filename":2214,"language":367,"meta":168,"style":168},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\ninterface PreferencesSession {\n  language: string\n  verbose: boolean\n}\n\nexport default defineMcpTool({\n  name: 'set_preference',\n  description: 'Set a user preference for this session',\n  inputSchema: {\n    language: z.string().optional().describe('Preferred response language'),\n    verbose: z.boolean().optional().describe('Enable verbose output'),\n  },\n  handler: async ({ language, verbose }) => {\n    const session = useMcpSession\u003CPreferencesSession>()\n    if (language) await session.set('language', language)\n    if (verbose !== undefined) await session.set('verbose', verbose)\n    return 'Preferences updated.'\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fset-preference.ts",[170,2216,2217,2235,2253,2257,2266,2275,2285,2289,2293,2305,2320,2335,2343,2382,2421,2425,2449,2468,2501,2540,2551,2555],{"__ignoreMap":168},[173,2218,2219,2221,2223,2225,2227,2229,2231,2233],{"class":175,"line":176},[173,2220,599],{"class":374},[173,2222,602],{"class":389},[173,2224,1098],{"class":385},[173,2226,608],{"class":389},[173,2228,611],{"class":374},[173,2230,614],{"class":389},[173,2232,1107],{"class":407},[173,2234,620],{"class":389},[173,2236,2237,2239,2241,2243,2245,2247,2249,2251],{"class":175,"line":182},[173,2238,599],{"class":374},[173,2240,602],{"class":389},[173,2242,605],{"class":385},[173,2244,608],{"class":389},[173,2246,611],{"class":374},[173,2248,614],{"class":389},[173,2250,617],{"class":407},[173,2252,620],{"class":389},[173,2254,2255],{"class":175,"line":189},[173,2256,186],{"emptyLinePlaceholder":185},[173,2258,2259,2261,2264],{"class":175,"line":195},[173,2260,630],{"class":629},[173,2262,2263],{"class":633}," PreferencesSession",[173,2265,426],{"class":389},[173,2267,2268,2271,2273],{"class":175,"line":201},[173,2269,2270],{"class":395},"  language",[173,2272,362],{"class":389},[173,2274,1760],{"class":633},[173,2276,2277,2280,2282],{"class":175,"line":207},[173,2278,2279],{"class":395},"  verbose",[173,2281,362],{"class":389},[173,2283,2284],{"class":633}," boolean\n",[173,2286,2287],{"class":175,"line":213},[173,2288,651],{"class":389},[173,2290,2291],{"class":175,"line":219},[173,2292,186],{"emptyLinePlaceholder":185},[173,2294,2295,2297,2299,2301,2303],{"class":175,"line":225},[173,2296,375],{"class":374},[173,2298,378],{"class":374},[173,2300,605],{"class":381},[173,2302,386],{"class":385},[173,2304,390],{"class":389},[173,2306,2307,2309,2311,2313,2316,2318],{"class":175,"line":231},[173,2308,672],{"class":395},[173,2310,362],{"class":389},[173,2312,614],{"class":389},[173,2314,2315],{"class":407},"set_preference",[173,2317,404],{"class":389},[173,2319,416],{"class":389},[173,2321,2322,2324,2326,2328,2331,2333],{"class":175,"line":236},[173,2323,688],{"class":395},[173,2325,362],{"class":389},[173,2327,614],{"class":389},[173,2329,2330],{"class":407},"Set a user preference for this session",[173,2332,404],{"class":389},[173,2334,416],{"class":389},[173,2336,2337,2339,2341],{"class":175,"line":746},[173,2338,1226],{"class":395},[173,2340,362],{"class":389},[173,2342,426],{"class":389},[173,2344,2345,2348,2350,2352,2354,2356,2358,2360,2363,2365,2367,2369,2371,2373,2376,2378,2380],{"class":175,"line":785},[173,2346,2347],{"class":395},"    language",[173,2349,362],{"class":389},[173,2351,1098],{"class":385},[173,2353,761],{"class":389},[173,2355,1244],{"class":381},[173,2357,1247],{"class":385},[173,2359,761],{"class":389},[173,2361,2362],{"class":381},"optional",[173,2364,1247],{"class":385},[173,2366,761],{"class":389},[173,2368,1252],{"class":381},[173,2370,386],{"class":385},[173,2372,404],{"class":389},[173,2374,2375],{"class":407},"Preferred response language",[173,2377,404],{"class":389},[173,2379,1264],{"class":385},[173,2381,416],{"class":389},[173,2383,2384,2387,2389,2391,2393,2396,2398,2400,2402,2404,2406,2408,2410,2412,2415,2417,2419],{"class":175,"line":818},[173,2385,2386],{"class":395},"    verbose",[173,2388,362],{"class":389},[173,2390,1098],{"class":385},[173,2392,761],{"class":389},[173,2394,2395],{"class":381},"boolean",[173,2397,1247],{"class":385},[173,2399,761],{"class":389},[173,2401,2362],{"class":381},[173,2403,1247],{"class":385},[173,2405,761],{"class":389},[173,2407,1252],{"class":381},[173,2409,386],{"class":385},[173,2411,404],{"class":389},[173,2413,2414],{"class":407},"Enable verbose output",[173,2416,404],{"class":389},[173,2418,1264],{"class":385},[173,2420,416],{"class":389},[173,2422,2423],{"class":175,"line":844},[173,2424,444],{"class":389},[173,2426,2427,2429,2431,2433,2435,2438,2440,2443,2445,2447],{"class":175,"line":849},[173,2428,704],{"class":381},[173,2430,362],{"class":389},[173,2432,709],{"class":629},[173,2434,1281],{"class":389},[173,2436,2437],{"class":1284}," language",[173,2439,541],{"class":389},[173,2441,2442],{"class":1284}," verbose",[173,2444,1288],{"class":389},[173,2446,715],{"class":629},[173,2448,426],{"class":389},[173,2450,2451,2453,2455,2457,2459,2461,2464,2466],{"class":175,"line":1347},[173,2452,722],{"class":629},[173,2454,725],{"class":385},[173,2456,728],{"class":389},[173,2458,731],{"class":381},[173,2460,734],{"class":389},[173,2462,2463],{"class":633},"PreferencesSession",[173,2465,740],{"class":389},[173,2467,743],{"class":395},[173,2469,2470,2472,2474,2477,2479,2481,2483,2485,2487,2489,2491,2493,2495,2497,2499],{"class":175,"line":1395},[173,2471,1635],{"class":374},[173,2473,1638],{"class":395},[173,2475,2476],{"class":385},"language",[173,2478,776],{"class":395},[173,2480,910],{"class":374},[173,2482,725],{"class":385},[173,2484,761],{"class":389},[173,2486,795],{"class":381},[173,2488,386],{"class":395},[173,2490,404],{"class":389},[173,2492,2476],{"class":407},[173,2494,404],{"class":389},[173,2496,541],{"class":389},[173,2498,2437],{"class":385},[173,2500,452],{"class":395},[173,2502,2503,2505,2507,2510,2513,2516,2518,2520,2522,2524,2526,2528,2530,2532,2534,2536,2538],{"class":175,"line":1420},[173,2504,1635],{"class":374},[173,2506,1638],{"class":395},[173,2508,2509],{"class":385},"verbose",[173,2511,2512],{"class":389}," !==",[173,2514,2515],{"class":389}," undefined",[173,2517,776],{"class":395},[173,2519,910],{"class":374},[173,2521,725],{"class":385},[173,2523,761],{"class":389},[173,2525,795],{"class":381},[173,2527,386],{"class":395},[173,2529,404],{"class":389},[173,2531,2509],{"class":407},[173,2533,404],{"class":389},[173,2535,541],{"class":389},[173,2537,2442],{"class":385},[173,2539,452],{"class":395},[173,2541,2542,2544,2546,2549],{"class":175,"line":1447},[173,2543,821],{"class":374},[173,2545,614],{"class":389},[173,2547,2548],{"class":407},"Preferences updated.",[173,2550,620],{"class":389},[173,2552,2553],{"class":175,"line":1452},[173,2554,444],{"class":389},[173,2556,2557,2559],{"class":175,"line":1983},[173,2558,449],{"class":389},[173,2560,452],{"class":385},[145,2562,2564],{"id":2563},"custom-storage-driver","Custom Storage Driver",[150,2566,2567,2568,2571],{},"By default, session data is stored ",[154,2569,2570],{},"in memory",". Data is lost when the server restarts, which is fine for development and most use cases.",[150,2573,2574,2575,2577],{},"For production environments where you need persistence or shared state across multiple server instances, configure a different storage backend via the standard Nitro ",[170,2576,1061],{}," config:",[162,2579,2581],{"className":365,"code":2580,"filename":361,"language":367,"meta":168,"style":168},"export default defineNuxtConfig({\n  mcp: { sessions: true },\n  nitro: {\n    storage: {\n      'mcp:sessions': {\n        driver: 'redis',\n        url: 'redis:\u002F\u002Flocalhost:6379',\n      },\n    },\n  },\n})\n",[170,2582,2583,2595,2613,2622,2631,2645,2661,2677,2682,2686,2690],{"__ignoreMap":168},[173,2584,2585,2587,2589,2591,2593],{"class":175,"line":176},[173,2586,375],{"class":374},[173,2588,378],{"class":374},[173,2590,382],{"class":381},[173,2592,386],{"class":385},[173,2594,390],{"class":389},[173,2596,2597,2599,2601,2603,2606,2608,2610],{"class":175,"line":182},[173,2598,421],{"class":395},[173,2600,362],{"class":389},[173,2602,602],{"class":389},[173,2604,2605],{"class":395}," sessions",[173,2607,362],{"class":389},[173,2609,437],{"class":436},[173,2611,2612],{"class":389}," },\n",[173,2614,2615,2618,2620],{"class":175,"line":189},[173,2616,2617],{"class":395},"  nitro",[173,2619,362],{"class":389},[173,2621,426],{"class":389},[173,2623,2624,2627,2629],{"class":175,"line":195},[173,2625,2626],{"class":395},"    storage",[173,2628,362],{"class":389},[173,2630,426],{"class":389},[173,2632,2633,2636,2639,2641,2643],{"class":175,"line":201},[173,2634,2635],{"class":389},"      '",[173,2637,2638],{"class":395},"mcp:sessions",[173,2640,404],{"class":389},[173,2642,362],{"class":389},[173,2644,426],{"class":389},[173,2646,2647,2650,2652,2654,2657,2659],{"class":175,"line":207},[173,2648,2649],{"class":395},"        driver",[173,2651,362],{"class":389},[173,2653,614],{"class":389},[173,2655,2656],{"class":407},"redis",[173,2658,404],{"class":389},[173,2660,416],{"class":389},[173,2662,2663,2666,2668,2670,2673,2675],{"class":175,"line":213},[173,2664,2665],{"class":395},"        url",[173,2667,362],{"class":389},[173,2669,614],{"class":389},[173,2671,2672],{"class":407},"redis:\u002F\u002Flocalhost:6379",[173,2674,404],{"class":389},[173,2676,416],{"class":389},[173,2678,2679],{"class":175,"line":219},[173,2680,2681],{"class":389},"      },\n",[173,2683,2684],{"class":175,"line":225},[173,2685,550],{"class":389},[173,2687,2688],{"class":175,"line":231},[173,2689,444],{"class":389},[173,2691,2692,2694],{"class":175,"line":236},[173,2693,449],{"class":389},[173,2695,452],{"class":385},[150,2697,2698,2699,2704],{},"Any ",[574,2700,2703],{"href":2701,"rel":2702},"https:\u002F\u002Funstorage.unjs.io\u002Fdrivers",[578],"unstorage driver"," can be used: Redis, filesystem, Cloudflare KV, Vercel KV, etc.",[145,2706,2708],{"id":2707},"lifecycle-and-cleanup","Lifecycle and Cleanup",[150,2710,2711,2712,2715],{},"Session data is ",[154,2713,2714],{},"automatically cleaned up"," when:",[248,2717,2718,2724],{},[251,2719,2720,2721,1264],{},"A session is closed by the client (transport ",[170,2722,2723],{},"onclose",[251,2725,2726,2727,2730],{},"A session expires after ",[170,2728,2729],{},"maxDuration"," of inactivity (default: 30 minutes)",[150,2732,2733],{},"You don't need to manage cleanup manually.",[145,2735,2737],{"id":2736},"requirements","Requirements",[347,2739,2742,2747],{"color":2740,"icon":2741},"warning","i-lucide-triangle-alert",[150,2743,2744,2746],{},[170,2745,566],{}," requires:",[248,2748,2749,2755],{},[251,2750,2751,2754],{},[170,2752,2753],{},"mcp.sessions"," to be enabled in your config",[251,2756,2757,2760,2761,2764],{},[170,2758,2759],{},"nitro.experimental.asyncContext"," to be ",[170,2762,2763],{},"true"," (default since Nuxt 3.8+)",[2766,2767,2768],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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}",{"title":168,"searchDepth":182,"depth":182,"links":2770},[2771,2772,2773,2774,2779,2784,2785,2786],{"id":147,"depth":182,"text":148},{"id":271,"depth":182,"text":272},{"id":354,"depth":182,"text":355},{"id":563,"depth":182,"text":566,"children":2775},[2776,2777,2778],{"id":584,"depth":189,"text":585},{"id":881,"depth":189,"text":882},{"id":975,"depth":189,"text":976},{"id":1076,"depth":182,"text":111,"children":2780},[2781,2782,2783],{"id":1079,"depth":189,"text":1080},{"id":1682,"depth":189,"text":1683},{"id":2206,"depth":189,"text":2207},{"id":2563,"depth":182,"text":2564},{"id":2707,"depth":182,"text":2708},{"id":2736,"depth":182,"text":2737},"Persist per-session state across tool calls with useMcpSession().","md",null,{},{"icon":99},{"title":2793,"description":2794},"MCP Session Management","Enable stateful MCP sessions with per-session storage, automatic cleanup, and pluggable backends via unstorage.","3-7OedhFmZ944qq4ng-uCBKS5xQuFyOz2ngKf5gIqWY",[2797,2799],{"title":91,"path":92,"stem":93,"description":2798,"icon":94,"children":-1},"Evaluate MCP tools and workflows with Evalite and the AI SDK MCP client.",{"title":101,"path":102,"stem":103,"description":2800,"icon":104,"children":-1},"Conditionally register tools, resources, and prompts based on authentication, roles, or request context.",1774115717459]