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