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