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