[{"data":1,"prerenderedAt":1606},["ShallowReactive",2],{"navigation_docs":3,"-advanced-custom-paths":282,"-advanced-custom-paths-surround":1601},[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":284,"body":285,"description":1593,"extension":1594,"links":1595,"meta":1596,"navigation":1597,"path":196,"seo":1598,"stem":197,"__hash__":1600},"docs\u002F7.advanced\u002F1.custom-paths.md","Customize MCP definition paths",{"type":286,"value":287,"toc":1578},"minimark",[288,293,297,308,312,319,428,431,437,441,448,453,641,645,819,823,829,905,912,916,919,925,928,1075,1079,1082,1269,1272,1302,1306,1309,1432,1436,1439,1450,1515,1519,1552,1556,1574],[289,290,292],"h2",{"id":291},"default-path-structure","Default Path Structure",[294,295,296],"p",{},"By default, the module looks for definitions in:",[298,299,304],"pre",{"className":300,"code":302,"language":303},[301],"language-text","server\u002F\n└── mcp\u002F\n    ├── tools\u002F\n    │   └── # Tool definitions\n    ├── resources\u002F\n    │   └── # Resource definitions\n    └── prompts\u002F\n        └── # Prompt definitions\n","text",[305,306,302],"code",{"__ignoreMap":307},"",[289,309,311],{"id":310},"changing-the-base-directory","Changing the Base Directory",[294,313,314,315,318],{},"Change the base directory using the ",[305,316,317],{},"dir"," configuration option:",[298,320,325],{"className":321,"code":322,"filename":323,"language":324,"meta":307,"style":307},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['@nuxtjs\u002Fmcp-toolkit'],\n  mcp: {\n    dir: 'my-mcp', \u002F\u002F Look in server\u002Fmy-mcp\u002F instead of server\u002Fmcp\u002F\n  },\n})\n","nuxt.config.ts","typescript",[305,326,327,351,379,390,413,419],{"__ignoreMap":307},[328,329,332,336,339,343,347],"span",{"class":330,"line":331},"line",1,[328,333,335],{"class":334},"s7zQu","export",[328,337,338],{"class":334}," default",[328,340,342],{"class":341},"s2Zo4"," defineNuxtConfig",[328,344,346],{"class":345},"sTEyZ","(",[328,348,350],{"class":349},"sMK4o","{\n",[328,352,354,358,361,364,367,371,373,376],{"class":330,"line":353},2,[328,355,357],{"class":356},"swJcz","  modules",[328,359,360],{"class":349},":",[328,362,363],{"class":345}," [",[328,365,366],{"class":349},"'",[328,368,370],{"class":369},"sfazB","@nuxtjs\u002Fmcp-toolkit",[328,372,366],{"class":349},[328,374,375],{"class":345},"]",[328,377,378],{"class":349},",\n",[328,380,382,385,387],{"class":330,"line":381},3,[328,383,384],{"class":356},"  mcp",[328,386,360],{"class":349},[328,388,389],{"class":349}," {\n",[328,391,393,396,398,401,404,406,409],{"class":330,"line":392},4,[328,394,395],{"class":356},"    dir",[328,397,360],{"class":349},[328,399,400],{"class":349}," '",[328,402,403],{"class":369},"my-mcp",[328,405,366],{"class":349},[328,407,408],{"class":349},",",[328,410,412],{"class":411},"sHwdD"," \u002F\u002F Look in server\u002Fmy-mcp\u002F instead of server\u002Fmcp\u002F\n",[328,414,416],{"class":330,"line":415},5,[328,417,418],{"class":349},"  },\n",[328,420,422,425],{"class":330,"line":421},6,[328,423,424],{"class":349},"}",[328,426,427],{"class":345},")\n",[294,429,430],{},"This will look for definitions in:",[298,432,435],{"className":433,"code":434,"language":303},[301],"server\u002F\n└── my-mcp\u002F\n    ├── tools\u002F\n    │   └── # Tool definitions\n    ├── resources\u002F\n    │   └── # Resource definitions\n    └── prompts\u002F\n        └── # Prompt definitions\n",[305,436,434],{"__ignoreMap":307},[289,438,440],{"id":439},"extending-paths-with-hooks","Extending Paths with Hooks",[294,442,443,444,447],{},"For more advanced use cases, use the ",[305,445,446],{},"mcp:definitions:paths"," hook to add additional directories to scan. This is useful when you want to share definitions across multiple modules or layers.",[449,450,452],"h3",{"id":451},"using-the-hook-in-nuxtconfigts","Using the Hook in nuxt.config.ts",[298,454,456],{"className":321,"code":455,"filename":323,"language":324,"meta":307,"style":307},"export default defineNuxtConfig({\n  modules: ['@nuxtjs\u002Fmcp-toolkit'],\n  hooks: {\n    'mcp:definitions:paths'(paths) {\n      \u002F\u002F Add additional paths for tools\n      paths.tools.push('shared\u002Ftools')\n\n      \u002F\u002F Add additional paths for resources\n      paths.resources.push('shared\u002Fresources')\n\n      \u002F\u002F Add additional paths for prompts\n      paths.prompts.push('shared\u002Fprompts')\n    },\n  },\n})\n",[305,457,458,470,488,497,517,522,549,556,562,587,592,598,623,629,634],{"__ignoreMap":307},[328,459,460,462,464,466,468],{"class":330,"line":331},[328,461,335],{"class":334},[328,463,338],{"class":334},[328,465,342],{"class":341},[328,467,346],{"class":345},[328,469,350],{"class":349},[328,471,472,474,476,478,480,482,484,486],{"class":330,"line":353},[328,473,357],{"class":356},[328,475,360],{"class":349},[328,477,363],{"class":345},[328,479,366],{"class":349},[328,481,370],{"class":369},[328,483,366],{"class":349},[328,485,375],{"class":345},[328,487,378],{"class":349},[328,489,490,493,495],{"class":330,"line":381},[328,491,492],{"class":356},"  hooks",[328,494,360],{"class":349},[328,496,389],{"class":349},[328,498,499,502,504,506,508,512,515],{"class":330,"line":392},[328,500,501],{"class":349},"    '",[328,503,446],{"class":369},[328,505,366],{"class":349},[328,507,346],{"class":349},[328,509,511],{"class":510},"sHdIc","paths",[328,513,514],{"class":349},")",[328,516,389],{"class":349},[328,518,519],{"class":330,"line":415},[328,520,521],{"class":411},"      \u002F\u002F Add additional paths for tools\n",[328,523,524,527,530,533,535,538,540,542,545,547],{"class":330,"line":421},[328,525,526],{"class":345},"      paths",[328,528,529],{"class":349},".",[328,531,532],{"class":345},"tools",[328,534,529],{"class":349},[328,536,537],{"class":341},"push",[328,539,346],{"class":356},[328,541,366],{"class":349},[328,543,544],{"class":369},"shared\u002Ftools",[328,546,366],{"class":349},[328,548,427],{"class":356},[328,550,552],{"class":330,"line":551},7,[328,553,555],{"emptyLinePlaceholder":554},true,"\n",[328,557,559],{"class":330,"line":558},8,[328,560,561],{"class":411},"      \u002F\u002F Add additional paths for resources\n",[328,563,565,567,569,572,574,576,578,580,583,585],{"class":330,"line":564},9,[328,566,526],{"class":345},[328,568,529],{"class":349},[328,570,571],{"class":345},"resources",[328,573,529],{"class":349},[328,575,537],{"class":341},[328,577,346],{"class":356},[328,579,366],{"class":349},[328,581,582],{"class":369},"shared\u002Fresources",[328,584,366],{"class":349},[328,586,427],{"class":356},[328,588,590],{"class":330,"line":589},10,[328,591,555],{"emptyLinePlaceholder":554},[328,593,595],{"class":330,"line":594},11,[328,596,597],{"class":411},"      \u002F\u002F Add additional paths for prompts\n",[328,599,601,603,605,608,610,612,614,616,619,621],{"class":330,"line":600},12,[328,602,526],{"class":345},[328,604,529],{"class":349},[328,606,607],{"class":345},"prompts",[328,609,529],{"class":349},[328,611,537],{"class":341},[328,613,346],{"class":356},[328,615,366],{"class":349},[328,617,618],{"class":369},"shared\u002Fprompts",[328,620,366],{"class":349},[328,622,427],{"class":356},[328,624,626],{"class":330,"line":625},13,[328,627,628],{"class":349},"    },\n",[328,630,632],{"class":330,"line":631},14,[328,633,418],{"class":349},[328,635,637,639],{"class":330,"line":636},15,[328,638,424],{"class":349},[328,640,427],{"class":345},[449,642,644],{"id":643},"using-the-hook-in-a-custom-module","Using the Hook in a Custom Module",[298,646,649],{"className":321,"code":647,"filename":648,"language":324,"meta":307,"style":307},"export default defineNuxtModule({\n  setup(options, nuxt) {\n    nuxt.hook('mcp:definitions:paths', (paths) => {\n      \u002F\u002F Add additional paths for tools\n      paths.tools.push('shared\u002Ftools')\n\n      \u002F\u002F Add additional paths for resources\n      paths.resources.push('shared\u002Fresources')\n\n      \u002F\u002F Add additional paths for prompts\n      paths.prompts.push('shared\u002Fprompts')\n    })\n  },\n})\n","my-module.ts",[305,650,651,664,683,716,720,742,746,750,772,776,780,802,809,813],{"__ignoreMap":307},[328,652,653,655,657,660,662],{"class":330,"line":331},[328,654,335],{"class":334},[328,656,338],{"class":334},[328,658,659],{"class":341}," defineNuxtModule",[328,661,346],{"class":345},[328,663,350],{"class":349},[328,665,666,669,671,674,676,679,681],{"class":330,"line":353},[328,667,668],{"class":356},"  setup",[328,670,346],{"class":349},[328,672,673],{"class":510},"options",[328,675,408],{"class":349},[328,677,678],{"class":510}," nuxt",[328,680,514],{"class":349},[328,682,389],{"class":349},[328,684,685,688,690,693,695,697,699,701,703,706,708,710,714],{"class":330,"line":381},[328,686,687],{"class":345},"    nuxt",[328,689,529],{"class":349},[328,691,692],{"class":341},"hook",[328,694,346],{"class":356},[328,696,366],{"class":349},[328,698,446],{"class":369},[328,700,366],{"class":349},[328,702,408],{"class":349},[328,704,705],{"class":349}," (",[328,707,511],{"class":510},[328,709,514],{"class":349},[328,711,713],{"class":712},"spNyl"," =>",[328,715,389],{"class":349},[328,717,718],{"class":330,"line":392},[328,719,521],{"class":411},[328,721,722,724,726,728,730,732,734,736,738,740],{"class":330,"line":415},[328,723,526],{"class":345},[328,725,529],{"class":349},[328,727,532],{"class":345},[328,729,529],{"class":349},[328,731,537],{"class":341},[328,733,346],{"class":356},[328,735,366],{"class":349},[328,737,544],{"class":369},[328,739,366],{"class":349},[328,741,427],{"class":356},[328,743,744],{"class":330,"line":421},[328,745,555],{"emptyLinePlaceholder":554},[328,747,748],{"class":330,"line":551},[328,749,561],{"class":411},[328,751,752,754,756,758,760,762,764,766,768,770],{"class":330,"line":558},[328,753,526],{"class":345},[328,755,529],{"class":349},[328,757,571],{"class":345},[328,759,529],{"class":349},[328,761,537],{"class":341},[328,763,346],{"class":356},[328,765,366],{"class":349},[328,767,582],{"class":369},[328,769,366],{"class":349},[328,771,427],{"class":356},[328,773,774],{"class":330,"line":564},[328,775,555],{"emptyLinePlaceholder":554},[328,777,778],{"class":330,"line":589},[328,779,597],{"class":411},[328,781,782,784,786,788,790,792,794,796,798,800],{"class":330,"line":594},[328,783,526],{"class":345},[328,785,529],{"class":349},[328,787,607],{"class":345},[328,789,529],{"class":349},[328,791,537],{"class":341},[328,793,346],{"class":356},[328,795,366],{"class":349},[328,797,618],{"class":369},[328,799,366],{"class":349},[328,801,427],{"class":356},[328,803,804,807],{"class":330,"line":600},[328,805,806],{"class":349},"    }",[328,808,427],{"class":356},[328,810,811],{"class":330,"line":625},[328,812,418],{"class":349},[328,814,815,817],{"class":330,"line":631},[328,816,424],{"class":349},[328,818,427],{"class":345},[289,820,822],{"id":821},"path-structure","Path Structure",[294,824,825,826,828],{},"The ",[305,827,511],{}," object has the following structure:",[298,830,832],{"className":321,"code":831,"language":324,"meta":307,"style":307},"{\n  tools: string[]      \u002F\u002F Array of tool directory paths\n  resources: string[]  \u002F\u002F Array of resource directory paths\n  prompts: string[]    \u002F\u002F Array of prompt directory paths\n  handlers: string[]   \u002F\u002F Array of handler directory paths\n}\n",[305,833,834,838,855,870,885,900],{"__ignoreMap":307},[328,835,836],{"class":330,"line":331},[328,837,350],{"class":349},[328,839,840,844,846,849,852],{"class":330,"line":353},[328,841,843],{"class":842},"sBMFI","  tools",[328,845,360],{"class":349},[328,847,848],{"class":345}," string",[328,850,851],{"class":356},"[]      ",[328,853,854],{"class":411},"\u002F\u002F Array of tool directory paths\n",[328,856,857,860,862,864,867],{"class":330,"line":381},[328,858,859],{"class":842},"  resources",[328,861,360],{"class":349},[328,863,848],{"class":345},[328,865,866],{"class":356},"[]  ",[328,868,869],{"class":411},"\u002F\u002F Array of resource directory paths\n",[328,871,872,875,877,879,882],{"class":330,"line":392},[328,873,874],{"class":842},"  prompts",[328,876,360],{"class":349},[328,878,848],{"class":345},[328,880,881],{"class":356},"[]    ",[328,883,884],{"class":411},"\u002F\u002F Array of prompt directory paths\n",[328,886,887,890,892,894,897],{"class":330,"line":415},[328,888,889],{"class":842},"  handlers",[328,891,360],{"class":349},[328,893,848],{"class":345},[328,895,896],{"class":356},"[]   ",[328,898,899],{"class":411},"\u002F\u002F Array of handler directory paths\n",[328,901,902],{"class":330,"line":421},[328,903,904],{"class":349},"}\n",[294,906,907,908,911],{},"All paths are relative to the ",[305,909,910],{},"server\u002F"," directory of each Nuxt layer.",[289,913,915],{"id":914},"example-shared-definitions","Example: Shared Definitions",[294,917,918],{},"Share definitions across multiple Nuxt layers:",[298,920,923],{"className":921,"code":922,"language":303},[301],"project\u002F\n├── shared\u002F\n│   ├── tools\u002F\n│   │   └── common-tool.ts\n│   └── resources\u002F\n│       └── common-resource.ts\n└── apps\u002F\n    ├── web\u002F\n    │   └── server\u002F\n    │       └── mcp\u002F\n    │           └── tools\u002F\n    │               └── web-tool.ts\n    └── api\u002F\n        └── server\u002F\n            └── mcp\u002F\n                └── tools\u002F\n                    └── api-tool.ts\n",[305,924,922],{"__ignoreMap":307},[294,926,927],{},"Configure the hook to include shared definitions:",[298,929,931],{"className":321,"code":930,"filename":323,"language":324,"meta":307,"style":307},"export default defineNuxtConfig({\n  modules: ['@nuxtjs\u002Fmcp-toolkit'],\n  hooks: {\n    'mcp:definitions:paths'(paths) {\n      \u002F\u002F Include shared tools from project root\n      paths.tools.push('..\u002F..\u002Fshared\u002Ftools')\n      paths.resources.push('..\u002F..\u002Fshared\u002Fresources')\n      paths.prompts.push('..\u002F..\u002Fshared\u002Fprompts')\n    },\n  },\n})\n",[305,932,933,945,963,971,987,992,1015,1038,1061,1065,1069],{"__ignoreMap":307},[328,934,935,937,939,941,943],{"class":330,"line":331},[328,936,335],{"class":334},[328,938,338],{"class":334},[328,940,342],{"class":341},[328,942,346],{"class":345},[328,944,350],{"class":349},[328,946,947,949,951,953,955,957,959,961],{"class":330,"line":353},[328,948,357],{"class":356},[328,950,360],{"class":349},[328,952,363],{"class":345},[328,954,366],{"class":349},[328,956,370],{"class":369},[328,958,366],{"class":349},[328,960,375],{"class":345},[328,962,378],{"class":349},[328,964,965,967,969],{"class":330,"line":381},[328,966,492],{"class":356},[328,968,360],{"class":349},[328,970,389],{"class":349},[328,972,973,975,977,979,981,983,985],{"class":330,"line":392},[328,974,501],{"class":349},[328,976,446],{"class":369},[328,978,366],{"class":349},[328,980,346],{"class":349},[328,982,511],{"class":510},[328,984,514],{"class":349},[328,986,389],{"class":349},[328,988,989],{"class":330,"line":415},[328,990,991],{"class":411},"      \u002F\u002F Include shared tools from project root\n",[328,993,994,996,998,1000,1002,1004,1006,1008,1011,1013],{"class":330,"line":421},[328,995,526],{"class":345},[328,997,529],{"class":349},[328,999,532],{"class":345},[328,1001,529],{"class":349},[328,1003,537],{"class":341},[328,1005,346],{"class":356},[328,1007,366],{"class":349},[328,1009,1010],{"class":369},"..\u002F..\u002Fshared\u002Ftools",[328,1012,366],{"class":349},[328,1014,427],{"class":356},[328,1016,1017,1019,1021,1023,1025,1027,1029,1031,1034,1036],{"class":330,"line":551},[328,1018,526],{"class":345},[328,1020,529],{"class":349},[328,1022,571],{"class":345},[328,1024,529],{"class":349},[328,1026,537],{"class":341},[328,1028,346],{"class":356},[328,1030,366],{"class":349},[328,1032,1033],{"class":369},"..\u002F..\u002Fshared\u002Fresources",[328,1035,366],{"class":349},[328,1037,427],{"class":356},[328,1039,1040,1042,1044,1046,1048,1050,1052,1054,1057,1059],{"class":330,"line":558},[328,1041,526],{"class":345},[328,1043,529],{"class":349},[328,1045,607],{"class":345},[328,1047,529],{"class":349},[328,1049,537],{"class":341},[328,1051,346],{"class":356},[328,1053,366],{"class":349},[328,1055,1056],{"class":369},"..\u002F..\u002Fshared\u002Fprompts",[328,1058,366],{"class":349},[328,1060,427],{"class":356},[328,1062,1063],{"class":330,"line":564},[328,1064,628],{"class":349},[328,1066,1067],{"class":330,"line":589},[328,1068,418],{"class":349},[328,1070,1071,1073],{"class":330,"line":594},[328,1072,424],{"class":349},[328,1074,427],{"class":345},[289,1076,1078],{"id":1077},"example-multiple-source-directories","Example: Multiple Source Directories",[294,1080,1081],{},"Scan multiple directories for definitions:",[298,1083,1085],{"className":321,"code":1084,"filename":323,"language":324,"meta":307,"style":307},"export default defineNuxtConfig({\n  modules: ['@nuxtjs\u002Fmcp-toolkit'],\n  mcp: {\n    dir: 'mcp', \u002F\u002F Default directory\n  },\n  hooks: {\n    'mcp:definitions:paths'(paths) {\n      \u002F\u002F Add additional tool directories\n      paths.tools.push('legacy-tools')\n      paths.tools.push('new-tools')\n\n      \u002F\u002F Add additional resource directories\n      paths.resources.push('external-resources')\n    },\n  },\n})\n",[305,1086,1087,1099,1117,1125,1143,1147,1155,1171,1176,1199,1222,1226,1231,1254,1258,1262],{"__ignoreMap":307},[328,1088,1089,1091,1093,1095,1097],{"class":330,"line":331},[328,1090,335],{"class":334},[328,1092,338],{"class":334},[328,1094,342],{"class":341},[328,1096,346],{"class":345},[328,1098,350],{"class":349},[328,1100,1101,1103,1105,1107,1109,1111,1113,1115],{"class":330,"line":353},[328,1102,357],{"class":356},[328,1104,360],{"class":349},[328,1106,363],{"class":345},[328,1108,366],{"class":349},[328,1110,370],{"class":369},[328,1112,366],{"class":349},[328,1114,375],{"class":345},[328,1116,378],{"class":349},[328,1118,1119,1121,1123],{"class":330,"line":381},[328,1120,384],{"class":356},[328,1122,360],{"class":349},[328,1124,389],{"class":349},[328,1126,1127,1129,1131,1133,1136,1138,1140],{"class":330,"line":392},[328,1128,395],{"class":356},[328,1130,360],{"class":349},[328,1132,400],{"class":349},[328,1134,1135],{"class":369},"mcp",[328,1137,366],{"class":349},[328,1139,408],{"class":349},[328,1141,1142],{"class":411}," \u002F\u002F Default directory\n",[328,1144,1145],{"class":330,"line":415},[328,1146,418],{"class":349},[328,1148,1149,1151,1153],{"class":330,"line":421},[328,1150,492],{"class":356},[328,1152,360],{"class":349},[328,1154,389],{"class":349},[328,1156,1157,1159,1161,1163,1165,1167,1169],{"class":330,"line":551},[328,1158,501],{"class":349},[328,1160,446],{"class":369},[328,1162,366],{"class":349},[328,1164,346],{"class":349},[328,1166,511],{"class":510},[328,1168,514],{"class":349},[328,1170,389],{"class":349},[328,1172,1173],{"class":330,"line":558},[328,1174,1175],{"class":411},"      \u002F\u002F Add additional tool directories\n",[328,1177,1178,1180,1182,1184,1186,1188,1190,1192,1195,1197],{"class":330,"line":564},[328,1179,526],{"class":345},[328,1181,529],{"class":349},[328,1183,532],{"class":345},[328,1185,529],{"class":349},[328,1187,537],{"class":341},[328,1189,346],{"class":356},[328,1191,366],{"class":349},[328,1193,1194],{"class":369},"legacy-tools",[328,1196,366],{"class":349},[328,1198,427],{"class":356},[328,1200,1201,1203,1205,1207,1209,1211,1213,1215,1218,1220],{"class":330,"line":589},[328,1202,526],{"class":345},[328,1204,529],{"class":349},[328,1206,532],{"class":345},[328,1208,529],{"class":349},[328,1210,537],{"class":341},[328,1212,346],{"class":356},[328,1214,366],{"class":349},[328,1216,1217],{"class":369},"new-tools",[328,1219,366],{"class":349},[328,1221,427],{"class":356},[328,1223,1224],{"class":330,"line":594},[328,1225,555],{"emptyLinePlaceholder":554},[328,1227,1228],{"class":330,"line":600},[328,1229,1230],{"class":411},"      \u002F\u002F Add additional resource directories\n",[328,1232,1233,1235,1237,1239,1241,1243,1245,1247,1250,1252],{"class":330,"line":625},[328,1234,526],{"class":345},[328,1236,529],{"class":349},[328,1238,571],{"class":345},[328,1240,529],{"class":349},[328,1242,537],{"class":341},[328,1244,346],{"class":356},[328,1246,366],{"class":349},[328,1248,1249],{"class":369},"external-resources",[328,1251,366],{"class":349},[328,1253,427],{"class":356},[328,1255,1256],{"class":330,"line":631},[328,1257,628],{"class":349},[328,1259,1260],{"class":330,"line":636},[328,1261,418],{"class":349},[328,1263,1265,1267],{"class":330,"line":1264},16,[328,1266,424],{"class":349},[328,1268,427],{"class":345},[294,1270,1271],{},"This will scan:",[1273,1274,1275,1282,1287,1292,1297],"ul",{},[1276,1277,1278,1281],"li",{},[305,1279,1280],{},"server\u002Fmcp\u002Ftools\u002F"," (default)",[1276,1283,1284],{},[305,1285,1286],{},"server\u002Flegacy-tools\u002F",[1276,1288,1289],{},[305,1290,1291],{},"server\u002Fnew-tools\u002F",[1276,1293,1294,1281],{},[305,1295,1296],{},"server\u002Fmcp\u002Fresources\u002F",[1276,1298,1299],{},[305,1300,1301],{},"server\u002Fexternal-resources\u002F",[289,1303,1305],{"id":1304},"example-layer-specific-paths","Example: Layer-Specific Paths",[294,1307,1308],{},"In a Nuxt layer setup, configure paths per layer:",[298,1310,1313],{"className":321,"code":1311,"filename":1312,"language":324,"meta":307,"style":307},"export default defineNuxtConfig({\n  modules: ['@nuxtjs\u002Fmcp-toolkit'],\n  hooks: {\n    'mcp:definitions:paths'(paths) {\n      \u002F\u002F Only include API-specific tools\n      paths.tools = ['api\u002Ftools']\n      paths.resources = ['api\u002Fresources']\n    },\n  },\n})\n","layers\u002Fapi\u002Fnuxt.config.ts",[305,1314,1315,1327,1345,1353,1369,1374,1397,1418,1422,1426],{"__ignoreMap":307},[328,1316,1317,1319,1321,1323,1325],{"class":330,"line":331},[328,1318,335],{"class":334},[328,1320,338],{"class":334},[328,1322,342],{"class":341},[328,1324,346],{"class":345},[328,1326,350],{"class":349},[328,1328,1329,1331,1333,1335,1337,1339,1341,1343],{"class":330,"line":353},[328,1330,357],{"class":356},[328,1332,360],{"class":349},[328,1334,363],{"class":345},[328,1336,366],{"class":349},[328,1338,370],{"class":369},[328,1340,366],{"class":349},[328,1342,375],{"class":345},[328,1344,378],{"class":349},[328,1346,1347,1349,1351],{"class":330,"line":381},[328,1348,492],{"class":356},[328,1350,360],{"class":349},[328,1352,389],{"class":349},[328,1354,1355,1357,1359,1361,1363,1365,1367],{"class":330,"line":392},[328,1356,501],{"class":349},[328,1358,446],{"class":369},[328,1360,366],{"class":349},[328,1362,346],{"class":349},[328,1364,511],{"class":510},[328,1366,514],{"class":349},[328,1368,389],{"class":349},[328,1370,1371],{"class":330,"line":415},[328,1372,1373],{"class":411},"      \u002F\u002F Only include API-specific tools\n",[328,1375,1376,1378,1380,1382,1385,1387,1389,1392,1394],{"class":330,"line":421},[328,1377,526],{"class":345},[328,1379,529],{"class":349},[328,1381,532],{"class":345},[328,1383,1384],{"class":349}," =",[328,1386,363],{"class":356},[328,1388,366],{"class":349},[328,1390,1391],{"class":369},"api\u002Ftools",[328,1393,366],{"class":349},[328,1395,1396],{"class":356},"]\n",[328,1398,1399,1401,1403,1405,1407,1409,1411,1414,1416],{"class":330,"line":551},[328,1400,526],{"class":345},[328,1402,529],{"class":349},[328,1404,571],{"class":345},[328,1406,1384],{"class":349},[328,1408,363],{"class":356},[328,1410,366],{"class":349},[328,1412,1413],{"class":369},"api\u002Fresources",[328,1415,366],{"class":349},[328,1417,1396],{"class":356},[328,1419,1420],{"class":330,"line":558},[328,1421,628],{"class":349},[328,1423,1424],{"class":330,"line":564},[328,1425,418],{"class":349},[328,1427,1428,1430],{"class":330,"line":589},[328,1429,424],{"class":349},[328,1431,427],{"class":345},[289,1433,1435],{"id":1434},"path-resolution","Path Resolution",[294,1437,1438],{},"Paths are resolved relative to:",[1440,1441,1442,1447],"ol",{},[1276,1443,825,1444,1446],{},[305,1445,910],{}," directory of the current Nuxt layer",[1276,1448,1449],{},"The project root (for absolute paths)",[298,1451,1453],{"className":321,"code":1452,"language":324,"meta":307,"style":307},"\u002F\u002F Relative to server\u002F\npaths.tools.push('custom\u002Ftools')\n\n\u002F\u002F Absolute from project root\npaths.tools.push('\u002Fabsolute\u002Fpath\u002Fto\u002Ftools')\n",[305,1454,1455,1460,1483,1487,1492],{"__ignoreMap":307},[328,1456,1457],{"class":330,"line":331},[328,1458,1459],{"class":411},"\u002F\u002F Relative to server\u002F\n",[328,1461,1462,1464,1466,1468,1470,1472,1474,1476,1479,1481],{"class":330,"line":353},[328,1463,511],{"class":345},[328,1465,529],{"class":349},[328,1467,532],{"class":345},[328,1469,529],{"class":349},[328,1471,537],{"class":341},[328,1473,346],{"class":345},[328,1475,366],{"class":349},[328,1477,1478],{"class":369},"custom\u002Ftools",[328,1480,366],{"class":349},[328,1482,427],{"class":345},[328,1484,1485],{"class":330,"line":381},[328,1486,555],{"emptyLinePlaceholder":554},[328,1488,1489],{"class":330,"line":392},[328,1490,1491],{"class":411},"\u002F\u002F Absolute from project root\n",[328,1493,1494,1496,1498,1500,1502,1504,1506,1508,1511,1513],{"class":330,"line":415},[328,1495,511],{"class":345},[328,1497,529],{"class":349},[328,1499,532],{"class":345},[328,1501,529],{"class":349},[328,1503,537],{"class":341},[328,1505,346],{"class":345},[328,1507,366],{"class":349},[328,1509,1510],{"class":369},"\u002Fabsolute\u002Fpath\u002Fto\u002Ftools",[328,1512,366],{"class":349},[328,1514,427],{"class":345},[289,1516,1518],{"id":1517},"best-practices","Best Practices",[1440,1520,1521,1528,1534,1540,1546],{},[1276,1522,1523,1527],{},[1524,1525,1526],"strong",{},"Use descriptive directory names",": Make it clear what each directory contains",[1276,1529,1530,1533],{},[1524,1531,1532],{},"Keep paths organized",": Group related definitions together",[1276,1535,1536,1539],{},[1524,1537,1538],{},"Document custom paths",": Add comments explaining why custom paths are used",[1276,1541,1542,1545],{},[1524,1543,1544],{},"Test path resolution",": Ensure paths resolve correctly in all environments",[1276,1547,1548,1551],{},[1524,1549,1550],{},"Consider layer structure",": Use layers for complex multi-app setups",[289,1553,1555],{"id":1554},"next-steps","Next Steps",[1273,1557,1558,1564,1569],{},[1276,1559,1560,1563],{},[1561,1562,123],"a",{"href":128}," - Create multiple MCP endpoints",[1276,1565,1566,1568],{},[1561,1567,224],{"href":225}," - Learn more about hooks",[1276,1570,1571,1573],{},[1561,1572,20],{"href":21}," - Configure the module",[1575,1576,1577],"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 .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 .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 .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 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}",{"title":307,"searchDepth":353,"depth":353,"links":1579},[1580,1581,1582,1586,1587,1588,1589,1590,1591,1592],{"id":291,"depth":353,"text":292},{"id":310,"depth":353,"text":311},{"id":439,"depth":353,"text":440,"children":1583},[1584,1585],{"id":451,"depth":381,"text":452},{"id":643,"depth":381,"text":644},{"id":821,"depth":353,"text":822},{"id":914,"depth":353,"text":915},{"id":1077,"depth":353,"text":1078},{"id":1304,"depth":353,"text":1305},{"id":1434,"depth":353,"text":1435},{"id":1517,"depth":353,"text":1518},{"id":1554,"depth":353,"text":1555},"Customize where the module looks for MCP definitions.","md",null,{},{"title":195,"icon":198},{"title":195,"description":1599},"Customize the directory structure for MCP definitions.","t-X9VLIQ1-LD8u0o-N1kpu3dBkVv1Wbkb0oWRf5jd_g",[1602,1604],{"title":185,"path":186,"stem":187,"description":1603,"icon":188,"children":-1},"UI patterns, unsupported Nuxt features in the iframe, and API reference.",{"title":200,"path":201,"stem":202,"description":1605,"icon":203,"children":-1},"Stream logs to MCP clients and capture structured wide events with useMcpLogger().",1778515863343]