[{"data":1,"prerenderedAt":1523},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-introduction":287,"-getting-started-introduction-surround":1520},[4,40,70,99,122,156,189,258],{"title":5,"path":6,"stem":7,"children":8,"page":39},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24,29,34],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-book-open",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F3.configuration","i-lucide-settings",{"title":25,"path":26,"stem":27,"icon":28},"Inspector","\u002Fgetting-started\u002Finspector","1.getting-started\u002F4.inspector","i-lucide-circuit-board",{"title":30,"path":31,"stem":32,"icon":33},"Connection","\u002Fgetting-started\u002Fconnection","1.getting-started\u002F5.connection","i-lucide-plug",{"title":35,"path":36,"stem":37,"icon":38},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F6.agent-skills","i-lucide-sparkles",false,{"title":41,"path":42,"stem":43,"children":44,"page":39},"Tools","\u002Ftools","2.tools",[45,50,55,60,65],{"title":46,"path":47,"stem":48,"icon":49},"Overview","\u002Ftools\u002Foverview","2.tools\u002F0.overview","i-lucide-wrench",{"title":51,"path":52,"stem":53,"icon":54},"Schema, handler & returns","\u002Ftools\u002Fschema-handler","2.tools\u002F1.schema-handler","i-lucide-braces",{"title":56,"path":57,"stem":58,"icon":59},"Annotations & input examples","\u002Ftools\u002Fannotations","2.tools\u002F2.annotations","i-lucide-badge-info",{"title":61,"path":62,"stem":63,"icon":64},"Errors & caching","\u002Ftools\u002Ferrors-caching","2.tools\u002F3.errors-caching","i-lucide-shield",{"title":66,"path":67,"stem":68,"icon":69},"Groups, files & dynamic registration","\u002Ftools\u002Fgroups-organization","2.tools\u002F4.groups-organization","i-lucide-tags",{"title":71,"path":72,"stem":73,"children":74,"page":39},"Resources","\u002Fresources","3.resources",[75,79,84,89,94],{"title":46,"path":76,"stem":77,"icon":78},"\u002Fresources\u002Foverview","3.resources\u002F0.overview","i-lucide-package",{"title":80,"path":81,"stem":82,"icon":83},"Static resources & structure","\u002Fresources\u002Fstatic-and-structure","3.resources\u002F1.static-and-structure","i-lucide-file-stack",{"title":85,"path":86,"stem":87,"icon":88},"Templates & handlers","\u002Fresources\u002Ftemplates-and-handlers","3.resources\u002F2.templates-and-handlers","i-lucide-git-branch",{"title":90,"path":91,"stem":92,"icon":93},"Metadata, content & errors","\u002Fresources\u002Fcontent-metadata-errors","3.resources\u002F3.content-metadata-errors","i-lucide-layers",{"title":95,"path":96,"stem":97,"icon":98},"Groups & organization","\u002Fresources\u002Forganization","3.resources\u002F4.organization","i-lucide-folder-tree",{"title":100,"path":101,"stem":102,"children":103,"page":39},"Prompts","\u002Fprompts","4.prompts",[104,108,113,117],{"title":46,"path":105,"stem":106,"icon":107},"\u002Fprompts\u002Foverview","4.prompts\u002F0.overview","i-lucide-message-square",{"title":109,"path":110,"stem":111,"icon":112},"Authoring & structure","\u002Fprompts\u002Fauthoring","4.prompts\u002F1.authoring","i-lucide-pen-line",{"title":114,"path":115,"stem":116,"icon":93},"Input, handler & messages","\u002Fprompts\u002Finput-handler-messages","4.prompts\u002F2.input-handler-messages",{"title":118,"path":119,"stem":120,"icon":121},"Patterns & advanced","\u002Fprompts\u002Fpatterns-advanced","4.prompts\u002F3.patterns-advanced","i-lucide-line-chart",{"title":123,"path":124,"stem":125,"children":126,"page":39},"Handlers","\u002Fhandlers","5.handlers",[127,131,136,141,146,151],{"title":46,"path":128,"stem":129,"icon":130},"\u002Fhandlers\u002Foverview","5.handlers\u002F0.overview","i-lucide-server",{"title":132,"path":133,"stem":134,"icon":135},"Default & custom handlers","\u002Fhandlers\u002Fdefault-and-custom","5.handlers\u002F1.default-and-custom","i-lucide-toggle-left",{"title":137,"path":138,"stem":139,"icon":140},"Structure & options","\u002Fhandlers\u002Fstructure-and-options","5.handlers\u002F2.structure-and-options","i-lucide-sliders-horizontal",{"title":142,"path":143,"stem":144,"icon":145},"Examples & routing","\u002Fhandlers\u002Fexamples-routing","5.handlers\u002F3.examples-routing","i-lucide-route",{"title":147,"path":148,"stem":149,"icon":150},"Sharing & practices","\u002Fhandlers\u002Fsharing-practices","5.handlers\u002F4.sharing-practices","i-lucide-share-2",{"title":152,"path":153,"stem":154,"icon":155},"Multi-handler organization","\u002Fhandlers\u002Forganization","5.handlers\u002F5.organization","i-lucide-network",{"title":157,"path":158,"stem":159,"children":160,"page":39},"Apps","\u002Fapps","6.apps",[161,165,170,175,179,184],{"title":46,"path":162,"stem":163,"icon":164},"\u002Fapps\u002Foverview","6.apps\u002F0.overview","i-lucide-app-window",{"title":166,"path":167,"stem":168,"icon":169},"Authoring & defineMcpApp","\u002Fapps\u002Fauthoring","6.apps\u002F1.authoring","i-lucide-code-2",{"title":171,"path":172,"stem":173,"icon":174},"useMcpApp() bridge","\u002Fapps\u002Fuse-mcp-app","6.apps\u002F2.use-mcp-app","i-lucide-message-circle",{"title":176,"path":177,"stem":178,"icon":64},"CSP & build pipeline","\u002Fapps\u002Fcsp-and-wiring","6.apps\u002F3.csp-and-wiring",{"title":180,"path":181,"stem":182,"icon":183},"Testing & publishing","\u002Fapps\u002Ftesting-publishing","6.apps\u002F4.testing-publishing","i-lucide-rocket",{"title":185,"path":186,"stem":187,"icon":188},"Patterns & limits","\u002Fapps\u002Fpatterns-reference","6.apps\u002F5.patterns-reference","i-lucide-book-marked",{"title":190,"path":191,"stem":192,"children":193,"page":39},"Advanced Topics","\u002Fadvanced","7.advanced",[194,199,204,209,214,219,223,228,233,238,243,248,253],{"title":195,"path":196,"stem":197,"icon":198},"Custom Paths","\u002Fadvanced\u002Fcustom-paths","7.advanced\u002F1.custom-paths","i-lucide-folder",{"title":200,"path":201,"stem":202,"icon":203},"Logging","\u002Fadvanced\u002Flogging","7.advanced\u002F10.logging","i-lucide-scroll-text",{"title":205,"path":206,"stem":207,"icon":208},"MCP Apps Internals","\u002Fadvanced\u002Fmcp-apps-internals","7.advanced\u002F11.mcp-apps-internals","i-lucide-cog",{"title":210,"path":211,"stem":212,"icon":213},"Listing Definitions","\u002Fadvanced\u002Flisting-definitions","7.advanced\u002F12.listing-definitions","i-lucide-list",{"title":215,"path":216,"stem":217,"icon":218},"llms.txt discovery","\u002Fadvanced\u002Fllms-txt","7.advanced\u002F13.llms-txt","i-lucide-file-text",{"title":220,"path":221,"stem":222,"icon":64},"Middleware","\u002Fadvanced\u002Fmiddleware","7.advanced\u002F2.middleware",{"title":224,"path":225,"stem":226,"icon":227},"TypeScript","\u002Fadvanced\u002Ftypescript","7.advanced\u002F3.typescript","i-lucide-type",{"title":229,"path":230,"stem":231,"icon":232},"Hooks","\u002Fadvanced\u002Fhooks","7.advanced\u002F4.hooks","i-lucide-webhook",{"title":234,"path":235,"stem":236,"icon":237},"MCP Evals","\u002Fadvanced\u002Fevals","7.advanced\u002F5.evals","i-lucide-flask-conical",{"title":239,"path":240,"stem":241,"icon":242},"Sessions","\u002Fadvanced\u002Fsessions","7.advanced\u002F6.sessions","i-lucide-database",{"title":244,"path":245,"stem":246,"icon":247},"Dynamic Definitions","\u002Fadvanced\u002Fdynamic-definitions","7.advanced\u002F7.dynamic-definitions","i-lucide-toggle-right",{"title":249,"path":250,"stem":251,"icon":252},"Code Mode","\u002Fadvanced\u002Fcode-mode","7.advanced\u002F8.code-mode","i-lucide-code",{"title":254,"path":255,"stem":256,"icon":257},"Elicitation","\u002Fadvanced\u002Felicitation","7.advanced\u002F9.elicitation","i-lucide-message-square-quote",{"title":259,"path":260,"stem":261,"children":262,"page":39},"Examples","\u002Fexamples","8.examples",[263,268,273,278,283],{"title":264,"path":265,"stem":266,"icon":267},"Authentication","\u002Fexamples\u002Fauthentication","8.examples\u002F1.authentication","i-lucide-shield-check",{"title":269,"path":270,"stem":271,"icon":272},"API Integration","\u002Fexamples\u002Fapi-integration","8.examples\u002F2.api-integration","i-lucide-globe",{"title":274,"path":275,"stem":276,"icon":277},"Common Patterns","\u002Fexamples\u002Fcommon-patterns","8.examples\u002F3.common-patterns","i-lucide-lightbulb",{"title":279,"path":280,"stem":281,"icon":282},"File Operations","\u002Fexamples\u002Ffile-operations","8.examples\u002F4.file-operations","i-lucide-file",{"title":284,"path":285,"stem":286,"icon":107},"Prompt Examples","\u002Fexamples\u002Fprompt-examples","8.examples\u002F5.prompt-examples",{"id":288,"title":10,"body":289,"description":1512,"extension":1513,"links":1514,"meta":1515,"navigation":1516,"path":11,"seo":1517,"stem":12,"__hash__":1519},"docs\u002F1.getting-started\u002F1.introduction.md",{"type":290,"value":291,"toc":1498},"minimark",[292,297,309,332,335,339,342,347,368,372,375,407,417,421,424,427,688,691,694,890,893,896,1105,1108,1115,1462,1466,1469,1494],[293,294,296],"h2",{"id":295},"what-is-model-context-protocol","What is Model Context Protocol?",[298,299,300,301,308],"p",{},"The ",[302,303,307],"a",{"href":304,"rel":305},"https:\u002F\u002Fmodelcontextprotocol.io",[306],"nofollow","Model Context Protocol (MCP)"," is an open protocol that enables AI assistants to securely access external data sources and tools. It provides a standardized way for AI applications to:",[310,311,312,320,326],"ul",{},[313,314,315,319],"li",{},[316,317,318],"strong",{},"Access Tools",": Execute functions and operations",[313,321,322,325],{},[316,323,324],{},"Read Resources",": Access files, databases, APIs, and other data sources",[313,327,328,331],{},[316,329,330],{},"Use Prompts",": Leverage predefined prompt templates",[298,333,334],{},"MCP servers act as bridges between AI assistants and external systems, enabling them to interact with your application's data and functionality in a secure, controlled manner.",[293,336,338],{"id":337},"what-is-nuxt-mcp-toolkit","What is Nuxt MCP Toolkit?",[298,340,341],{},"The Nuxt MCP Toolkit makes it incredibly easy to create MCP servers directly in your Nuxt application. Instead of building a separate MCP server, you can define tools, resources, and prompts right alongside your Nuxt application code.",[343,344,346],"h3",{"id":345},"key-benefits","Key Benefits",[348,349,350,356,360,364],"card-group",{},[351,352,355],"card",{"icon":353,"title":354},"i-lucide-zap","Zero Configuration","Automatic discovery of definitions. Just create files in the right directories and they're automatically registered.",[351,357,359],{"icon":227,"title":358},"TypeScript First","Full TypeScript support with auto-imports and complete type safety. All helpers are available globally in your server files.",[351,361,363],{"icon":252,"title":362},"Simple API","Intuitive API that matches the MCP SDK structure, making it easy to migrate existing code or learn from examples.",[351,365,367],{"icon":93,"title":366},"Flexible Architecture","Support for multiple MCP handlers in a single application, custom paths, and hooks for advanced use cases.",[293,369,371],{"id":370},"how-it-works","How It Works",[298,373,374],{},"The module automatically:",[376,377,378,389,395,401],"ol",{},[313,379,380,383,384,388],{},[316,381,382],{},"Scans"," your ",[385,386,387],"code",{},"server\u002Fmcp\u002F"," directory (or custom path) for definitions",[313,390,391,394],{},[316,392,393],{},"Discovers"," tools, resources, and prompts from your files",[313,396,397,400],{},[316,398,399],{},"Registers"," them with the MCP server",[313,402,403,406],{},[316,404,405],{},"Exposes"," an HTTP endpoint for MCP clients to connect",[408,409,414],"pre",{"className":410,"code":412,"language":413},[411],"language-text","server\u002F\n└── mcp\u002F\n    ├── tools\u002F\n    │   ├── echo.ts\n    │   └── calculator.ts\n    ├── resources\u002F\n    │   ├── readme.ts\n    │   └── files.ts\n    └── prompts\u002F\n        ├── greeting.ts\n        └── summarize.ts\n","text",[385,415,412],{"__ignoreMap":416},"",[293,418,420],{"id":419},"core-concepts","Core Concepts",[343,422,41],{"id":423},"tools",[298,425,426],{},"Tools are functions that AI assistants can call. They accept input parameters (validated with Zod) and return results.",[408,428,432],{"className":429,"code":430,"language":431,"meta":416,"style":416},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  name: 'calculate-bmi',\n  inputSchema: {\n    weightKg: z.number(),\n    heightM: z.number(),\n  },\n  handler: async ({ weightKg, heightM }) => {\n    const bmi = weightKg \u002F (heightM * heightM)\n    return `BMI: ${bmi}`\n  },\n})\n","typescript",[385,433,434,467,488,495,513,534,545,566,584,590,623,654,675,680],{"__ignoreMap":416},[435,436,439,443,447,451,454,457,460,464],"span",{"class":437,"line":438},"line",1,[435,440,442],{"class":441},"s7zQu","import",[435,444,446],{"class":445},"sMK4o"," {",[435,448,450],{"class":449},"sTEyZ"," z",[435,452,453],{"class":445}," }",[435,455,456],{"class":441}," from",[435,458,459],{"class":445}," '",[435,461,463],{"class":462},"sfazB","zod",[435,465,466],{"class":445},"'\n",[435,468,470,472,474,477,479,481,483,486],{"class":437,"line":469},2,[435,471,442],{"class":441},[435,473,446],{"class":445},[435,475,476],{"class":449}," defineMcpTool",[435,478,453],{"class":445},[435,480,456],{"class":441},[435,482,459],{"class":445},[435,484,485],{"class":462},"@nuxtjs\u002Fmcp-toolkit\u002Fserver",[435,487,466],{"class":445},[435,489,491],{"class":437,"line":490},3,[435,492,494],{"emptyLinePlaceholder":493},true,"\n",[435,496,498,501,504,507,510],{"class":437,"line":497},4,[435,499,500],{"class":441},"export",[435,502,503],{"class":441}," default",[435,505,476],{"class":506},"s2Zo4",[435,508,509],{"class":449},"(",[435,511,512],{"class":445},"{\n",[435,514,516,520,523,525,528,531],{"class":437,"line":515},5,[435,517,519],{"class":518},"swJcz","  name",[435,521,522],{"class":445},":",[435,524,459],{"class":445},[435,526,527],{"class":462},"calculate-bmi",[435,529,530],{"class":445},"'",[435,532,533],{"class":445},",\n",[435,535,537,540,542],{"class":437,"line":536},6,[435,538,539],{"class":518},"  inputSchema",[435,541,522],{"class":445},[435,543,544],{"class":445}," {\n",[435,546,548,551,553,555,558,561,564],{"class":437,"line":547},7,[435,549,550],{"class":518},"    weightKg",[435,552,522],{"class":445},[435,554,450],{"class":449},[435,556,557],{"class":445},".",[435,559,560],{"class":506},"number",[435,562,563],{"class":449},"()",[435,565,533],{"class":445},[435,567,569,572,574,576,578,580,582],{"class":437,"line":568},8,[435,570,571],{"class":518},"    heightM",[435,573,522],{"class":445},[435,575,450],{"class":449},[435,577,557],{"class":445},[435,579,560],{"class":506},[435,581,563],{"class":449},[435,583,533],{"class":445},[435,585,587],{"class":437,"line":586},9,[435,588,589],{"class":445},"  },\n",[435,591,593,596,598,602,605,609,612,615,618,621],{"class":437,"line":592},10,[435,594,595],{"class":506},"  handler",[435,597,522],{"class":445},[435,599,601],{"class":600},"spNyl"," async",[435,603,604],{"class":445}," ({",[435,606,608],{"class":607},"sHdIc"," weightKg",[435,610,611],{"class":445},",",[435,613,614],{"class":607}," heightM",[435,616,617],{"class":445}," })",[435,619,620],{"class":600}," =>",[435,622,544],{"class":445},[435,624,626,629,632,635,637,640,643,646,649,651],{"class":437,"line":625},11,[435,627,628],{"class":600},"    const",[435,630,631],{"class":449}," bmi",[435,633,634],{"class":445}," =",[435,636,608],{"class":449},[435,638,639],{"class":445}," \u002F",[435,641,642],{"class":518}," (",[435,644,645],{"class":449},"heightM",[435,647,648],{"class":445}," *",[435,650,614],{"class":449},[435,652,653],{"class":518},")\n",[435,655,657,660,663,666,669,672],{"class":437,"line":656},12,[435,658,659],{"class":441},"    return",[435,661,662],{"class":445}," `",[435,664,665],{"class":462},"BMI: ",[435,667,668],{"class":445},"${",[435,670,671],{"class":449},"bmi",[435,673,674],{"class":445},"}`\n",[435,676,678],{"class":437,"line":677},13,[435,679,589],{"class":445},[435,681,683,686],{"class":437,"line":682},14,[435,684,685],{"class":445},"}",[435,687,653],{"class":449},[343,689,71],{"id":690},"resources",[298,692,693],{},"Resources provide access to data via URIs. They can be static files or dynamic data sources.",[408,695,697],{"className":429,"code":696,"language":431,"meta":416,"style":416},"import { defineMcpResource } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpResource({\n  name: 'readme',\n  uri: 'file:\u002F\u002F\u002FREADME.md',\n  handler: async (uri: URL) => {\n    const content = await readFile(uri.pathname, 'utf-8')\n    return {\n      contents: [{ uri: uri.toString(), text: content }],\n    }\n  },\n})\n",[385,698,699,718,722,734,749,765,791,826,832,875,880,884],{"__ignoreMap":416},[435,700,701,703,705,708,710,712,714,716],{"class":437,"line":438},[435,702,442],{"class":441},[435,704,446],{"class":445},[435,706,707],{"class":449}," defineMcpResource",[435,709,453],{"class":445},[435,711,456],{"class":441},[435,713,459],{"class":445},[435,715,485],{"class":462},[435,717,466],{"class":445},[435,719,720],{"class":437,"line":469},[435,721,494],{"emptyLinePlaceholder":493},[435,723,724,726,728,730,732],{"class":437,"line":490},[435,725,500],{"class":441},[435,727,503],{"class":441},[435,729,707],{"class":506},[435,731,509],{"class":449},[435,733,512],{"class":445},[435,735,736,738,740,742,745,747],{"class":437,"line":497},[435,737,519],{"class":518},[435,739,522],{"class":445},[435,741,459],{"class":445},[435,743,744],{"class":462},"readme",[435,746,530],{"class":445},[435,748,533],{"class":445},[435,750,751,754,756,758,761,763],{"class":437,"line":515},[435,752,753],{"class":518},"  uri",[435,755,522],{"class":445},[435,757,459],{"class":445},[435,759,760],{"class":462},"file:\u002F\u002F\u002FREADME.md",[435,762,530],{"class":445},[435,764,533],{"class":445},[435,766,767,769,771,773,775,778,780,784,787,789],{"class":437,"line":536},[435,768,595],{"class":506},[435,770,522],{"class":445},[435,772,601],{"class":600},[435,774,642],{"class":445},[435,776,777],{"class":607},"uri",[435,779,522],{"class":445},[435,781,783],{"class":782},"sBMFI"," URL",[435,785,786],{"class":445},")",[435,788,620],{"class":600},[435,790,544],{"class":445},[435,792,793,795,798,800,803,806,808,810,812,815,817,819,822,824],{"class":437,"line":547},[435,794,628],{"class":600},[435,796,797],{"class":449}," content",[435,799,634],{"class":445},[435,801,802],{"class":441}," await",[435,804,805],{"class":506}," readFile",[435,807,509],{"class":518},[435,809,777],{"class":449},[435,811,557],{"class":445},[435,813,814],{"class":449},"pathname",[435,816,611],{"class":445},[435,818,459],{"class":445},[435,820,821],{"class":462},"utf-8",[435,823,530],{"class":445},[435,825,653],{"class":518},[435,827,828,830],{"class":437,"line":568},[435,829,659],{"class":441},[435,831,544],{"class":445},[435,833,834,837,839,842,845,848,850,852,854,857,859,861,864,866,868,870,873],{"class":437,"line":586},[435,835,836],{"class":518},"      contents",[435,838,522],{"class":445},[435,840,841],{"class":518}," [",[435,843,844],{"class":445},"{",[435,846,847],{"class":518}," uri",[435,849,522],{"class":445},[435,851,847],{"class":449},[435,853,557],{"class":445},[435,855,856],{"class":506},"toString",[435,858,563],{"class":518},[435,860,611],{"class":445},[435,862,863],{"class":518}," text",[435,865,522],{"class":445},[435,867,797],{"class":449},[435,869,453],{"class":445},[435,871,872],{"class":518},"]",[435,874,533],{"class":445},[435,876,877],{"class":437,"line":592},[435,878,879],{"class":445},"    }\n",[435,881,882],{"class":437,"line":625},[435,883,589],{"class":445},[435,885,886,888],{"class":437,"line":656},[435,887,685],{"class":445},[435,889,653],{"class":449},[343,891,100],{"id":892},"prompts",[298,894,895],{},"Prompts are reusable message templates that can include dynamic arguments.",[408,897,899],{"className":429,"code":898,"language":431,"meta":416,"style":416},"import { defineMcpPrompt } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpPrompt({\n  name: 'greeting',\n  inputSchema: {\n    name: z.string(),\n  },\n  handler: async ({ name }) => {\n    return {\n      messages: [{\n        role: 'user',\n        content: { type: 'text', text: `Hello, ${name}!` },\n      }],\n    }\n  },\n})\n",[385,900,901,920,924,936,951,959,977,981,1000,1006,1017,1033,1080,1089,1093,1098],{"__ignoreMap":416},[435,902,903,905,907,910,912,914,916,918],{"class":437,"line":438},[435,904,442],{"class":441},[435,906,446],{"class":445},[435,908,909],{"class":449}," defineMcpPrompt",[435,911,453],{"class":445},[435,913,456],{"class":441},[435,915,459],{"class":445},[435,917,485],{"class":462},[435,919,466],{"class":445},[435,921,922],{"class":437,"line":469},[435,923,494],{"emptyLinePlaceholder":493},[435,925,926,928,930,932,934],{"class":437,"line":490},[435,927,500],{"class":441},[435,929,503],{"class":441},[435,931,909],{"class":506},[435,933,509],{"class":449},[435,935,512],{"class":445},[435,937,938,940,942,944,947,949],{"class":437,"line":497},[435,939,519],{"class":518},[435,941,522],{"class":445},[435,943,459],{"class":445},[435,945,946],{"class":462},"greeting",[435,948,530],{"class":445},[435,950,533],{"class":445},[435,952,953,955,957],{"class":437,"line":515},[435,954,539],{"class":518},[435,956,522],{"class":445},[435,958,544],{"class":445},[435,960,961,964,966,968,970,973,975],{"class":437,"line":536},[435,962,963],{"class":518},"    name",[435,965,522],{"class":445},[435,967,450],{"class":449},[435,969,557],{"class":445},[435,971,972],{"class":506},"string",[435,974,563],{"class":449},[435,976,533],{"class":445},[435,978,979],{"class":437,"line":547},[435,980,589],{"class":445},[435,982,983,985,987,989,991,994,996,998],{"class":437,"line":568},[435,984,595],{"class":506},[435,986,522],{"class":445},[435,988,601],{"class":600},[435,990,604],{"class":445},[435,992,993],{"class":607}," name",[435,995,617],{"class":445},[435,997,620],{"class":600},[435,999,544],{"class":445},[435,1001,1002,1004],{"class":437,"line":586},[435,1003,659],{"class":441},[435,1005,544],{"class":445},[435,1007,1008,1011,1013,1015],{"class":437,"line":592},[435,1009,1010],{"class":518},"      messages",[435,1012,522],{"class":445},[435,1014,841],{"class":518},[435,1016,512],{"class":445},[435,1018,1019,1022,1024,1026,1029,1031],{"class":437,"line":625},[435,1020,1021],{"class":518},"        role",[435,1023,522],{"class":445},[435,1025,459],{"class":445},[435,1027,1028],{"class":462},"user",[435,1030,530],{"class":445},[435,1032,533],{"class":445},[435,1034,1035,1038,1040,1042,1045,1047,1049,1051,1053,1055,1057,1059,1061,1064,1066,1069,1071,1074,1077],{"class":437,"line":656},[435,1036,1037],{"class":518},"        content",[435,1039,522],{"class":445},[435,1041,446],{"class":445},[435,1043,1044],{"class":518}," type",[435,1046,522],{"class":445},[435,1048,459],{"class":445},[435,1050,413],{"class":462},[435,1052,530],{"class":445},[435,1054,611],{"class":445},[435,1056,863],{"class":518},[435,1058,522],{"class":445},[435,1060,662],{"class":445},[435,1062,1063],{"class":462},"Hello, ",[435,1065,668],{"class":445},[435,1067,1068],{"class":449},"name",[435,1070,685],{"class":445},[435,1072,1073],{"class":462},"!",[435,1075,1076],{"class":445},"`",[435,1078,1079],{"class":445}," },\n",[435,1081,1082,1085,1087],{"class":437,"line":677},[435,1083,1084],{"class":445},"      }",[435,1086,872],{"class":518},[435,1088,533],{"class":445},[435,1090,1091],{"class":437,"line":682},[435,1092,879],{"class":445},[435,1094,1096],{"class":437,"line":1095},15,[435,1097,589],{"class":445},[435,1099,1101,1103],{"class":437,"line":1100},16,[435,1102,685],{"class":445},[435,1104,653],{"class":449},[343,1106,157],{"id":1107},"apps",[298,1109,1110,1111,1114],{},"MCP Apps are interactive UI widgets that hosts like Cursor and ChatGPT render inline. Author them as Vue Single-File Components in ",[385,1112,1113],{},"app\u002Fmcp\u002F"," — the toolkit bundles them and serves them as MCP UI resources.",[408,1116,1121],{"className":1117,"code":1118,"filename":1119,"language":1120,"meta":416,"style":416},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { z } from 'zod'\n\ndefineMcpApp({\n  description: 'Pick a colour and preview a palette.',\n  inputSchema: { base: z.string().describe('Hex colour, e.g. #2563eb') },\n  handler: async ({ base }) => ({ structuredContent: await $fetch('\u002Fapi\u002Fpalette', { query: { base } }) }),\n})\n\nconst { data } = useMcpApp()\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cul v-if=\"data\" class=\"swatches\">\n    \u003Cli v-for=\"s in data.swatches\" :key=\"s.hex\" :style=\"{ background: s.hex }\">{{ s.name }}\u003C\u002Fli>\n  \u003C\u002Ful>\n\u003C\u002Ftemplate>\n","app\u002Fmcp\u002Fcolor-picker.vue","vue",[385,1122,1123,1151,1169,1173,1182,1198,1239,1304,1310,1314,1334,1343,1347,1356,1389,1444,1453],{"__ignoreMap":416},[435,1124,1125,1128,1131,1134,1137,1140,1143,1146,1148],{"class":437,"line":438},[435,1126,1127],{"class":445},"\u003C",[435,1129,1130],{"class":518},"script",[435,1132,1133],{"class":600}," setup",[435,1135,1136],{"class":600}," lang",[435,1138,1139],{"class":445},"=",[435,1141,1142],{"class":445},"\"",[435,1144,1145],{"class":462},"ts",[435,1147,1142],{"class":445},[435,1149,1150],{"class":445},">\n",[435,1152,1153,1155,1157,1159,1161,1163,1165,1167],{"class":437,"line":469},[435,1154,442],{"class":441},[435,1156,446],{"class":445},[435,1158,450],{"class":449},[435,1160,453],{"class":445},[435,1162,456],{"class":441},[435,1164,459],{"class":445},[435,1166,463],{"class":462},[435,1168,466],{"class":445},[435,1170,1171],{"class":437,"line":490},[435,1172,494],{"emptyLinePlaceholder":493},[435,1174,1175,1178,1180],{"class":437,"line":497},[435,1176,1177],{"class":506},"defineMcpApp",[435,1179,509],{"class":449},[435,1181,512],{"class":445},[435,1183,1184,1187,1189,1191,1194,1196],{"class":437,"line":515},[435,1185,1186],{"class":518},"  description",[435,1188,522],{"class":445},[435,1190,459],{"class":445},[435,1192,1193],{"class":462},"Pick a colour and preview a palette.",[435,1195,530],{"class":445},[435,1197,533],{"class":445},[435,1199,1200,1202,1204,1206,1209,1211,1213,1215,1217,1219,1221,1224,1226,1228,1231,1233,1236],{"class":437,"line":536},[435,1201,539],{"class":518},[435,1203,522],{"class":445},[435,1205,446],{"class":445},[435,1207,1208],{"class":518}," base",[435,1210,522],{"class":445},[435,1212,450],{"class":449},[435,1214,557],{"class":445},[435,1216,972],{"class":506},[435,1218,563],{"class":449},[435,1220,557],{"class":445},[435,1222,1223],{"class":506},"describe",[435,1225,509],{"class":449},[435,1227,530],{"class":445},[435,1229,1230],{"class":462},"Hex colour, e.g. #2563eb",[435,1232,530],{"class":445},[435,1234,1235],{"class":449},") ",[435,1237,1238],{"class":445},"},\n",[435,1240,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1262,1264,1266,1269,1271,1273,1276,1278,1280,1282,1285,1287,1289,1292,1294,1296,1298,1300,1302],{"class":437,"line":547},[435,1242,595],{"class":506},[435,1244,522],{"class":445},[435,1246,601],{"class":600},[435,1248,604],{"class":445},[435,1250,1208],{"class":607},[435,1252,617],{"class":445},[435,1254,620],{"class":600},[435,1256,642],{"class":449},[435,1258,844],{"class":445},[435,1260,1261],{"class":518}," structuredContent",[435,1263,522],{"class":445},[435,1265,802],{"class":441},[435,1267,1268],{"class":506}," $fetch",[435,1270,509],{"class":449},[435,1272,530],{"class":445},[435,1274,1275],{"class":462},"\u002Fapi\u002Fpalette",[435,1277,530],{"class":445},[435,1279,611],{"class":445},[435,1281,446],{"class":445},[435,1283,1284],{"class":518}," query",[435,1286,522],{"class":445},[435,1288,446],{"class":445},[435,1290,1291],{"class":449}," base ",[435,1293,685],{"class":445},[435,1295,453],{"class":445},[435,1297,1235],{"class":449},[435,1299,685],{"class":445},[435,1301,786],{"class":449},[435,1303,533],{"class":445},[435,1305,1306,1308],{"class":437,"line":568},[435,1307,685],{"class":445},[435,1309,653],{"class":449},[435,1311,1312],{"class":437,"line":586},[435,1313,494],{"emptyLinePlaceholder":493},[435,1315,1316,1319,1321,1324,1326,1328,1331],{"class":437,"line":592},[435,1317,1318],{"class":600},"const",[435,1320,446],{"class":445},[435,1322,1323],{"class":449}," data ",[435,1325,685],{"class":445},[435,1327,634],{"class":445},[435,1329,1330],{"class":506}," useMcpApp",[435,1332,1333],{"class":449},"()\n",[435,1335,1336,1339,1341],{"class":437,"line":625},[435,1337,1338],{"class":445},"\u003C\u002F",[435,1340,1130],{"class":518},[435,1342,1150],{"class":445},[435,1344,1345],{"class":437,"line":656},[435,1346,494],{"emptyLinePlaceholder":493},[435,1348,1349,1351,1354],{"class":437,"line":677},[435,1350,1127],{"class":445},[435,1352,1353],{"class":518},"template",[435,1355,1150],{"class":445},[435,1357,1358,1361,1363,1366,1368,1370,1373,1375,1378,1380,1382,1385,1387],{"class":437,"line":682},[435,1359,1360],{"class":445},"  \u003C",[435,1362,310],{"class":518},[435,1364,1365],{"class":600}," v-if",[435,1367,1139],{"class":445},[435,1369,1142],{"class":445},[435,1371,1372],{"class":462},"data",[435,1374,1142],{"class":445},[435,1376,1377],{"class":600}," class",[435,1379,1139],{"class":445},[435,1381,1142],{"class":445},[435,1383,1384],{"class":462},"swatches",[435,1386,1142],{"class":445},[435,1388,1150],{"class":445},[435,1390,1391,1394,1396,1399,1401,1403,1406,1408,1411,1413,1415,1418,1420,1423,1425,1427,1430,1432,1435,1438,1440,1442],{"class":437,"line":1095},[435,1392,1393],{"class":445},"    \u003C",[435,1395,313],{"class":518},[435,1397,1398],{"class":600}," v-for",[435,1400,1139],{"class":445},[435,1402,1142],{"class":445},[435,1404,1405],{"class":462},"s in data.swatches",[435,1407,1142],{"class":445},[435,1409,1410],{"class":600}," :key",[435,1412,1139],{"class":445},[435,1414,1142],{"class":445},[435,1416,1417],{"class":462},"s.hex",[435,1419,1142],{"class":445},[435,1421,1422],{"class":600}," :style",[435,1424,1139],{"class":445},[435,1426,1142],{"class":445},[435,1428,1429],{"class":462},"{ background: s.hex }",[435,1431,1142],{"class":445},[435,1433,1434],{"class":445},">",[435,1436,1437],{"class":449},"{{ s.name }}",[435,1439,1338],{"class":445},[435,1441,313],{"class":518},[435,1443,1150],{"class":445},[435,1445,1446,1449,1451],{"class":437,"line":1100},[435,1447,1448],{"class":445},"  \u003C\u002F",[435,1450,310],{"class":518},[435,1452,1150],{"class":445},[435,1454,1456,1458,1460],{"class":437,"line":1455},17,[435,1457,1338],{"class":445},[435,1459,1353],{"class":518},[435,1461,1150],{"class":445},[293,1463,1465],{"id":1464},"next-steps","Next Steps",[298,1467,1468],{},"Ready to get started? Check out:",[310,1470,1471,1477,1482,1488],{},[313,1472,1473,1476],{},[302,1474,1475],{"href":16},"Installation Guide"," - Set up the module in your project",[313,1478,1479,1481],{},[302,1480,20],{"href":21}," - Configure the module",[313,1483,1484,1487],{},[302,1485,1486],{"href":47},"Tools Guide"," - Create your first MCP tool",[313,1489,1490,1493],{},[302,1491,1492],{"href":162},"Apps Guide"," - Build interactive UI widgets for AI hosts",[1495,1496,1497],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":416,"searchDepth":469,"depth":469,"links":1499},[1500,1501,1504,1505,1511],{"id":295,"depth":469,"text":296},{"id":337,"depth":469,"text":338,"children":1502},[1503],{"id":345,"depth":490,"text":346},{"id":370,"depth":469,"text":371},{"id":419,"depth":469,"text":420,"children":1506},[1507,1508,1509,1510],{"id":423,"depth":490,"text":41},{"id":690,"depth":490,"text":71},{"id":892,"depth":490,"text":100},{"id":1107,"depth":490,"text":157},{"id":1464,"depth":469,"text":1465},"Learn about the Model Context Protocol and how this module makes it easy to create MCP servers in Nuxt.","md",null,{},{"icon":13},{"title":1518,"description":1512},"Introduction to Nuxt MCP Toolkit","-2g5gS-72BDjsE9gxB2D3ZybeDIfgTQIhxH-cRyktHk",[1514,1521],{"title":15,"path":16,"stem":17,"description":1522,"icon":18,"children":-1},"Install and configure the Nuxt MCP module in your project.",1787670841529]