[{"data":1,"prerenderedAt":1392},["ShallowReactive",2],{"navigation_docs":3,"-handlers-sharing-practices":272,"-handlers-sharing-practices-surround":1387},[4,40,70,99,122,151,184,243],{"title":5,"path":6,"stem":7,"children":8,"page":39},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24,29,34],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-book-open",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F3.configuration","i-lucide-settings",{"title":25,"path":26,"stem":27,"icon":28},"MCP Inspector","\u002Fgetting-started\u002Finspector","1.getting-started\u002F4.inspector","i-lucide-circuit-board",{"title":30,"path":31,"stem":32,"icon":33},"Connection","\u002Fgetting-started\u002Fconnection","1.getting-started\u002F5.connection","i-lucide-plug",{"title":35,"path":36,"stem":37,"icon":38},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F6.agent-skills","i-lucide-sparkles",false,{"title":41,"path":42,"stem":43,"children":44,"page":39},"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],{"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,"children":155,"page":39},"Apps","\u002Fapps","6.apps",[156,160,165,170,174,179],{"title":46,"path":157,"stem":158,"icon":159},"\u002Fapps\u002Foverview","6.apps\u002F0.overview","i-lucide-app-window",{"title":161,"path":162,"stem":163,"icon":164},"Authoring & defineMcpApp","\u002Fapps\u002Fauthoring","6.apps\u002F1.authoring","i-lucide-code-2",{"title":166,"path":167,"stem":168,"icon":169},"useMcpApp() bridge","\u002Fapps\u002Fuse-mcp-app","6.apps\u002F2.use-mcp-app","i-lucide-message-circle",{"title":171,"path":172,"stem":173,"icon":64},"CSP & build pipeline","\u002Fapps\u002Fcsp-and-wiring","6.apps\u002F3.csp-and-wiring",{"title":175,"path":176,"stem":177,"icon":178},"Testing & publishing","\u002Fapps\u002Ftesting-publishing","6.apps\u002F4.testing-publishing","i-lucide-rocket",{"title":180,"path":181,"stem":182,"icon":183},"Patterns & limits","\u002Fapps\u002Fpatterns-reference","6.apps\u002F5.patterns-reference","i-lucide-book-marked",{"title":185,"path":186,"stem":187,"children":188,"page":39},"Advanced Topics","\u002Fadvanced","7.advanced",[189,194,199,204,208,213,218,223,228,233,238],{"title":190,"path":191,"stem":192,"icon":193},"Custom Paths","\u002Fadvanced\u002Fcustom-paths","7.advanced\u002F1.custom-paths","i-lucide-folder",{"title":195,"path":196,"stem":197,"icon":198},"Logging","\u002Fadvanced\u002Flogging","7.advanced\u002F10.logging","i-lucide-scroll-text",{"title":200,"path":201,"stem":202,"icon":203},"MCP Apps Internals","\u002Fadvanced\u002Fmcp-apps-internals","7.advanced\u002F11.mcp-apps-internals","i-lucide-cog",{"title":205,"path":206,"stem":207,"icon":64},"Middleware","\u002Fadvanced\u002Fmiddleware","7.advanced\u002F2.middleware",{"title":209,"path":210,"stem":211,"icon":212},"TypeScript","\u002Fadvanced\u002Ftypescript","7.advanced\u002F3.typescript","i-lucide-type",{"title":214,"path":215,"stem":216,"icon":217},"Hooks","\u002Fadvanced\u002Fhooks","7.advanced\u002F4.hooks","i-lucide-webhook",{"title":219,"path":220,"stem":221,"icon":222},"MCP Evals","\u002Fadvanced\u002Fevals","7.advanced\u002F5.evals","i-lucide-flask-conical",{"title":224,"path":225,"stem":226,"icon":227},"Sessions","\u002Fadvanced\u002Fsessions","7.advanced\u002F6.sessions","i-lucide-database",{"title":229,"path":230,"stem":231,"icon":232},"Dynamic Definitions","\u002Fadvanced\u002Fdynamic-definitions","7.advanced\u002F7.dynamic-definitions","i-lucide-toggle-right",{"title":234,"path":235,"stem":236,"icon":237},"Code Mode","\u002Fadvanced\u002Fcode-mode","7.advanced\u002F8.code-mode","i-lucide-code",{"title":239,"path":240,"stem":241,"icon":242},"Elicitation","\u002Fadvanced\u002Felicitation","7.advanced\u002F9.elicitation","i-lucide-message-square-quote",{"title":244,"path":245,"stem":246,"children":247,"page":39},"Examples","\u002Fexamples","8.examples",[248,253,258,263,268],{"title":249,"path":250,"stem":251,"icon":252},"Authentication","\u002Fexamples\u002Fauthentication","8.examples\u002F1.authentication","i-lucide-shield-check",{"title":254,"path":255,"stem":256,"icon":257},"API Integration","\u002Fexamples\u002Fapi-integration","8.examples\u002F2.api-integration","i-lucide-globe",{"title":259,"path":260,"stem":261,"icon":262},"Common Patterns","\u002Fexamples\u002Fcommon-patterns","8.examples\u002F3.common-patterns","i-lucide-lightbulb",{"title":264,"path":265,"stem":266,"icon":267},"File Operations","\u002Fexamples\u002Ffile-operations","8.examples\u002F4.file-operations","i-lucide-file",{"title":269,"path":270,"stem":271,"icon":107},"Prompt Examples","\u002Fexamples\u002Fprompt-examples","8.examples\u002F5.prompt-examples",{"id":273,"title":147,"body":274,"description":1378,"extension":1379,"links":1380,"meta":1381,"navigation":1382,"path":148,"seo":1383,"stem":149,"__hash__":1386},"docs\u002F5.handlers\u002F4.sharing-practices.md",{"type":275,"value":276,"toc":1367},"minimark",[277,282,287,291,414,496,500,503,615,720,724,727,809,886,890,893,1077,1169,1258,1262,1269,1277,1286,1290,1325,1329,1363],[278,279,281],"h2",{"id":280},"use-cases","Use Cases",[283,284,286],"h3",{"id":285},"_1-feature-separation","1. Feature Separation",[288,289,290],"p",{},"Separate different features into different handlers:",[292,293,299],"pre",{"className":294,"code":295,"filename":296,"language":297,"meta":298,"style":298},"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","",[300,301,302,335,342,360,381,405],"code",{"__ignoreMap":298},[303,304,307,311,315,319,322,325,328,332],"span",{"class":305,"line":306},"line",1,[303,308,310],{"class":309},"s7zQu","import",[303,312,314],{"class":313},"sMK4o"," {",[303,316,318],{"class":317},"sTEyZ"," defineMcpHandler",[303,320,321],{"class":313}," }",[303,323,324],{"class":309}," from",[303,326,327],{"class":313}," '",[303,329,331],{"class":330},"sfazB","@nuxtjs\u002Fmcp-toolkit\u002Fserver",[303,333,334],{"class":313},"'\n",[303,336,338],{"class":305,"line":337},2,[303,339,341],{"emptyLinePlaceholder":340},true,"\n",[303,343,345,348,351,354,357],{"class":305,"line":344},3,[303,346,347],{"class":309},"export",[303,349,350],{"class":309}," default",[303,352,318],{"class":353},"s2Zo4",[303,355,356],{"class":317},"(",[303,358,359],{"class":313},"{\n",[303,361,363,367,370,372,375,378],{"class":305,"line":362},4,[303,364,366],{"class":365},"swJcz","  name",[303,368,369],{"class":313},":",[303,371,327],{"class":313},[303,373,374],{"class":330},"users",[303,376,377],{"class":313},"'",[303,379,380],{"class":313},",\n",[303,382,384,387,389,392,395,398,400,403],{"class":305,"line":383},5,[303,385,386],{"class":365},"  tools",[303,388,369],{"class":313},[303,390,391],{"class":317}," [getUserTool",[303,393,394],{"class":313},",",[303,396,397],{"class":317}," createUserTool",[303,399,394],{"class":313},[303,401,402],{"class":317}," updateUserTool]",[303,404,380],{"class":313},[303,406,408,411],{"class":305,"line":407},6,[303,409,410],{"class":313},"}",[303,412,413],{"class":317},")\n",[292,415,418],{"className":294,"code":416,"filename":417,"language":297,"meta":298,"style":298},"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",[300,419,420,438,442,454,469,490],{"__ignoreMap":298},[303,421,422,424,426,428,430,432,434,436],{"class":305,"line":306},[303,423,310],{"class":309},[303,425,314],{"class":313},[303,427,318],{"class":317},[303,429,321],{"class":313},[303,431,324],{"class":309},[303,433,327],{"class":313},[303,435,331],{"class":330},[303,437,334],{"class":313},[303,439,440],{"class":305,"line":337},[303,441,341],{"emptyLinePlaceholder":340},[303,443,444,446,448,450,452],{"class":305,"line":344},[303,445,347],{"class":309},[303,447,350],{"class":309},[303,449,318],{"class":353},[303,451,356],{"class":317},[303,453,359],{"class":313},[303,455,456,458,460,462,465,467],{"class":305,"line":362},[303,457,366],{"class":365},[303,459,369],{"class":313},[303,461,327],{"class":313},[303,463,464],{"class":330},"content",[303,466,377],{"class":313},[303,468,380],{"class":313},[303,470,471,473,475,478,480,483,485,488],{"class":305,"line":383},[303,472,386],{"class":365},[303,474,369],{"class":313},[303,476,477],{"class":317}," [createPostTool",[303,479,394],{"class":313},[303,481,482],{"class":317}," updatePostTool",[303,484,394],{"class":313},[303,486,487],{"class":317}," deletePostTool]",[303,489,380],{"class":313},[303,491,492,494],{"class":305,"line":407},[303,493,410],{"class":313},[303,495,413],{"class":317},[283,497,499],{"id":498},"_2-versioned-apis","2. Versioned APIs",[288,501,502],{},"Create versioned handlers:",[292,504,507],{"className":294,"code":505,"filename":506,"language":297,"meta":298,"style":298},"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",[300,508,509,527,531,543,558,574,590,608],{"__ignoreMap":298},[303,510,511,513,515,517,519,521,523,525],{"class":305,"line":306},[303,512,310],{"class":309},[303,514,314],{"class":313},[303,516,318],{"class":317},[303,518,321],{"class":313},[303,520,324],{"class":309},[303,522,327],{"class":313},[303,524,331],{"class":330},[303,526,334],{"class":313},[303,528,529],{"class":305,"line":337},[303,530,341],{"emptyLinePlaceholder":340},[303,532,533,535,537,539,541],{"class":305,"line":344},[303,534,347],{"class":309},[303,536,350],{"class":309},[303,538,318],{"class":353},[303,540,356],{"class":317},[303,542,359],{"class":313},[303,544,545,547,549,551,554,556],{"class":305,"line":362},[303,546,366],{"class":365},[303,548,369],{"class":313},[303,550,327],{"class":313},[303,552,553],{"class":330},"api-v1",[303,555,377],{"class":313},[303,557,380],{"class":313},[303,559,560,563,565,567,570,572],{"class":305,"line":383},[303,561,562],{"class":365},"  version",[303,564,369],{"class":313},[303,566,327],{"class":313},[303,568,569],{"class":330},"1.0.0",[303,571,377],{"class":313},[303,573,380],{"class":313},[303,575,576,579,581,583,586,588],{"class":305,"line":407},[303,577,578],{"class":365},"  route",[303,580,369],{"class":313},[303,582,327],{"class":313},[303,584,585],{"class":330},"\u002Fapi\u002Fv1\u002Fmcp",[303,587,377],{"class":313},[303,589,380],{"class":313},[303,591,593,595,597,600,603,606],{"class":305,"line":592},7,[303,594,386],{"class":365},[303,596,369],{"class":313},[303,598,599],{"class":317}," [ ",[303,601,602],{"class":313},"...",[303,604,605],{"class":317}," ]",[303,607,380],{"class":313},[303,609,611,613],{"class":305,"line":610},8,[303,612,410],{"class":313},[303,614,413],{"class":317},[292,616,619],{"className":294,"code":617,"filename":618,"language":297,"meta":298,"style":298},"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",[300,620,621,639,643,655,670,685,700,714],{"__ignoreMap":298},[303,622,623,625,627,629,631,633,635,637],{"class":305,"line":306},[303,624,310],{"class":309},[303,626,314],{"class":313},[303,628,318],{"class":317},[303,630,321],{"class":313},[303,632,324],{"class":309},[303,634,327],{"class":313},[303,636,331],{"class":330},[303,638,334],{"class":313},[303,640,641],{"class":305,"line":337},[303,642,341],{"emptyLinePlaceholder":340},[303,644,645,647,649,651,653],{"class":305,"line":344},[303,646,347],{"class":309},[303,648,350],{"class":309},[303,650,318],{"class":353},[303,652,356],{"class":317},[303,654,359],{"class":313},[303,656,657,659,661,663,666,668],{"class":305,"line":362},[303,658,366],{"class":365},[303,660,369],{"class":313},[303,662,327],{"class":313},[303,664,665],{"class":330},"api-v2",[303,667,377],{"class":313},[303,669,380],{"class":313},[303,671,672,674,676,678,681,683],{"class":305,"line":383},[303,673,562],{"class":365},[303,675,369],{"class":313},[303,677,327],{"class":313},[303,679,680],{"class":330},"2.0.0",[303,682,377],{"class":313},[303,684,380],{"class":313},[303,686,687,689,691,693,696,698],{"class":305,"line":407},[303,688,578],{"class":365},[303,690,369],{"class":313},[303,692,327],{"class":313},[303,694,695],{"class":330},"\u002Fapi\u002Fv2\u002Fmcp",[303,697,377],{"class":313},[303,699,380],{"class":313},[303,701,702,704,706,708,710,712],{"class":305,"line":592},[303,703,386],{"class":365},[303,705,369],{"class":313},[303,707,599],{"class":317},[303,709,602],{"class":313},[303,711,605],{"class":317},[303,713,380],{"class":313},[303,715,716,718],{"class":305,"line":610},[303,717,410],{"class":313},[303,719,413],{"class":317},[283,721,723],{"id":722},"_3-domain-specific-handlers","3. Domain-Specific Handlers",[288,725,726],{},"Organize by domain:",[292,728,731],{"className":294,"code":729,"filename":730,"language":297,"meta":298,"style":298},"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",[300,732,733,751,755,767,782,803],{"__ignoreMap":298},[303,734,735,737,739,741,743,745,747,749],{"class":305,"line":306},[303,736,310],{"class":309},[303,738,314],{"class":313},[303,740,318],{"class":317},[303,742,321],{"class":313},[303,744,324],{"class":309},[303,746,327],{"class":313},[303,748,331],{"class":330},[303,750,334],{"class":313},[303,752,753],{"class":305,"line":337},[303,754,341],{"emptyLinePlaceholder":340},[303,756,757,759,761,763,765],{"class":305,"line":344},[303,758,347],{"class":309},[303,760,350],{"class":309},[303,762,318],{"class":353},[303,764,356],{"class":317},[303,766,359],{"class":313},[303,768,769,771,773,775,778,780],{"class":305,"line":362},[303,770,366],{"class":365},[303,772,369],{"class":313},[303,774,327],{"class":313},[303,776,777],{"class":330},"ecommerce",[303,779,377],{"class":313},[303,781,380],{"class":313},[303,783,784,786,788,791,793,796,798,801],{"class":305,"line":383},[303,785,386],{"class":365},[303,787,369],{"class":313},[303,789,790],{"class":317}," [addToCartTool",[303,792,394],{"class":313},[303,794,795],{"class":317}," checkoutTool",[303,797,394],{"class":313},[303,799,800],{"class":317}," getProductsTool]",[303,802,380],{"class":313},[303,804,805,807],{"class":305,"line":407},[303,806,410],{"class":313},[303,808,413],{"class":317},[292,810,813],{"className":294,"code":811,"filename":812,"language":297,"meta":298,"style":298},"import { defineMcpHandler } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpHandler({\n  name: 'analytics',\n  tools: [getStatsTool, generateReportTool],\n})\n","server\u002Fmcp\u002Fanalytics.ts",[300,814,815,833,837,849,864,880],{"__ignoreMap":298},[303,816,817,819,821,823,825,827,829,831],{"class":305,"line":306},[303,818,310],{"class":309},[303,820,314],{"class":313},[303,822,318],{"class":317},[303,824,321],{"class":313},[303,826,324],{"class":309},[303,828,327],{"class":313},[303,830,331],{"class":330},[303,832,334],{"class":313},[303,834,835],{"class":305,"line":337},[303,836,341],{"emptyLinePlaceholder":340},[303,838,839,841,843,845,847],{"class":305,"line":344},[303,840,347],{"class":309},[303,842,350],{"class":309},[303,844,318],{"class":353},[303,846,356],{"class":317},[303,848,359],{"class":313},[303,850,851,853,855,857,860,862],{"class":305,"line":362},[303,852,366],{"class":365},[303,854,369],{"class":313},[303,856,327],{"class":313},[303,858,859],{"class":330},"analytics",[303,861,377],{"class":313},[303,863,380],{"class":313},[303,865,866,868,870,873,875,878],{"class":305,"line":383},[303,867,386],{"class":365},[303,869,369],{"class":313},[303,871,872],{"class":317}," [getStatsTool",[303,874,394],{"class":313},[303,876,877],{"class":317}," generateReportTool]",[303,879,380],{"class":313},[303,881,882,884],{"class":305,"line":407},[303,883,410],{"class":313},[303,885,413],{"class":317},[278,887,889],{"id":888},"sharing-tools-between-handlers","Sharing Tools Between Handlers",[288,891,892],{},"You can share tool definitions between handlers by exporting them from a separate file:",[292,894,897],{"className":294,"code":895,"filename":896,"language":297,"meta":298,"style":298},"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",[300,898,899,919,938,942,962,977,993,1003,1023,1029,1070],{"__ignoreMap":298},[303,900,901,903,905,908,910,912,914,917],{"class":305,"line":306},[303,902,310],{"class":309},[303,904,314],{"class":313},[303,906,907],{"class":317}," z",[303,909,321],{"class":313},[303,911,324],{"class":309},[303,913,327],{"class":313},[303,915,916],{"class":330},"zod",[303,918,334],{"class":313},[303,920,921,923,925,928,930,932,934,936],{"class":305,"line":337},[303,922,310],{"class":309},[303,924,314],{"class":313},[303,926,927],{"class":317}," defineMcpTool",[303,929,321],{"class":313},[303,931,324],{"class":309},[303,933,327],{"class":313},[303,935,331],{"class":330},[303,937,334],{"class":313},[303,939,940],{"class":305,"line":344},[303,941,341],{"emptyLinePlaceholder":340},[303,943,944,946,950,953,956,958,960],{"class":305,"line":362},[303,945,347],{"class":309},[303,947,949],{"class":948},"spNyl"," const",[303,951,952],{"class":317}," sharedTool ",[303,954,955],{"class":313},"=",[303,957,927],{"class":353},[303,959,356],{"class":317},[303,961,359],{"class":313},[303,963,964,966,968,970,973,975],{"class":305,"line":383},[303,965,366],{"class":365},[303,967,369],{"class":313},[303,969,327],{"class":313},[303,971,972],{"class":330},"shared-tool",[303,974,377],{"class":313},[303,976,380],{"class":313},[303,978,979,982,984,986,989,991],{"class":305,"line":407},[303,980,981],{"class":365},"  description",[303,983,369],{"class":313},[303,985,327],{"class":313},[303,987,988],{"class":330},"A shared tool",[303,990,377],{"class":313},[303,992,380],{"class":313},[303,994,995,998,1000],{"class":305,"line":592},[303,996,997],{"class":365},"  inputSchema",[303,999,369],{"class":313},[303,1001,1002],{"class":313}," {\n",[303,1004,1005,1008,1010,1012,1015,1018,1021],{"class":305,"line":610},[303,1006,1007],{"class":365},"    input",[303,1009,369],{"class":313},[303,1011,907],{"class":317},[303,1013,1014],{"class":313},".",[303,1016,1017],{"class":353},"string",[303,1019,1020],{"class":317},"()",[303,1022,380],{"class":313},[303,1024,1026],{"class":305,"line":1025},9,[303,1027,1028],{"class":313},"  },\n",[303,1030,1032,1035,1037,1040,1043,1047,1050,1053,1056,1059,1062,1065,1068],{"class":305,"line":1031},10,[303,1033,1034],{"class":353},"  handler",[303,1036,369],{"class":313},[303,1038,1039],{"class":948}," async",[303,1041,1042],{"class":313}," ({",[303,1044,1046],{"class":1045},"sHdIc"," input",[303,1048,1049],{"class":313}," })",[303,1051,1052],{"class":948}," =>",[303,1054,1055],{"class":313}," `",[303,1057,1058],{"class":330},"Shared: ",[303,1060,1061],{"class":313},"${",[303,1063,1064],{"class":317},"input",[303,1066,1067],{"class":313},"}`",[303,1069,380],{"class":313},[303,1071,1073,1075],{"class":305,"line":1072},11,[303,1074,410],{"class":313},[303,1076,413],{"class":317},[292,1078,1081],{"className":294,"code":1079,"filename":1080,"language":297,"meta":298,"style":298},"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",[300,1082,1083,1103,1121,1125,1137,1152,1163],{"__ignoreMap":298},[303,1084,1085,1087,1089,1092,1094,1096,1098,1101],{"class":305,"line":306},[303,1086,310],{"class":309},[303,1088,314],{"class":313},[303,1090,1091],{"class":317}," sharedTool",[303,1093,321],{"class":313},[303,1095,324],{"class":309},[303,1097,327],{"class":313},[303,1099,1100],{"class":330},".\u002Fshared-tools",[303,1102,334],{"class":313},[303,1104,1105,1107,1109,1111,1113,1115,1117,1119],{"class":305,"line":337},[303,1106,310],{"class":309},[303,1108,314],{"class":313},[303,1110,318],{"class":317},[303,1112,321],{"class":313},[303,1114,324],{"class":309},[303,1116,327],{"class":313},[303,1118,331],{"class":330},[303,1120,334],{"class":313},[303,1122,1123],{"class":305,"line":344},[303,1124,341],{"emptyLinePlaceholder":340},[303,1126,1127,1129,1131,1133,1135],{"class":305,"line":362},[303,1128,347],{"class":309},[303,1130,350],{"class":309},[303,1132,318],{"class":353},[303,1134,356],{"class":317},[303,1136,359],{"class":313},[303,1138,1139,1141,1143,1145,1148,1150],{"class":305,"line":383},[303,1140,366],{"class":365},[303,1142,369],{"class":313},[303,1144,327],{"class":313},[303,1146,1147],{"class":330},"handler1",[303,1149,377],{"class":313},[303,1151,380],{"class":313},[303,1153,1154,1156,1158,1161],{"class":305,"line":407},[303,1155,386],{"class":365},[303,1157,369],{"class":313},[303,1159,1160],{"class":317}," [sharedTool]",[303,1162,380],{"class":313},[303,1164,1165,1167],{"class":305,"line":592},[303,1166,410],{"class":313},[303,1168,413],{"class":317},[292,1170,1173],{"className":294,"code":1171,"filename":1172,"language":297,"meta":298,"style":298},"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",[300,1174,1175,1193,1211,1215,1227,1242,1252],{"__ignoreMap":298},[303,1176,1177,1179,1181,1183,1185,1187,1189,1191],{"class":305,"line":306},[303,1178,310],{"class":309},[303,1180,314],{"class":313},[303,1182,1091],{"class":317},[303,1184,321],{"class":313},[303,1186,324],{"class":309},[303,1188,327],{"class":313},[303,1190,1100],{"class":330},[303,1192,334],{"class":313},[303,1194,1195,1197,1199,1201,1203,1205,1207,1209],{"class":305,"line":337},[303,1196,310],{"class":309},[303,1198,314],{"class":313},[303,1200,318],{"class":317},[303,1202,321],{"class":313},[303,1204,324],{"class":309},[303,1206,327],{"class":313},[303,1208,331],{"class":330},[303,1210,334],{"class":313},[303,1212,1213],{"class":305,"line":344},[303,1214,341],{"emptyLinePlaceholder":340},[303,1216,1217,1219,1221,1223,1225],{"class":305,"line":362},[303,1218,347],{"class":309},[303,1220,350],{"class":309},[303,1222,318],{"class":353},[303,1224,356],{"class":317},[303,1226,359],{"class":313},[303,1228,1229,1231,1233,1235,1238,1240],{"class":305,"line":383},[303,1230,366],{"class":365},[303,1232,369],{"class":313},[303,1234,327],{"class":313},[303,1236,1237],{"class":330},"handler2",[303,1239,377],{"class":313},[303,1241,380],{"class":313},[303,1243,1244,1246,1248,1250],{"class":305,"line":407},[303,1245,386],{"class":365},[303,1247,369],{"class":313},[303,1249,1160],{"class":317},[303,1251,380],{"class":313},[303,1253,1254,1256],{"class":305,"line":592},[303,1255,410],{"class":313},[303,1257,413],{"class":317},[278,1259,1261],{"id":1260},"file-organization","File Organization",[288,1263,1264,1265,1268],{},"Organize handlers in your ",[300,1266,1267],{},"server\u002Fmcp\u002F"," directory:",[292,1270,1275],{"className":1271,"code":1273,"language":1274},[1272],"language-text","server\u002F\n└── mcp\u002F\n    ├── index.ts              # Default handler override (optional)\n    ├── migration.ts          # Custom handler\n    ├── api-handler.ts        # Custom handler\n    ├── admin.ts              # Custom handler\n    ├── shared-tools.ts       # Shared tool definitions\n    ├── tools\u002F\n    │   └── # Tools for default handler\n    ├── resources\u002F\n    │   └── # Resources for default handler\n    └── prompts\u002F\n        └── # Prompts for default handler\n","text",[300,1276,1273],{"__ignoreMap":298},[1278,1279,1281,1282,1285],"callout",{"color":1280,"icon":262},"primary","The ",[300,1283,1284],{},"index.ts"," file is special - it overrides the default handler configuration instead of creating a new custom handler.",[278,1287,1289],{"id":1288},"best-practices","Best Practices",[1291,1292,1293,1301,1307,1313,1319],"ol",{},[1294,1295,1296,1300],"li",{},[1297,1298,1299],"strong",{},"Use descriptive names",": Make handler names clear and specific",[1294,1302,1303,1306],{},[1297,1304,1305],{},"Group related functionality",": Put related tools\u002Fresources together",[1294,1308,1309,1312],{},[1297,1310,1311],{},"Version your handlers",": Use semantic versioning for handler versions",[1294,1314,1315,1318],{},[1297,1316,1317],{},"Document your handlers",": Add comments explaining what each handler does",[1294,1320,1321,1324],{},[1297,1322,1323],{},"Keep handlers focused",": Each handler should have a clear, single purpose",[278,1326,1328],{"id":1327},"next-steps","Next Steps",[1330,1331,1332,1338,1343,1348,1353,1358],"ul",{},[1294,1333,1334,1337],{},[1335,1336,234],"a",{"href":235}," - Orchestrate tools with LLM-generated JavaScript",[1294,1339,1340,1342],{},[1335,1341,205],{"href":206}," - Add authentication and logging",[1294,1344,1345,1347],{},[1335,1346,229],{"href":230}," - Conditionally register definitions",[1294,1349,1350,1352],{},[1335,1351,20],{"href":21}," - Configure the default handler",[1294,1354,1355,1357],{},[1335,1356,41],{"href":47}," - Create tools for your handlers",[1294,1359,1360,1362],{},[1335,1361,244],{"href":260}," - See more handler examples",[1364,1365,1366],"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":298,"searchDepth":337,"depth":337,"links":1368},[1369,1374,1375,1376,1377],{"id":280,"depth":337,"text":281,"children":1370},[1371,1372,1373],{"id":285,"depth":344,"text":286},{"id":498,"depth":344,"text":499},{"id":722,"depth":344,"text":723},{"id":888,"depth":337,"text":889},{"id":1260,"depth":337,"text":1261},{"id":1288,"depth":337,"text":1289},{"id":1327,"depth":337,"text":1328},"Cross-handler tool sharing, file layout, use cases, and next steps.","md",null,{},{"icon":150},{"title":1384,"description":1385},"Sharing tools between handlers","Shared tool definitions, handler file organization, use cases, and best practices.","-S5k1c0GENlNV73ore3K2waR3I9B6deYsh8eLxp2xKQ",[1388,1390],{"title":142,"path":143,"stem":144,"description":1389,"icon":145,"children":-1},"Full handler examples, multiple handlers, routes, and default vs custom comparison.",{"title":46,"path":157,"stem":158,"description":1391,"icon":159,"children":-1},"Build interactive UI widgets that AI hosts render alongside chat — written as Vue SFCs, served as MCP UI resources.",1777306544876]