[{"data":1,"prerenderedAt":1439},["ShallowReactive",2],{"navigation_docs":3,"-handlers-sharing-practices":282,"-handlers-sharing-practices-surround":1434},[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":147,"body":284,"description":1425,"extension":1426,"links":1427,"meta":1428,"navigation":1429,"path":148,"seo":1430,"stem":149,"__hash__":1433},"docs\u002F5.handlers\u002F4.sharing-practices.md",{"type":285,"value":286,"toc":1414},"minimark",[287,292,297,301,424,506,510,513,625,730,734,737,819,896,900,915,918,1102,1194,1283,1287,1293,1301,1326,1330,1365,1369,1410],[288,289,291],"h2",{"id":290},"use-cases","Use Cases",[293,294,296],"h3",{"id":295},"_1-feature-separation","1. Feature Separation",[298,299,300],"p",{},"Separate different features into different handlers:",[302,303,309],"pre",{"className":304,"code":305,"filename":306,"language":307,"meta":308,"style":308},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpHandler({\n  name: 'users',\n  tools: [getUserTool, createUserTool, updateUserTool],\n})\n","server\u002Fmcp\u002Fuser-management.ts","typescript","",[310,311,312,345,352,370,391,415],"code",{"__ignoreMap":308},[313,314,317,321,325,329,332,335,338,342],"span",{"class":315,"line":316},"line",1,[313,318,320],{"class":319},"s7zQu","import",[313,322,324],{"class":323},"sMK4o"," {",[313,326,328],{"class":327},"sTEyZ"," defineMcpHandler",[313,330,331],{"class":323}," }",[313,333,334],{"class":319}," from",[313,336,337],{"class":323}," '",[313,339,341],{"class":340},"sfazB","@nuxtjs\u002Fmcp-toolkit\u002Fserver",[313,343,344],{"class":323},"'\n",[313,346,348],{"class":315,"line":347},2,[313,349,351],{"emptyLinePlaceholder":350},true,"\n",[313,353,355,358,361,364,367],{"class":315,"line":354},3,[313,356,357],{"class":319},"export",[313,359,360],{"class":319}," default",[313,362,328],{"class":363},"s2Zo4",[313,365,366],{"class":327},"(",[313,368,369],{"class":323},"{\n",[313,371,373,377,380,382,385,388],{"class":315,"line":372},4,[313,374,376],{"class":375},"swJcz","  name",[313,378,379],{"class":323},":",[313,381,337],{"class":323},[313,383,384],{"class":340},"users",[313,386,387],{"class":323},"'",[313,389,390],{"class":323},",\n",[313,392,394,397,399,402,405,408,410,413],{"class":315,"line":393},5,[313,395,396],{"class":375},"  tools",[313,398,379],{"class":323},[313,400,401],{"class":327}," [getUserTool",[313,403,404],{"class":323},",",[313,406,407],{"class":327}," createUserTool",[313,409,404],{"class":323},[313,411,412],{"class":327}," updateUserTool]",[313,414,390],{"class":323},[313,416,418,421],{"class":315,"line":417},6,[313,419,420],{"class":323},"}",[313,422,423],{"class":327},")\n",[302,425,428],{"className":304,"code":426,"filename":427,"language":307,"meta":308,"style":308},"import { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpHandler({\n  name: 'content',\n  tools: [createPostTool, updatePostTool, deletePostTool],\n})\n","server\u002Fmcp\u002Fcontent-management.ts",[310,429,430,448,452,464,479,500],{"__ignoreMap":308},[313,431,432,434,436,438,440,442,444,446],{"class":315,"line":316},[313,433,320],{"class":319},[313,435,324],{"class":323},[313,437,328],{"class":327},[313,439,331],{"class":323},[313,441,334],{"class":319},[313,443,337],{"class":323},[313,445,341],{"class":340},[313,447,344],{"class":323},[313,449,450],{"class":315,"line":347},[313,451,351],{"emptyLinePlaceholder":350},[313,453,454,456,458,460,462],{"class":315,"line":354},[313,455,357],{"class":319},[313,457,360],{"class":319},[313,459,328],{"class":363},[313,461,366],{"class":327},[313,463,369],{"class":323},[313,465,466,468,470,472,475,477],{"class":315,"line":372},[313,467,376],{"class":375},[313,469,379],{"class":323},[313,471,337],{"class":323},[313,473,474],{"class":340},"content",[313,476,387],{"class":323},[313,478,390],{"class":323},[313,480,481,483,485,488,490,493,495,498],{"class":315,"line":393},[313,482,396],{"class":375},[313,484,379],{"class":323},[313,486,487],{"class":327}," [createPostTool",[313,489,404],{"class":323},[313,491,492],{"class":327}," updatePostTool",[313,494,404],{"class":323},[313,496,497],{"class":327}," deletePostTool]",[313,499,390],{"class":323},[313,501,502,504],{"class":315,"line":417},[313,503,420],{"class":323},[313,505,423],{"class":327},[293,507,509],{"id":508},"_2-versioned-apis","2. Versioned APIs",[298,511,512],{},"Create versioned handlers:",[302,514,517],{"className":304,"code":515,"filename":516,"language":307,"meta":308,"style":308},"import { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpHandler({\n  name: 'api-v1',\n  version: '1.0.0',\n  route: '\u002Fapi\u002Fv1\u002Fmcp',\n  tools: [ ... ],\n})\n","server\u002Fmcp\u002Fapi-v1.ts",[310,518,519,537,541,553,568,584,600,618],{"__ignoreMap":308},[313,520,521,523,525,527,529,531,533,535],{"class":315,"line":316},[313,522,320],{"class":319},[313,524,324],{"class":323},[313,526,328],{"class":327},[313,528,331],{"class":323},[313,530,334],{"class":319},[313,532,337],{"class":323},[313,534,341],{"class":340},[313,536,344],{"class":323},[313,538,539],{"class":315,"line":347},[313,540,351],{"emptyLinePlaceholder":350},[313,542,543,545,547,549,551],{"class":315,"line":354},[313,544,357],{"class":319},[313,546,360],{"class":319},[313,548,328],{"class":363},[313,550,366],{"class":327},[313,552,369],{"class":323},[313,554,555,557,559,561,564,566],{"class":315,"line":372},[313,556,376],{"class":375},[313,558,379],{"class":323},[313,560,337],{"class":323},[313,562,563],{"class":340},"api-v1",[313,565,387],{"class":323},[313,567,390],{"class":323},[313,569,570,573,575,577,580,582],{"class":315,"line":393},[313,571,572],{"class":375},"  version",[313,574,379],{"class":323},[313,576,337],{"class":323},[313,578,579],{"class":340},"1.0.0",[313,581,387],{"class":323},[313,583,390],{"class":323},[313,585,586,589,591,593,596,598],{"class":315,"line":417},[313,587,588],{"class":375},"  route",[313,590,379],{"class":323},[313,592,337],{"class":323},[313,594,595],{"class":340},"\u002Fapi\u002Fv1\u002Fmcp",[313,597,387],{"class":323},[313,599,390],{"class":323},[313,601,603,605,607,610,613,616],{"class":315,"line":602},7,[313,604,396],{"class":375},[313,606,379],{"class":323},[313,608,609],{"class":327}," [ ",[313,611,612],{"class":323},"...",[313,614,615],{"class":327}," ]",[313,617,390],{"class":323},[313,619,621,623],{"class":315,"line":620},8,[313,622,420],{"class":323},[313,624,423],{"class":327},[302,626,629],{"className":304,"code":627,"filename":628,"language":307,"meta":308,"style":308},"import { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpHandler({\n  name: 'api-v2',\n  version: '2.0.0',\n  route: '\u002Fapi\u002Fv2\u002Fmcp',\n  tools: [ ... ],\n})\n","server\u002Fmcp\u002Fapi-v2.ts",[310,630,631,649,653,665,680,695,710,724],{"__ignoreMap":308},[313,632,633,635,637,639,641,643,645,647],{"class":315,"line":316},[313,634,320],{"class":319},[313,636,324],{"class":323},[313,638,328],{"class":327},[313,640,331],{"class":323},[313,642,334],{"class":319},[313,644,337],{"class":323},[313,646,341],{"class":340},[313,648,344],{"class":323},[313,650,651],{"class":315,"line":347},[313,652,351],{"emptyLinePlaceholder":350},[313,654,655,657,659,661,663],{"class":315,"line":354},[313,656,357],{"class":319},[313,658,360],{"class":319},[313,660,328],{"class":363},[313,662,366],{"class":327},[313,664,369],{"class":323},[313,666,667,669,671,673,676,678],{"class":315,"line":372},[313,668,376],{"class":375},[313,670,379],{"class":323},[313,672,337],{"class":323},[313,674,675],{"class":340},"api-v2",[313,677,387],{"class":323},[313,679,390],{"class":323},[313,681,682,684,686,688,691,693],{"class":315,"line":393},[313,683,572],{"class":375},[313,685,379],{"class":323},[313,687,337],{"class":323},[313,689,690],{"class":340},"2.0.0",[313,692,387],{"class":323},[313,694,390],{"class":323},[313,696,697,699,701,703,706,708],{"class":315,"line":417},[313,698,588],{"class":375},[313,700,379],{"class":323},[313,702,337],{"class":323},[313,704,705],{"class":340},"\u002Fapi\u002Fv2\u002Fmcp",[313,707,387],{"class":323},[313,709,390],{"class":323},[313,711,712,714,716,718,720,722],{"class":315,"line":602},[313,713,396],{"class":375},[313,715,379],{"class":323},[313,717,609],{"class":327},[313,719,612],{"class":323},[313,721,615],{"class":327},[313,723,390],{"class":323},[313,725,726,728],{"class":315,"line":620},[313,727,420],{"class":323},[313,729,423],{"class":327},[293,731,733],{"id":732},"_3-domain-specific-handlers","3. Domain-Specific Handlers",[298,735,736],{},"Organize by domain:",[302,738,741],{"className":304,"code":739,"filename":740,"language":307,"meta":308,"style":308},"import { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpHandler({\n  name: 'ecommerce',\n  tools: [addToCartTool, checkoutTool, getProductsTool],\n})\n","server\u002Fmcp\u002Fecommerce.ts",[310,742,743,761,765,777,792,813],{"__ignoreMap":308},[313,744,745,747,749,751,753,755,757,759],{"class":315,"line":316},[313,746,320],{"class":319},[313,748,324],{"class":323},[313,750,328],{"class":327},[313,752,331],{"class":323},[313,754,334],{"class":319},[313,756,337],{"class":323},[313,758,341],{"class":340},[313,760,344],{"class":323},[313,762,763],{"class":315,"line":347},[313,764,351],{"emptyLinePlaceholder":350},[313,766,767,769,771,773,775],{"class":315,"line":354},[313,768,357],{"class":319},[313,770,360],{"class":319},[313,772,328],{"class":363},[313,774,366],{"class":327},[313,776,369],{"class":323},[313,778,779,781,783,785,788,790],{"class":315,"line":372},[313,780,376],{"class":375},[313,782,379],{"class":323},[313,784,337],{"class":323},[313,786,787],{"class":340},"ecommerce",[313,789,387],{"class":323},[313,791,390],{"class":323},[313,793,794,796,798,801,803,806,808,811],{"class":315,"line":393},[313,795,396],{"class":375},[313,797,379],{"class":323},[313,799,800],{"class":327}," [addToCartTool",[313,802,404],{"class":323},[313,804,805],{"class":327}," checkoutTool",[313,807,404],{"class":323},[313,809,810],{"class":327}," getProductsTool]",[313,812,390],{"class":323},[313,814,815,817],{"class":315,"line":417},[313,816,420],{"class":323},[313,818,423],{"class":327},[302,820,823],{"className":304,"code":821,"filename":822,"language":307,"meta":308,"style":308},"import { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpHandler({\n  name: 'analytics',\n  tools: [getStatsTool, generateReportTool],\n})\n","server\u002Fmcp\u002Fanalytics.ts",[310,824,825,843,847,859,874,890],{"__ignoreMap":308},[313,826,827,829,831,833,835,837,839,841],{"class":315,"line":316},[313,828,320],{"class":319},[313,830,324],{"class":323},[313,832,328],{"class":327},[313,834,331],{"class":323},[313,836,334],{"class":319},[313,838,337],{"class":323},[313,840,341],{"class":340},[313,842,344],{"class":323},[313,844,845],{"class":315,"line":347},[313,846,351],{"emptyLinePlaceholder":350},[313,848,849,851,853,855,857],{"class":315,"line":354},[313,850,357],{"class":319},[313,852,360],{"class":319},[313,854,328],{"class":363},[313,856,366],{"class":327},[313,858,369],{"class":323},[313,860,861,863,865,867,870,872],{"class":315,"line":372},[313,862,376],{"class":375},[313,864,379],{"class":323},[313,866,337],{"class":323},[313,868,869],{"class":340},"analytics",[313,871,387],{"class":323},[313,873,390],{"class":323},[313,875,876,878,880,883,885,888],{"class":315,"line":393},[313,877,396],{"class":375},[313,879,379],{"class":323},[313,881,882],{"class":327}," [getStatsTool",[313,884,404],{"class":323},[313,886,887],{"class":327}," generateReportTool]",[313,889,390],{"class":323},[313,891,892,894],{"class":315,"line":417},[313,893,420],{"class":323},[313,895,423],{"class":327},[288,897,899],{"id":898},"sharing-tools-between-handlers","Sharing Tools Between Handlers",[901,902,905,906,910,911,914],"callout",{"color":903,"icon":904},"primary","i-lucide-arrow-right","Prefer the ",[907,908,909],"a",{"href":153},"multi-handler organization"," features (folder convention plus the ",[310,912,913],{},"getMcp*"," function form) for any new handler. The patterns below remain fully supported for explicit, hand-built handler configs.",[298,916,917],{},"You can share tool definitions between handlers by exporting them from a separate file:",[302,919,922],{"className":304,"code":920,"filename":921,"language":307,"meta":308,"style":308},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport const sharedTool = defineMcpTool({\n  name: 'shared-tool',\n  description: 'A shared tool',\n  inputSchema: {\n    input: z.string(),\n  },\n  handler: async ({ input }) => `Shared: ${input}`,\n})\n","server\u002Fmcp\u002Fshared-tools.ts",[310,923,924,944,963,967,987,1002,1018,1028,1048,1054,1095],{"__ignoreMap":308},[313,925,926,928,930,933,935,937,939,942],{"class":315,"line":316},[313,927,320],{"class":319},[313,929,324],{"class":323},[313,931,932],{"class":327}," z",[313,934,331],{"class":323},[313,936,334],{"class":319},[313,938,337],{"class":323},[313,940,941],{"class":340},"zod",[313,943,344],{"class":323},[313,945,946,948,950,953,955,957,959,961],{"class":315,"line":347},[313,947,320],{"class":319},[313,949,324],{"class":323},[313,951,952],{"class":327}," defineMcpTool",[313,954,331],{"class":323},[313,956,334],{"class":319},[313,958,337],{"class":323},[313,960,341],{"class":340},[313,962,344],{"class":323},[313,964,965],{"class":315,"line":354},[313,966,351],{"emptyLinePlaceholder":350},[313,968,969,971,975,978,981,983,985],{"class":315,"line":372},[313,970,357],{"class":319},[313,972,974],{"class":973},"spNyl"," const",[313,976,977],{"class":327}," sharedTool ",[313,979,980],{"class":323},"=",[313,982,952],{"class":363},[313,984,366],{"class":327},[313,986,369],{"class":323},[313,988,989,991,993,995,998,1000],{"class":315,"line":393},[313,990,376],{"class":375},[313,992,379],{"class":323},[313,994,337],{"class":323},[313,996,997],{"class":340},"shared-tool",[313,999,387],{"class":323},[313,1001,390],{"class":323},[313,1003,1004,1007,1009,1011,1014,1016],{"class":315,"line":417},[313,1005,1006],{"class":375},"  description",[313,1008,379],{"class":323},[313,1010,337],{"class":323},[313,1012,1013],{"class":340},"A shared tool",[313,1015,387],{"class":323},[313,1017,390],{"class":323},[313,1019,1020,1023,1025],{"class":315,"line":602},[313,1021,1022],{"class":375},"  inputSchema",[313,1024,379],{"class":323},[313,1026,1027],{"class":323}," {\n",[313,1029,1030,1033,1035,1037,1040,1043,1046],{"class":315,"line":620},[313,1031,1032],{"class":375},"    input",[313,1034,379],{"class":323},[313,1036,932],{"class":327},[313,1038,1039],{"class":323},".",[313,1041,1042],{"class":363},"string",[313,1044,1045],{"class":327},"()",[313,1047,390],{"class":323},[313,1049,1051],{"class":315,"line":1050},9,[313,1052,1053],{"class":323},"  },\n",[313,1055,1057,1060,1062,1065,1068,1072,1075,1078,1081,1084,1087,1090,1093],{"class":315,"line":1056},10,[313,1058,1059],{"class":363},"  handler",[313,1061,379],{"class":323},[313,1063,1064],{"class":973}," async",[313,1066,1067],{"class":323}," ({",[313,1069,1071],{"class":1070},"sHdIc"," input",[313,1073,1074],{"class":323}," })",[313,1076,1077],{"class":973}," =>",[313,1079,1080],{"class":323}," `",[313,1082,1083],{"class":340},"Shared: ",[313,1085,1086],{"class":323},"${",[313,1088,1089],{"class":327},"input",[313,1091,1092],{"class":323},"}`",[313,1094,390],{"class":323},[313,1096,1098,1100],{"class":315,"line":1097},11,[313,1099,420],{"class":323},[313,1101,423],{"class":327},[302,1103,1106],{"className":304,"code":1104,"filename":1105,"language":307,"meta":308,"style":308},"import { sharedTool } from '.\u002Fshared-tools'\nimport { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpHandler({\n  name: 'handler1',\n  tools: [sharedTool],\n})\n","server\u002Fmcp\u002Fhandler1.ts",[310,1107,1108,1128,1146,1150,1162,1177,1188],{"__ignoreMap":308},[313,1109,1110,1112,1114,1117,1119,1121,1123,1126],{"class":315,"line":316},[313,1111,320],{"class":319},[313,1113,324],{"class":323},[313,1115,1116],{"class":327}," sharedTool",[313,1118,331],{"class":323},[313,1120,334],{"class":319},[313,1122,337],{"class":323},[313,1124,1125],{"class":340},".\u002Fshared-tools",[313,1127,344],{"class":323},[313,1129,1130,1132,1134,1136,1138,1140,1142,1144],{"class":315,"line":347},[313,1131,320],{"class":319},[313,1133,324],{"class":323},[313,1135,328],{"class":327},[313,1137,331],{"class":323},[313,1139,334],{"class":319},[313,1141,337],{"class":323},[313,1143,341],{"class":340},[313,1145,344],{"class":323},[313,1147,1148],{"class":315,"line":354},[313,1149,351],{"emptyLinePlaceholder":350},[313,1151,1152,1154,1156,1158,1160],{"class":315,"line":372},[313,1153,357],{"class":319},[313,1155,360],{"class":319},[313,1157,328],{"class":363},[313,1159,366],{"class":327},[313,1161,369],{"class":323},[313,1163,1164,1166,1168,1170,1173,1175],{"class":315,"line":393},[313,1165,376],{"class":375},[313,1167,379],{"class":323},[313,1169,337],{"class":323},[313,1171,1172],{"class":340},"handler1",[313,1174,387],{"class":323},[313,1176,390],{"class":323},[313,1178,1179,1181,1183,1186],{"class":315,"line":417},[313,1180,396],{"class":375},[313,1182,379],{"class":323},[313,1184,1185],{"class":327}," [sharedTool]",[313,1187,390],{"class":323},[313,1189,1190,1192],{"class":315,"line":602},[313,1191,420],{"class":323},[313,1193,423],{"class":327},[302,1195,1198],{"className":304,"code":1196,"filename":1197,"language":307,"meta":308,"style":308},"import { sharedTool } from '.\u002Fshared-tools'\nimport { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpHandler({\n  name: 'handler2',\n  tools: [sharedTool],\n})\n","server\u002Fmcp\u002Fhandler2.ts",[310,1199,1200,1218,1236,1240,1252,1267,1277],{"__ignoreMap":308},[313,1201,1202,1204,1206,1208,1210,1212,1214,1216],{"class":315,"line":316},[313,1203,320],{"class":319},[313,1205,324],{"class":323},[313,1207,1116],{"class":327},[313,1209,331],{"class":323},[313,1211,334],{"class":319},[313,1213,337],{"class":323},[313,1215,1125],{"class":340},[313,1217,344],{"class":323},[313,1219,1220,1222,1224,1226,1228,1230,1232,1234],{"class":315,"line":347},[313,1221,320],{"class":319},[313,1223,324],{"class":323},[313,1225,328],{"class":327},[313,1227,331],{"class":323},[313,1229,334],{"class":319},[313,1231,337],{"class":323},[313,1233,341],{"class":340},[313,1235,344],{"class":323},[313,1237,1238],{"class":315,"line":354},[313,1239,351],{"emptyLinePlaceholder":350},[313,1241,1242,1244,1246,1248,1250],{"class":315,"line":372},[313,1243,357],{"class":319},[313,1245,360],{"class":319},[313,1247,328],{"class":363},[313,1249,366],{"class":327},[313,1251,369],{"class":323},[313,1253,1254,1256,1258,1260,1263,1265],{"class":315,"line":393},[313,1255,376],{"class":375},[313,1257,379],{"class":323},[313,1259,337],{"class":323},[313,1261,1262],{"class":340},"handler2",[313,1264,387],{"class":323},[313,1266,390],{"class":323},[313,1268,1269,1271,1273,1275],{"class":315,"line":417},[313,1270,396],{"class":375},[313,1272,379],{"class":323},[313,1274,1185],{"class":327},[313,1276,390],{"class":323},[313,1278,1279,1281],{"class":315,"line":602},[313,1280,420],{"class":323},[313,1282,423],{"class":327},[288,1284,1286],{"id":1285},"file-organization","File Organization",[298,1288,1289,1290,379],{},"Two conventions can coexist in ",[310,1291,1292],{},"server\u002Fmcp\u002F",[302,1294,1299],{"className":1295,"code":1297,"language":1298},[1296],"language-text","server\u002F\n└── mcp\u002F\n    ├── index.ts              # Default handler override (optional)\n    ├── migration.ts          # Top-level handler (defaults to all tools)\n    ├── tools\u002F                # Default handler tools (orphans)\n    ├── resources\u002F            # Default handler resources (orphans)\n    ├── prompts\u002F              # Default handler prompts (orphans)\n    └── handlers\u002F             # ✨ Named handler folders (recommended)\n        ├── admin\u002F\n        │   ├── index.ts      # Required: defineMcpHandler({ ... })\n        │   ├── tools\u002F        # Auto-attached to \u002Fmcp\u002Fadmin\n        │   └── prompts\u002F\n        └── apps\u002F\n            ├── index.ts\n            └── tools\u002F        # Auto-attached to \u002Fmcp\u002Fapps\n","text",[310,1300,1297],{"__ignoreMap":308},[901,1302,1303,1304,1307,1308,1310,1311,1314,1315,1317,1318,1321,1322,1325],{"color":903,"icon":272},"The ",[310,1305,1306],{},"index.ts"," at the root of ",[310,1309,1292],{}," overrides the default handler configuration. Inside a ",[310,1312,1313],{},"handlers\u002F\u003Cname>\u002F"," directory, ",[310,1316,1306],{}," is required (even as a one-liner: ",[310,1319,1320],{},"export default defineMcpHandler({})",") — it's what registers the ",[310,1323,1324],{},"\u002Fmcp\u002F\u003Cname>"," route.",[288,1327,1329],{"id":1328},"best-practices","Best Practices",[1331,1332,1333,1341,1347,1353,1359],"ol",{},[1334,1335,1336,1340],"li",{},[1337,1338,1339],"strong",{},"Use descriptive names",": Make handler names clear and specific",[1334,1342,1343,1346],{},[1337,1344,1345],{},"Group related functionality",": Put related tools\u002Fresources together",[1334,1348,1349,1352],{},[1337,1350,1351],{},"Version your handlers",": Use semantic versioning for handler versions",[1334,1354,1355,1358],{},[1337,1356,1357],{},"Document your handlers",": Add comments explaining what each handler does",[1334,1360,1361,1364],{},[1337,1362,1363],{},"Keep handlers focused",": Each handler should have a clear, single purpose",[288,1366,1368],{"id":1367},"next-steps","Next Steps",[1370,1371,1372,1380,1385,1390,1395,1400,1405],"ul",{},[1334,1373,1374,1376,1377,1379],{},[907,1375,152],{"href":153}," - Folder convention + ",[310,1378,913],{}," function form",[1334,1381,1382,1384],{},[907,1383,244],{"href":245}," - Orchestrate tools with LLM-generated JavaScript",[1334,1386,1387,1389],{},[907,1388,215],{"href":216}," - Add authentication and logging",[1334,1391,1392,1394],{},[907,1393,239],{"href":240}," - Conditionally register definitions",[1334,1396,1397,1399],{},[907,1398,20],{"href":21}," - Configure the default handler",[1334,1401,1402,1404],{},[907,1403,41],{"href":47}," - Create tools for your handlers",[1334,1406,1407,1409],{},[907,1408,254],{"href":270}," - See more handler examples",[1411,1412,1413],"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 .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 .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}",{"title":308,"searchDepth":347,"depth":347,"links":1415},[1416,1421,1422,1423,1424],{"id":290,"depth":347,"text":291,"children":1417},[1418,1419,1420],{"id":295,"depth":354,"text":296},{"id":508,"depth":354,"text":509},{"id":732,"depth":354,"text":733},{"id":898,"depth":347,"text":899},{"id":1285,"depth":347,"text":1286},{"id":1328,"depth":347,"text":1329},{"id":1367,"depth":347,"text":1368},"Cross-handler tool sharing, file layout, use cases, and next steps.","md",null,{},{"icon":150},{"title":1431,"description":1432},"Sharing tools between handlers","Shared tool definitions, handler file organization, use cases, and best practices.","cTMnJBjW8R04ihzmvRFSYgC2J9RoKQ5h2dF6STHDkEs",[1435,1437],{"title":142,"path":143,"stem":144,"description":1436,"icon":145,"children":-1},"Full handler examples, multiple handlers, routes, and default vs custom comparison.",{"title":152,"path":153,"stem":154,"description":1438,"icon":155,"children":-1},"Auto-attribute auto-discovered definitions to multiple MCP handlers via folder convention, with a function-based escape hatch for cross-cutting cases.",1777888635793]