[{"data":1,"prerenderedAt":1883},["ShallowReactive",2],{"navigation_docs":3,"-advanced-listing-definitions":282,"-advanced-listing-definitions-surround":1878},[4,40,70,99,122,156,189,253],{"title":5,"path":6,"stem":7,"children":8,"page":39},"入门指南","\u002Fgetting-started","1.getting-started",[9,14,19,24,29,34],{"title":10,"path":11,"stem":12,"icon":13},"简介","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-book-open",{"title":15,"path":16,"stem":17,"icon":18},"安装","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"配置","\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},"工具","\u002Ftools","2.tools",[45,50,55,60,65],{"title":46,"path":47,"stem":48,"icon":49},"概览","\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},"注释与输入示例","\u002Ftools\u002Fannotations","2.tools\u002F2.annotations","i-lucide-badge-info",{"title":61,"path":62,"stem":63,"icon":64},"错误与缓存","\u002Ftools\u002Ferrors-caching","2.tools\u002F3.errors-caching","i-lucide-shield",{"title":66,"path":67,"stem":68,"icon":69},"分组、文件与动态注册","\u002Ftools\u002Fgroups-organization","2.tools\u002F4.groups-organization","i-lucide-tags",{"title":71,"path":72,"stem":73,"children":74,"page":39},"资源","\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},"静态资源与结构","\u002Fresources\u002Fstatic-and-structure","3.resources\u002F1.static-and-structure","i-lucide-file-stack",{"title":85,"path":86,"stem":87,"icon":88},"模板与处理程序","\u002Fresources\u002Ftemplates-and-handlers","3.resources\u002F2.templates-and-handlers","i-lucide-git-branch",{"title":90,"path":91,"stem":92,"icon":93},"元数据、内容与错误","\u002Fresources\u002Fcontent-metadata-errors","3.resources\u002F3.content-metadata-errors","i-lucide-layers",{"title":95,"path":96,"stem":97,"icon":98},"分组与组织","\u002Fresources\u002Forganization","3.resources\u002F4.organization","i-lucide-folder-tree",{"title":100,"path":101,"stem":102,"children":103,"page":39},"提示词","\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},"编写与结构","\u002Fprompts\u002Fauthoring","4.prompts\u002F1.authoring","i-lucide-pen-line",{"title":114,"path":115,"stem":116,"icon":93},"输入、处理器与消息","\u002Fprompts\u002Finput-handler-messages","4.prompts\u002F2.input-handler-messages",{"title":118,"path":119,"stem":120,"icon":121},"模式与高级用法","\u002Fprompts\u002Fpatterns-advanced","4.prompts\u002F3.patterns-advanced","i-lucide-line-chart",{"title":123,"path":124,"stem":125,"children":126,"page":39},"处理器","\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},"默认与自定义处理器","\u002Fhandlers\u002Fdefault-and-custom","5.handlers\u002F1.default-and-custom","i-lucide-toggle-left",{"title":137,"path":138,"stem":139,"icon":140},"结构与选项","\u002Fhandlers\u002Fstructure-and-options","5.handlers\u002F2.structure-and-options","i-lucide-sliders-horizontal",{"title":142,"path":143,"stem":144,"icon":145},"示例与路由","\u002Fhandlers\u002Fexamples-routing","5.handlers\u002F3.examples-routing","i-lucide-route",{"title":147,"path":148,"stem":149,"icon":150},"分享与实践","\u002Fhandlers\u002Fsharing-practices","5.handlers\u002F4.sharing-practices","i-lucide-share-2",{"title":152,"path":153,"stem":154,"icon":155},"多处理器组织","\u002Fhandlers\u002Forganization","5.handlers\u002F5.organization","i-lucide-network",{"title":157,"path":158,"stem":159,"children":160,"page":39},"应用","\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},"编写与 defineMcpApp","\u002Fapps\u002Fauthoring","6.apps\u002F1.authoring","i-lucide-code-2",{"title":171,"path":172,"stem":173,"icon":174},"useMcpApp() 桥接","\u002Fapps\u002Fuse-mcp-app","6.apps\u002F2.use-mcp-app","i-lucide-message-circle",{"title":176,"path":177,"stem":178,"icon":64},"CSP 与构建流水线","\u002Fapps\u002Fcsp-and-wiring","6.apps\u002F3.csp-and-wiring",{"title":180,"path":181,"stem":182,"icon":183},"测试与发布","\u002Fapps\u002Ftesting-publishing","6.apps\u002F4.testing-publishing","i-lucide-rocket",{"title":185,"path":186,"stem":187,"icon":188},"模式与限制","\u002Fapps\u002Fpatterns-reference","6.apps\u002F5.patterns-reference","i-lucide-book-marked",{"title":190,"path":191,"stem":192,"children":193,"page":39},"进阶主题","\u002Fadvanced","7.advanced",[194,199,204,209,214,218,223,228,233,238,243,248],{"title":195,"path":196,"stem":197,"icon":198},"自定义路径","\u002Fadvanced\u002Fcustom-paths","7.advanced\u002F1.custom-paths","i-lucide-folder",{"title":200,"path":201,"stem":202,"icon":203},"日志","\u002Fadvanced\u002Flogging","7.advanced\u002F10.logging","i-lucide-scroll-text",{"title":205,"path":206,"stem":207,"icon":208},"MCP Apps 内部机制","\u002Fadvanced\u002Fmcp-apps-internals","7.advanced\u002F11.mcp-apps-internals","i-lucide-cog",{"title":210,"path":211,"stem":212,"icon":213},"列出定义","\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 评估","\u002Fadvanced\u002Fevals","7.advanced\u002F5.evals","i-lucide-flask-conical",{"title":234,"path":235,"stem":236,"icon":237},"会话","\u002Fadvanced\u002Fsessions","7.advanced\u002F6.sessions","i-lucide-database",{"title":239,"path":240,"stem":241,"icon":242},"动态定义","\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},"启发式询问","\u002Fadvanced\u002Felicitation","7.advanced\u002F9.elicitation","i-lucide-message-square-quote",{"title":254,"path":255,"stem":256,"children":257,"page":39},"示例","\u002Fexamples","8.examples",[258,263,268,273,278],{"title":259,"path":260,"stem":261,"icon":262},"身份验证","\u002Fexamples\u002Fauthentication","8.examples\u002F1.authentication","i-lucide-shield-check",{"title":264,"path":265,"stem":266,"icon":267},"API 集成","\u002Fexamples\u002Fapi-integration","8.examples\u002F2.api-integration","i-lucide-globe",{"title":269,"path":270,"stem":271,"icon":272},"常见模式","\u002Fexamples\u002Fcommon-patterns","8.examples\u002F3.common-patterns","i-lucide-lightbulb",{"title":274,"path":275,"stem":276,"icon":277},"文件操作","\u002Fexamples\u002Ffile-operations","8.examples\u002F4.file-operations","i-lucide-file",{"title":279,"path":280,"stem":281,"icon":107},"提示词示例","\u002Fexamples\u002Fprompt-examples","8.examples\u002F5.prompt-examples",{"id":283,"title":210,"body":284,"description":1869,"extension":1870,"links":1871,"meta":1872,"navigation":1873,"path":211,"seo":1874,"stem":212,"__hash__":1877},"docs\u002F7.advanced\u002F12.listing-definitions.md",{"type":285,"value":286,"toc":1852},"minimark",[287,291,310,321,428,460,489,492,496,506,875,878,881,1001,1004,1011,1116,1123,1136,1183,1187,1198,1282,1286,1297,1455,1459,1472,1582,1585,1588,1655,1658,1669,1811,1822,1825,1848],[288,289,290],"h2",{"id":290},"概述",[292,293,294,295,299,300,309],"p",{},"工具包会自动发现 ",[296,297,298],"code",{},"server\u002Fmcp\u002F"," 下的每一个工具、资源和提示词。很多时候，你需要从自己的服务器路由中把这个目录再读回来——用于渲染 ",[301,302,306],"a",{"href":303,"rel":304},"https:\u002F\u002Fmodelcontextprotocol.io\u002Fspecification\u002F2025-11-25\u002Fbasic\u002Fserver-cards",[305],"nofollow",[296,307,308],{},"\u002F.well-known\u002Fmcp\u002Fserver-card.json","、管理仪表盘、API 目录或站点地图。",[292,311,312,313,316,317,320],{},"使用 ",[296,314,315],{},"@nuxtjs\u002Fmcp-toolkit\u002Fserver"," 中的 ",[296,318,319],{},"listMcp*"," 辅助函数，可以获取所有已发现定义的适合 JSON 的摘要，而无需在你自己的代码中重复它们的名称和描述。",[322,323,324,337],"table",{},[325,326,327],"thead",{},[328,329,330,334],"tr",{},[331,332,333],"th",{},"Helper",[331,335,336],{},"Returns",[338,339,340,354,366,378,390,403,416],"tbody",{},[328,341,342,348],{},[343,344,345],"td",{},[296,346,347],{},"listMcpTools(options?)",[343,349,350,353],{},[296,351,352],{},"McpToolSummary[]","（适合 JSON）",[328,355,356,361],{},[343,357,358],{},[296,359,360],{},"listMcpResources(options?)",[343,362,363,353],{},[296,364,365],{},"McpResourceSummary[]",[328,367,368,373],{},[343,369,370],{},[296,371,372],{},"listMcpPrompts(options?)",[343,374,375,353],{},[296,376,377],{},"McpPromptSummary[]",[328,379,380,385],{},[343,381,382],{},[296,383,384],{},"listMcpDefinitions(options?)",[343,386,387],{},[296,388,389],{},"{ tools, resources, prompts }",[328,391,392,397],{},[343,393,394],{},[296,395,396],{},"getMcpTools(options?)",[343,398,399,402],{},[296,400,401],{},"McpToolDefinitionListItem[]","（原始数据，含 handlers + Zod schemas）",[328,404,405,410],{},[343,406,407],{},[296,408,409],{},"getMcpResources(options?)",[343,411,412,415],{},[296,413,414],{},"McpResourceDefinition[]","（原始数据）",[328,417,418,423],{},[343,419,420],{},[296,421,422],{},"getMcpPrompts(options?)",[343,424,425,415],{},[296,426,427],{},"McpPromptDefinition[]",[292,429,430,431,434,435,434,438,434,441,434,444,447,448,451,452,455,456,459],{},"每个摘要都包含 ",[296,432,433],{},"name","、",[296,436,437],{},"title",[296,439,440],{},"description",[296,442,443],{},"group",[296,445,446],{},"tags"," 和 ",[296,449,450],{},"handler","（资源还包括 ",[296,453,454],{},"uri","）。从文件名自动生成的名称已经解析好，因此你得到的内容与 MCP 客户端在 ",[296,457,458],{},"tools\u002Flist"," 中看到的完全一致。",[461,462,465,466,468,469,473,474,477,478,481,482,488],"callout",{"color":463,"icon":464},"info","i-lucide-info","将 ",[296,467,319],{}," 用于",[470,471,472],"strong",{},"摘要","（JSON 目录端点）。将 ",[296,475,476],{},"getMcp*"," 用于把",[470,479,480],{},"原始定义","回传到 ",[301,483,485],{"href":484},"\u002Fhandlers\u002Forganization#b-function-form-the-escape-hatch",[296,486,487],{},"defineMcpHandler({ tools: ev => getMcpTools(...) })"," 中。",[288,490,491],{"id":491},"用法",[493,494,495],"h3",{"id":495},"服务器卡片",[292,497,498,499,505],{},"将工具包的目录以 ",[301,500,502],{"href":303,"rel":501},[305],[296,503,504],{},"server-card.json"," 的形式公开，这样其他代理就能发现你的服务器提供了什么：",[507,508,514],"pre",{"className":509,"code":510,"filename":511,"language":512,"meta":513,"style":513},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { listMcpDefinitions } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineEventHandler(async (event) => {\n  const { tools, resources, prompts } = await listMcpDefinitions({ event })\n  return {\n    name: 'My MCP Server',\n    description: '由我的 Nuxt 应用公开的工具、资源和提示词。',\n    tools: tools.map(t => ({ name: t.name, description: t.description })),\n    resources: resources.map(r => ({ name: r.name, uri: r.uri, description: r.description })),\n    prompts: prompts.map(p => ({ name: p.name, description: p.description })),\n  }\n})\n","server\u002Froutes\u002F.well-known\u002Fmcp\u002Fserver-card.json.get.ts","typescript","",[296,515,516,548,555,591,637,645,665,682,741,808,861,867],{"__ignoreMap":513},[517,518,521,525,529,533,536,539,542,545],"span",{"class":519,"line":520},"line",1,[517,522,524],{"class":523},"s7zQu","import",[517,526,528],{"class":527},"sMK4o"," {",[517,530,532],{"class":531},"sTEyZ"," listMcpDefinitions",[517,534,535],{"class":527}," }",[517,537,538],{"class":523}," from",[517,540,541],{"class":527}," '",[517,543,315],{"class":544},"sfazB",[517,546,547],{"class":527},"'\n",[517,549,551],{"class":519,"line":550},2,[517,552,554],{"emptyLinePlaceholder":553},true,"\n",[517,556,558,561,564,568,571,575,578,582,585,588],{"class":519,"line":557},3,[517,559,560],{"class":523},"export",[517,562,563],{"class":523}," default",[517,565,567],{"class":566},"s2Zo4"," defineEventHandler",[517,569,570],{"class":531},"(",[517,572,574],{"class":573},"spNyl","async",[517,576,577],{"class":527}," (",[517,579,581],{"class":580},"sHdIc","event",[517,583,584],{"class":527},")",[517,586,587],{"class":573}," =>",[517,589,590],{"class":527}," {\n",[517,592,594,597,599,602,605,608,610,613,615,618,621,623,626,629,632,634],{"class":519,"line":593},4,[517,595,596],{"class":573},"  const",[517,598,528],{"class":527},[517,600,601],{"class":531}," tools",[517,603,604],{"class":527},",",[517,606,607],{"class":531}," resources",[517,609,604],{"class":527},[517,611,612],{"class":531}," prompts",[517,614,535],{"class":527},[517,616,617],{"class":527}," =",[517,619,620],{"class":523}," await",[517,622,532],{"class":566},[517,624,570],{"class":625},"swJcz",[517,627,628],{"class":527},"{",[517,630,631],{"class":531}," event",[517,633,535],{"class":527},[517,635,636],{"class":625},")\n",[517,638,640,643],{"class":519,"line":639},5,[517,641,642],{"class":523},"  return",[517,644,590],{"class":527},[517,646,648,651,654,656,659,662],{"class":519,"line":647},6,[517,649,650],{"class":625},"    name",[517,652,653],{"class":527},":",[517,655,541],{"class":527},[517,657,658],{"class":544},"My MCP Server",[517,660,661],{"class":527},"'",[517,663,664],{"class":527},",\n",[517,666,668,671,673,675,678,680],{"class":519,"line":667},7,[517,669,670],{"class":625},"    description",[517,672,653],{"class":527},[517,674,541],{"class":527},[517,676,677],{"class":544},"由我的 Nuxt 应用公开的工具、资源和提示词。",[517,679,661],{"class":527},[517,681,664],{"class":527},[517,683,685,688,690,692,695,698,700,703,705,707,709,712,714,717,719,721,723,726,728,730,732,734,736,739],{"class":519,"line":684},8,[517,686,687],{"class":625},"    tools",[517,689,653],{"class":527},[517,691,601],{"class":531},[517,693,694],{"class":527},".",[517,696,697],{"class":566},"map",[517,699,570],{"class":625},[517,701,702],{"class":580},"t",[517,704,587],{"class":573},[517,706,577],{"class":625},[517,708,628],{"class":527},[517,710,711],{"class":625}," name",[517,713,653],{"class":527},[517,715,716],{"class":531}," t",[517,718,694],{"class":527},[517,720,433],{"class":531},[517,722,604],{"class":527},[517,724,725],{"class":625}," description",[517,727,653],{"class":527},[517,729,716],{"class":531},[517,731,694],{"class":527},[517,733,440],{"class":531},[517,735,535],{"class":527},[517,737,738],{"class":625},"))",[517,740,664],{"class":527},[517,742,744,747,749,751,753,755,757,760,762,764,766,768,770,773,775,777,779,782,784,786,788,790,792,794,796,798,800,802,804,806],{"class":519,"line":743},9,[517,745,746],{"class":625},"    resources",[517,748,653],{"class":527},[517,750,607],{"class":531},[517,752,694],{"class":527},[517,754,697],{"class":566},[517,756,570],{"class":625},[517,758,759],{"class":580},"r",[517,761,587],{"class":573},[517,763,577],{"class":625},[517,765,628],{"class":527},[517,767,711],{"class":625},[517,769,653],{"class":527},[517,771,772],{"class":531}," r",[517,774,694],{"class":527},[517,776,433],{"class":531},[517,778,604],{"class":527},[517,780,781],{"class":625}," uri",[517,783,653],{"class":527},[517,785,772],{"class":531},[517,787,694],{"class":527},[517,789,454],{"class":531},[517,791,604],{"class":527},[517,793,725],{"class":625},[517,795,653],{"class":527},[517,797,772],{"class":531},[517,799,694],{"class":527},[517,801,440],{"class":531},[517,803,535],{"class":527},[517,805,738],{"class":625},[517,807,664],{"class":527},[517,809,811,814,816,818,820,822,824,826,828,830,832,834,836,839,841,843,845,847,849,851,853,855,857,859],{"class":519,"line":810},10,[517,812,813],{"class":625},"    prompts",[517,815,653],{"class":527},[517,817,612],{"class":531},[517,819,694],{"class":527},[517,821,697],{"class":566},[517,823,570],{"class":625},[517,825,292],{"class":580},[517,827,587],{"class":573},[517,829,577],{"class":625},[517,831,628],{"class":527},[517,833,711],{"class":625},[517,835,653],{"class":527},[517,837,838],{"class":531}," p",[517,840,694],{"class":527},[517,842,433],{"class":531},[517,844,604],{"class":527},[517,846,725],{"class":625},[517,848,653],{"class":527},[517,850,838],{"class":531},[517,852,694],{"class":527},[517,854,440],{"class":531},[517,856,535],{"class":527},[517,858,738],{"class":625},[517,860,664],{"class":527},[517,862,864],{"class":519,"line":863},11,[517,865,866],{"class":527},"  }\n",[517,868,870,873],{"class":519,"line":869},12,[517,871,872],{"class":527},"}",[517,874,636],{"class":531},[493,876,877],{"id":877},"工具目录",[292,879,880],{},"渲染一个可公开访问的可用工具列表，并可按需分组：",[507,882,885],{"className":509,"code":883,"filename":884,"language":512,"meta":513,"style":513},"import { listMcpTools } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineEventHandler(async (event) => {\n  const tools = await listMcpTools({ event })\n  return Object.groupBy(tools, t => t.group ?? 'default')\n})\n","server\u002Fapi\u002Ftools.get.ts",[296,886,887,906,910,932,954,995],{"__ignoreMap":513},[517,888,889,891,893,896,898,900,902,904],{"class":519,"line":520},[517,890,524],{"class":523},[517,892,528],{"class":527},[517,894,895],{"class":531}," listMcpTools",[517,897,535],{"class":527},[517,899,538],{"class":523},[517,901,541],{"class":527},[517,903,315],{"class":544},[517,905,547],{"class":527},[517,907,908],{"class":519,"line":550},[517,909,554],{"emptyLinePlaceholder":553},[517,911,912,914,916,918,920,922,924,926,928,930],{"class":519,"line":557},[517,913,560],{"class":523},[517,915,563],{"class":523},[517,917,567],{"class":566},[517,919,570],{"class":531},[517,921,574],{"class":573},[517,923,577],{"class":527},[517,925,581],{"class":580},[517,927,584],{"class":527},[517,929,587],{"class":573},[517,931,590],{"class":527},[517,933,934,936,938,940,942,944,946,948,950,952],{"class":519,"line":593},[517,935,596],{"class":573},[517,937,601],{"class":531},[517,939,617],{"class":527},[517,941,620],{"class":523},[517,943,895],{"class":566},[517,945,570],{"class":625},[517,947,628],{"class":527},[517,949,631],{"class":531},[517,951,535],{"class":527},[517,953,636],{"class":625},[517,955,956,958,961,963,966,968,971,973,975,977,979,981,983,986,988,991,993],{"class":519,"line":639},[517,957,642],{"class":523},[517,959,960],{"class":531}," Object",[517,962,694],{"class":527},[517,964,965],{"class":566},"groupBy",[517,967,570],{"class":625},[517,969,970],{"class":531},"tools",[517,972,604],{"class":527},[517,974,716],{"class":580},[517,976,587],{"class":573},[517,978,716],{"class":531},[517,980,694],{"class":527},[517,982,443],{"class":531},[517,984,985],{"class":527}," ??",[517,987,541],{"class":527},[517,989,990],{"class":544},"default",[517,992,661],{"class":527},[517,994,636],{"class":625},[517,996,997,999],{"class":519,"line":647},[517,998,872],{"class":527},[517,1000,636],{"class":531},[288,1002,1003],{"id":1003},"选项",[292,1005,1006,1007,1010],{},"每个辅助函数都接受相同的 ",[296,1008,1009],{},"ListMcpDefinitionsOptions"," 对象。所有键都是可选的，并且采用 AND 语义组合——一个定义必须通过每一个启用中的筛选条件。",[322,1012,1013,1026],{},[325,1014,1015],{},[328,1016,1017,1020,1023],{},[331,1018,1019],{},"Option",[331,1021,1022],{},"Type",[331,1024,1025],{},"Description",[338,1027,1028,1050,1067,1080,1098],{},[328,1029,1030,1034,1039],{},[343,1031,1032],{},[296,1033,581],{},[343,1035,1036],{},[296,1037,1038],{},"H3Event",[343,1040,1041,1042,1049],{},"使用请求上下文为每个定义应用 ",[301,1043,1045,1048],{"href":1044},"\u002Fadvanced\u002Fdynamic-definitions#the-enabled-guard",[296,1046,1047],{},"enabled()"," 守卫","。",[328,1051,1052,1056,1061],{},[343,1053,1054],{},[296,1055,443],{},[343,1057,1058],{},[296,1059,1060],{},"string | string[]",[343,1062,1063,1064,1066],{},"只保留其 ",[301,1065,443],{"href":67}," 匹配这些值之一（OR）的定义。",[328,1068,1069,1073,1077],{},[343,1070,1071],{},[296,1072,446],{},[343,1074,1075],{},[296,1076,1060],{},[343,1078,1079],{},"只保留至少带有这些标签之一（OR）的定义。",[328,1081,1082,1086,1090],{},[343,1083,1084],{},[296,1085,450],{},[343,1087,1088],{},[296,1089,1060],{},[343,1091,1092,1093,1097],{},"只保留通过 ",[301,1094,1096],{"href":1095},"\u002Fhandlers\u002Forganization#a-folder-convention-the-way-to-attribute","文件夹约定"," 附加到这些命名 handler 之一的定义。",[328,1099,1100,1105,1110],{},[343,1101,1102],{},[296,1103,1104],{},"orphansOnly",[343,1106,1107],{},[296,1108,1109],{},"boolean",[343,1111,1112,1113,1115],{},"只返回孤立定义（未附加到任何命名 handler 的定义）。与 ",[296,1114,450],{}," 互斥。",[493,1117,1119,1120,1122],{"id":1118},"按-enabled-过滤","按 ",[296,1121,1047],{}," 过滤",[292,1124,1125,1126,1128,1129,1132,1133,1135],{},"传入当前的 ",[296,1127,1038],{}," 以应用每个定义的 ",[296,1130,1131],{},"enabled"," 守卫。当前请求中被隐藏的定义会被排除，因此你公开的目录与请求在 ",[296,1134,458],{}," 中实际看到的内容一致：",[507,1137,1139],{"className":509,"code":1138,"language":512,"meta":513,"style":513},"const all = await listMcpTools()\nconst visible = await listMcpTools({ event })\n",[296,1140,1141,1159],{"__ignoreMap":513},[517,1142,1143,1146,1149,1152,1154,1156],{"class":519,"line":520},[517,1144,1145],{"class":573},"const",[517,1147,1148],{"class":531}," all ",[517,1150,1151],{"class":527},"=",[517,1153,620],{"class":523},[517,1155,895],{"class":566},[517,1157,1158],{"class":531},"()\n",[517,1160,1161,1163,1166,1168,1170,1172,1174,1176,1179,1181],{"class":519,"line":550},[517,1162,1145],{"class":573},[517,1164,1165],{"class":531}," visible ",[517,1167,1151],{"class":527},[517,1169,620],{"class":523},[517,1171,895],{"class":566},[517,1173,570],{"class":531},[517,1175,628],{"class":527},[517,1177,1178],{"class":531}," event ",[517,1180,872],{"class":527},[517,1182,636],{"class":531},[493,1184,1186],{"id":1185},"按-group-过滤","按 group 过滤",[292,1188,1189,1190,1193,1194,1197],{},"根据目录结构自动推断（例如 ",[296,1191,1192],{},"server\u002Fmcp\u002Ftools\u002Fadmin\u002Ffoo.ts"," → ",[296,1195,1196],{},"'admin'","），或者在定义上显式设置。",[507,1199,1201],{"className":509,"code":1200,"language":512,"meta":513,"style":513},"const adminTools = await listMcpTools({ group: 'admin' })\nconst adminOrContent = await listMcpTools({ group: ['admin', 'content'] })\n",[296,1202,1203,1236],{"__ignoreMap":513},[517,1204,1205,1207,1210,1212,1214,1216,1218,1220,1223,1225,1227,1230,1232,1234],{"class":519,"line":520},[517,1206,1145],{"class":573},[517,1208,1209],{"class":531}," adminTools ",[517,1211,1151],{"class":527},[517,1213,620],{"class":523},[517,1215,895],{"class":566},[517,1217,570],{"class":531},[517,1219,628],{"class":527},[517,1221,1222],{"class":625}," group",[517,1224,653],{"class":527},[517,1226,541],{"class":527},[517,1228,1229],{"class":544},"admin",[517,1231,661],{"class":527},[517,1233,535],{"class":527},[517,1235,636],{"class":531},[517,1237,1238,1240,1243,1245,1247,1249,1251,1253,1255,1257,1260,1262,1264,1266,1268,1270,1273,1275,1278,1280],{"class":519,"line":550},[517,1239,1145],{"class":573},[517,1241,1242],{"class":531}," adminOrContent ",[517,1244,1151],{"class":527},[517,1246,620],{"class":523},[517,1248,895],{"class":566},[517,1250,570],{"class":531},[517,1252,628],{"class":527},[517,1254,1222],{"class":625},[517,1256,653],{"class":527},[517,1258,1259],{"class":531}," [",[517,1261,661],{"class":527},[517,1263,1229],{"class":544},[517,1265,661],{"class":527},[517,1267,604],{"class":527},[517,1269,541],{"class":527},[517,1271,1272],{"class":544},"content",[517,1274,661],{"class":527},[517,1276,1277],{"class":531},"] ",[517,1279,872],{"class":527},[517,1281,636],{"class":531},[493,1283,1285],{"id":1284},"按-tags-过滤","按 tags 过滤",[292,1287,1288,1289,1292,1293,1296],{},"标签使用 OR 匹配——传入多个标签可以扩大结果范围。若要要求",[470,1290,1291],{},"每一个","列出的标签（AND），可对结果再使用 ",[296,1294,1295],{},"Array.filter"," 进行后过滤。",[507,1298,1300],{"className":509,"code":1299,"language":512,"meta":513,"style":513},"const publicTools = await listMcpTools({ tags: 'public' })\nconst publicOrDocs = await listMcpTools({ tags: ['public', 'docs'] })\n\nconst publicAndStable = (await listMcpTools({ tags: 'public' }))\n  .filter(t => t.tags?.includes('stable'))\n",[296,1301,1302,1335,1379,1383,1418],{"__ignoreMap":513},[517,1303,1304,1306,1309,1311,1313,1315,1317,1319,1322,1324,1326,1329,1331,1333],{"class":519,"line":520},[517,1305,1145],{"class":573},[517,1307,1308],{"class":531}," publicTools ",[517,1310,1151],{"class":527},[517,1312,620],{"class":523},[517,1314,895],{"class":566},[517,1316,570],{"class":531},[517,1318,628],{"class":527},[517,1320,1321],{"class":625}," tags",[517,1323,653],{"class":527},[517,1325,541],{"class":527},[517,1327,1328],{"class":544},"public",[517,1330,661],{"class":527},[517,1332,535],{"class":527},[517,1334,636],{"class":531},[517,1336,1337,1339,1342,1344,1346,1348,1350,1352,1354,1356,1358,1360,1362,1364,1366,1368,1371,1373,1375,1377],{"class":519,"line":550},[517,1338,1145],{"class":573},[517,1340,1341],{"class":531}," publicOrDocs ",[517,1343,1151],{"class":527},[517,1345,620],{"class":523},[517,1347,895],{"class":566},[517,1349,570],{"class":531},[517,1351,628],{"class":527},[517,1353,1321],{"class":625},[517,1355,653],{"class":527},[517,1357,1259],{"class":531},[517,1359,661],{"class":527},[517,1361,1328],{"class":544},[517,1363,661],{"class":527},[517,1365,604],{"class":527},[517,1367,541],{"class":527},[517,1369,1370],{"class":544},"docs",[517,1372,661],{"class":527},[517,1374,1277],{"class":531},[517,1376,872],{"class":527},[517,1378,636],{"class":531},[517,1380,1381],{"class":519,"line":557},[517,1382,554],{"emptyLinePlaceholder":553},[517,1384,1385,1387,1390,1392,1394,1397,1399,1401,1403,1405,1407,1409,1411,1413,1415],{"class":519,"line":593},[517,1386,1145],{"class":573},[517,1388,1389],{"class":531}," publicAndStable ",[517,1391,1151],{"class":527},[517,1393,577],{"class":531},[517,1395,1396],{"class":523},"await",[517,1398,895],{"class":566},[517,1400,570],{"class":531},[517,1402,628],{"class":527},[517,1404,1321],{"class":625},[517,1406,653],{"class":527},[517,1408,541],{"class":527},[517,1410,1328],{"class":544},[517,1412,661],{"class":527},[517,1414,535],{"class":527},[517,1416,1417],{"class":531},"))\n",[517,1419,1420,1423,1426,1428,1430,1432,1434,1436,1438,1441,1444,1446,1448,1451,1453],{"class":519,"line":639},[517,1421,1422],{"class":527},"  .",[517,1424,1425],{"class":566},"filter",[517,1427,570],{"class":531},[517,1429,702],{"class":580},[517,1431,587],{"class":573},[517,1433,716],{"class":531},[517,1435,694],{"class":527},[517,1437,446],{"class":531},[517,1439,1440],{"class":527},"?.",[517,1442,1443],{"class":566},"includes",[517,1445,570],{"class":531},[517,1447,661],{"class":527},[517,1449,1450],{"class":544},"stable",[517,1452,661],{"class":527},[517,1454,1417],{"class":531},[493,1456,1458],{"id":1457},"按-handler-归属过滤","按 handler 归属过滤",[292,1460,312,1461,1463,1464,1467,1468,1471],{},[296,1462,450],{}," 将目录限定到单个 ",[301,1465,1466],{"href":153},"命名 handler","，或使用 ",[296,1469,1470],{},"orphansOnly: true"," 仅枚举通过默认路由公开的定义：",[507,1473,1475],{"className":509,"code":1474,"language":512,"meta":513,"style":513},"const adminCatalog = await listMcpTools({ handler: 'admin' })\nconst adminOrPublic = await listMcpTools({ handler: ['admin', 'public'] })\nconst orphans = await listMcpTools({ orphansOnly: true })\n",[296,1476,1477,1509,1552],{"__ignoreMap":513},[517,1478,1479,1481,1484,1486,1488,1490,1492,1494,1497,1499,1501,1503,1505,1507],{"class":519,"line":520},[517,1480,1145],{"class":573},[517,1482,1483],{"class":531}," adminCatalog ",[517,1485,1151],{"class":527},[517,1487,620],{"class":523},[517,1489,895],{"class":566},[517,1491,570],{"class":531},[517,1493,628],{"class":527},[517,1495,1496],{"class":625}," handler",[517,1498,653],{"class":527},[517,1500,541],{"class":527},[517,1502,1229],{"class":544},[517,1504,661],{"class":527},[517,1506,535],{"class":527},[517,1508,636],{"class":531},[517,1510,1511,1513,1516,1518,1520,1522,1524,1526,1528,1530,1532,1534,1536,1538,1540,1542,1544,1546,1548,1550],{"class":519,"line":550},[517,1512,1145],{"class":573},[517,1514,1515],{"class":531}," adminOrPublic ",[517,1517,1151],{"class":527},[517,1519,620],{"class":523},[517,1521,895],{"class":566},[517,1523,570],{"class":531},[517,1525,628],{"class":527},[517,1527,1496],{"class":625},[517,1529,653],{"class":527},[517,1531,1259],{"class":531},[517,1533,661],{"class":527},[517,1535,1229],{"class":544},[517,1537,661],{"class":527},[517,1539,604],{"class":527},[517,1541,541],{"class":527},[517,1543,1328],{"class":544},[517,1545,661],{"class":527},[517,1547,1277],{"class":531},[517,1549,872],{"class":527},[517,1551,636],{"class":531},[517,1553,1554,1556,1559,1561,1563,1565,1567,1569,1572,1574,1578,1580],{"class":519,"line":557},[517,1555,1145],{"class":573},[517,1557,1558],{"class":531}," orphans ",[517,1560,1151],{"class":527},[517,1562,620],{"class":523},[517,1564,895],{"class":566},[517,1566,570],{"class":531},[517,1568,628],{"class":527},[517,1570,1571],{"class":625}," orphansOnly",[517,1573,653],{"class":527},[517,1575,1577],{"class":1576},"sfNiH"," true",[517,1579,535],{"class":527},[517,1581,636],{"class":531},[493,1583,1584],{"id":1584},"组合使用",[292,1586,1587],{},"筛选条件可以自由组合——在一次调用中同时进行感知请求的可见性过滤，以及 group、tag 和 handler 的缩小范围筛选：",[507,1589,1591],{"className":509,"code":1590,"language":512,"meta":513,"style":513},"const adminDestructive = await listMcpTools({\n  event,\n  handler: 'admin',\n  tags: 'destructive',\n})\n",[296,1592,1593,1611,1618,1633,1649],{"__ignoreMap":513},[517,1594,1595,1597,1600,1602,1604,1606,1608],{"class":519,"line":520},[517,1596,1145],{"class":573},[517,1598,1599],{"class":531}," adminDestructive ",[517,1601,1151],{"class":527},[517,1603,620],{"class":523},[517,1605,895],{"class":566},[517,1607,570],{"class":531},[517,1609,1610],{"class":527},"{\n",[517,1612,1613,1616],{"class":519,"line":550},[517,1614,1615],{"class":531},"  event",[517,1617,664],{"class":527},[517,1619,1620,1623,1625,1627,1629,1631],{"class":519,"line":557},[517,1621,1622],{"class":625},"  handler",[517,1624,653],{"class":527},[517,1626,541],{"class":527},[517,1628,1229],{"class":544},[517,1630,661],{"class":527},[517,1632,664],{"class":527},[517,1634,1635,1638,1640,1642,1645,1647],{"class":519,"line":593},[517,1636,1637],{"class":625},"  tags",[517,1639,653],{"class":527},[517,1641,541],{"class":527},[517,1643,1644],{"class":544},"destructive",[517,1646,661],{"class":527},[517,1648,664],{"class":527},[517,1650,1651,1653],{"class":519,"line":639},[517,1652,872],{"class":527},[517,1654,636],{"class":531},[288,1656,1657],{"id":1657},"缓存",[292,1659,1660,1661,1668],{},"列表读取成本很低（从自动生成的注册表进行内存读取），但如果你将它们暴露在公开路由上，仍然可以用 ",[301,1662,1665],{"href":1663,"rel":1664},"https:\u002F\u002Fnitro.build\u002Fguide\u002Fcache#cached-event-handlers",[305],[296,1666,1667],{},"defineCachedEventHandler"," 包装处理函数，以添加 HTTP 缓存头：",[507,1670,1672],{"className":509,"code":1671,"filename":511,"language":512,"meta":513,"style":513},"import { listMcpDefinitions } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineCachedEventHandler(async (event) => {\n  const definitions = await listMcpDefinitions({ event })\n  return { name: 'My MCP Server', ...definitions }\n}, {\n  maxAge: 60 * 60,\n  swr: true,\n})\n",[296,1673,1674,1692,1696,1719,1742,1769,1776,1794,1805],{"__ignoreMap":513},[517,1675,1676,1678,1680,1682,1684,1686,1688,1690],{"class":519,"line":520},[517,1677,524],{"class":523},[517,1679,528],{"class":527},[517,1681,532],{"class":531},[517,1683,535],{"class":527},[517,1685,538],{"class":523},[517,1687,541],{"class":527},[517,1689,315],{"class":544},[517,1691,547],{"class":527},[517,1693,1694],{"class":519,"line":550},[517,1695,554],{"emptyLinePlaceholder":553},[517,1697,1698,1700,1702,1705,1707,1709,1711,1713,1715,1717],{"class":519,"line":557},[517,1699,560],{"class":523},[517,1701,563],{"class":523},[517,1703,1704],{"class":566}," defineCachedEventHandler",[517,1706,570],{"class":531},[517,1708,574],{"class":573},[517,1710,577],{"class":527},[517,1712,581],{"class":580},[517,1714,584],{"class":527},[517,1716,587],{"class":573},[517,1718,590],{"class":527},[517,1720,1721,1723,1726,1728,1730,1732,1734,1736,1738,1740],{"class":519,"line":593},[517,1722,596],{"class":573},[517,1724,1725],{"class":531}," definitions",[517,1727,617],{"class":527},[517,1729,620],{"class":523},[517,1731,532],{"class":566},[517,1733,570],{"class":625},[517,1735,628],{"class":527},[517,1737,631],{"class":531},[517,1739,535],{"class":527},[517,1741,636],{"class":625},[517,1743,1744,1746,1748,1750,1752,1754,1756,1758,1760,1763,1766],{"class":519,"line":639},[517,1745,642],{"class":523},[517,1747,528],{"class":527},[517,1749,711],{"class":625},[517,1751,653],{"class":527},[517,1753,541],{"class":527},[517,1755,658],{"class":544},[517,1757,661],{"class":527},[517,1759,604],{"class":527},[517,1761,1762],{"class":527}," ...",[517,1764,1765],{"class":531},"definitions",[517,1767,1768],{"class":527}," }\n",[517,1770,1771,1774],{"class":519,"line":647},[517,1772,1773],{"class":527},"},",[517,1775,590],{"class":527},[517,1777,1778,1781,1783,1787,1790,1792],{"class":519,"line":667},[517,1779,1780],{"class":625},"  maxAge",[517,1782,653],{"class":527},[517,1784,1786],{"class":1785},"sbssI"," 60",[517,1788,1789],{"class":527}," *",[517,1791,1786],{"class":1785},[517,1793,664],{"class":527},[517,1795,1796,1799,1801,1803],{"class":519,"line":684},[517,1797,1798],{"class":625},"  swr",[517,1800,653],{"class":527},[517,1802,1577],{"class":1576},[517,1804,664],{"class":527},[517,1806,1807,1809],{"class":519,"line":743},[517,1808,872],{"class":527},[517,1810,636],{"class":531},[461,1812,1815,1816,1818,1819,1821],{"color":1813,"icon":1814},"warning","i-lucide-triangle-alert","如果你传入 ",[296,1817,581],{}," 以应用依赖于每次请求上下文（认证、请求头）的 ",[296,1820,1047],{}," 守卫，就跳过缓存包装器。缓存会冻结第一次请求上下文下的响应。",[288,1823,1824],{"id":1824},"下一步",[1826,1827,1828,1837,1842],"ul",{},[1829,1830,1831,1833,1834,1836],"li",{},[301,1832,239],{"href":240}," — 使用 ",[296,1835,1047],{}," 守卫按请求隐藏或显示定义。",[1829,1838,1839,1841],{},[301,1840,224],{"href":225}," — 添加额外目录以扫描定义。",[1829,1843,1844,1847],{},[301,1845,1846],{"href":128},"Handlers"," — 定义带有自己工具子集的自定义 MCP 端点。",[1849,1850,1851],"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html 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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":513,"searchDepth":550,"depth":550,"links":1853},[1854,1855,1859,1867,1868],{"id":290,"depth":550,"text":290},{"id":491,"depth":550,"text":491,"children":1856},[1857,1858],{"id":495,"depth":557,"text":495},{"id":877,"depth":557,"text":877},{"id":1003,"depth":550,"text":1003,"children":1860},[1861,1863,1864,1865,1866],{"id":1118,"depth":557,"text":1862},"按 enabled() 过滤",{"id":1185,"depth":557,"text":1186},{"id":1284,"depth":557,"text":1285},{"id":1457,"depth":557,"text":1458},{"id":1584,"depth":557,"text":1584},{"id":1657,"depth":550,"text":1657},{"id":1824,"depth":550,"text":1824},"从你自己的服务器路由中读取工具包发现的工具、资源和提示词，而无需重复它们的名称和描述。","md",null,{},{"icon":213},{"title":1875,"description":1876},"列出 MCP 定义","使用 listMcpTools、listMcpResources、listMcpPrompts 和 listMcpDefinitions，从你自己的服务器路由中公开 MCP 定义的公共目录。","8p7m5XE71hWX1uOkY2kyzFVEYFk7JodbIBDXPMnTMYA",[1879,1881],{"title":205,"path":206,"stem":207,"description":1880,"icon":208,"children":-1},"该工具包如何打包、提供和连接 MCP Apps —— 以及你可以在其基础上构建的模式。",{"title":215,"path":216,"stem":217,"description":1882,"icon":64,"children":-1},"拦截 MCP 请求以添加身份验证、日志记录、分析等功能。",1778659577355]