[{"data":1,"prerenderedAt":1084},["ShallowReactive",2],{"navigation_docs":3,"-handlers-organization":282,"-handlers-organization-surround":1079},[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":152,"body":284,"description":1071,"extension":1072,"links":1073,"meta":1074,"navigation":1075,"path":153,"seo":1076,"stem":154,"__hash__":1078},"docs\u002F5.handlers\u002F5.organization.md",{"type":285,"value":286,"toc":1063},"minimark",[287,308,319,324,346,524,539,565,569,576,710,756,759,774,791,849,863,866,869,952,960,963,1026,1029,1059],[288,289,290,291,295,296,295,299,302,303,307],"p",{},"当你拥有多个命名处理器（",[292,293,294],"code",{},"\u002Fmcp\u002Fadmin","、",[292,297,298],{},"\u002Fmcp\u002Fapps",[292,300,301],{},"\u002Fmcp\u002Fapi-v2","…）时，通常希望每个工具、资源和提示都",[304,305,306],"strong",{},"恰好","落在一个位置，而不需要手动编写过滤器。",[288,309,310,311,314,315,318],{},"这个工具包为你提供了",[304,312,313],{},"一种机制","来归属定义，以及",[304,316,317],{},"一个逃生口","来处理其他所有情况。",[320,321,323],"h2",{"id":322},"a-文件夹约定归属的方式","A. 文件夹约定（归属的方式）",[288,325,326,327,330,331,295,334,337,338,341,342,345],{},"将命名处理器定义放在 ",[292,328,329],{},"server\u002Fmcp\u002Fhandlers\u002F\u003Cname>\u002F"," 下。",[292,332,333],{},"tools\u002F",[292,335,336],{},"resources\u002F"," 或 ",[292,339,340],{},"prompts\u002F"," 下的每个文件都会通过 ",[292,343,344],{},"_meta.handler"," 自动附加到该处理器。",[347,348,353],"pre",{"className":349,"code":350,"language":351,"meta":352,"style":352},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","server\u002Fmcp\u002F\n├── tools\u002F                          # → 默认处理器\n├── resources\u002F                      # → 默认处理器\n├── prompts\u002F                        # → 默认处理器\n└── handlers\u002F\n    ├── admin\u002F\n    │   ├── index.ts                # defineMcpHandler({ middleware: requireAdmin })\n    │   ├── tools\u002F\n    │   │   └── delete-user.ts      # → 处理器 'admin'（自动）\n    │   └── prompts\u002F\n    │       └── help.ts             # → 处理器 'admin'（自动）\n    └── widgets\u002F\n        ├── index.ts                # defineMcpHandler({})\n        └── tools\u002F\n            └── carousel.ts         # → 处理器 'widgets'（自动）\n","bash","",[292,354,355,364,378,389,400,409,418,433,443,460,470,484,493,504,512],{"__ignoreMap":352},[356,357,360],"span",{"class":358,"line":359},"line",1,[356,361,363],{"class":362},"sBMFI","server\u002Fmcp\u002F\n",[356,365,367,370,374],{"class":358,"line":366},2,[356,368,369],{"class":362},"├──",[356,371,373],{"class":372},"sfazB"," tools\u002F",[356,375,377],{"class":376},"sHwdD","                          # → 默认处理器\n",[356,379,381,383,386],{"class":358,"line":380},3,[356,382,369],{"class":362},[356,384,385],{"class":372}," resources\u002F",[356,387,388],{"class":376},"                      # → 默认处理器\n",[356,390,392,394,397],{"class":358,"line":391},4,[356,393,369],{"class":362},[356,395,396],{"class":372}," prompts\u002F",[356,398,399],{"class":376},"                        # → 默认处理器\n",[356,401,403,406],{"class":358,"line":402},5,[356,404,405],{"class":362},"└──",[356,407,408],{"class":372}," handlers\u002F\n",[356,410,412,415],{"class":358,"line":411},6,[356,413,414],{"class":362},"    ├──",[356,416,417],{"class":372}," admin\u002F\n",[356,419,421,424,427,430],{"class":358,"line":420},7,[356,422,423],{"class":362},"    │",[356,425,426],{"class":372},"   ├──",[356,428,429],{"class":372}," index.ts",[356,431,432],{"class":376},"                # defineMcpHandler({ middleware: requireAdmin })\n",[356,434,436,438,440],{"class":358,"line":435},8,[356,437,423],{"class":362},[356,439,426],{"class":372},[356,441,442],{"class":372}," tools\u002F\n",[356,444,446,448,451,454,457],{"class":358,"line":445},9,[356,447,423],{"class":362},[356,449,450],{"class":372},"   │",[356,452,453],{"class":372},"   └──",[356,455,456],{"class":372}," delete-user.ts",[356,458,459],{"class":376},"      # → 处理器 'admin'（自动）\n",[356,461,463,465,467],{"class":358,"line":462},10,[356,464,423],{"class":362},[356,466,453],{"class":372},[356,468,469],{"class":372}," prompts\u002F\n",[356,471,473,475,478,481],{"class":358,"line":472},11,[356,474,423],{"class":362},[356,476,477],{"class":372},"       └──",[356,479,480],{"class":372}," help.ts",[356,482,483],{"class":376},"             # → 处理器 'admin'（自动）\n",[356,485,487,490],{"class":358,"line":486},12,[356,488,489],{"class":362},"    └──",[356,491,492],{"class":372}," widgets\u002F\n",[356,494,496,499,501],{"class":358,"line":495},13,[356,497,498],{"class":362},"        ├──",[356,500,429],{"class":372},[356,502,503],{"class":376},"                # defineMcpHandler({})\n",[356,505,507,510],{"class":358,"line":506},14,[356,508,509],{"class":362},"        └──",[356,511,442],{"class":372},[356,513,515,518,521],{"class":358,"line":514},15,[356,516,517],{"class":362},"            └──",[356,519,520],{"class":372}," carousel.ts",[356,522,523],{"class":376},"         # → 处理器 'widgets'（自动）\n",[288,525,526,527,530,531,534,535,538],{},"处理器的 ",[292,528,529],{},"name"," 会从目录名中推断，并且",[304,532,533],{},"优先于","你在 ",[292,536,537],{},"index.ts"," 中设置的任何内容。",[540,541,543,544,546,547,550,551,554,555,295,558,295,561,564],"callout",{"color":542,"icon":272},"primary","即使它只有一行，",[292,545,537],{}," 也是必需的：",[292,548,549],{},"export default defineMcpHandler({})","。它用于注册 ",[292,552,553],{},"\u002Fmcp\u002F\u003Cname>"," 路由，并允许你添加 ",[292,556,557],{},"middleware",[292,559,560],{},"description",[292,562,563],{},"experimental_codeMode"," 等。",[320,566,568],{"id":567},"b-函数形式逃生口","B. 函数形式（逃生口）",[288,570,571,572,575],{},"对于交叉切分的场景——“每个标记了 X 的工具”、“每个孤立项”、“除了这一组之外的所有内容”——传入一个调用 ",[292,573,574],{},"getMcp*"," 辅助函数之一的函数：",[347,577,582],{"className":578,"code":579,"filename":580,"language":581,"meta":352,"style":352},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineMcpHandler, getMcpTools } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpHandler({\n  \u002F\u002F 每个标记为 'searchable' 的工具，不受文件夹影响。\n  tools: event => getMcpTools({ event, tags: ['searchable'] }),\n})\n","server\u002Fmcp\u002Fhandlers\u002Fsearchable\u002Findex.ts","typescript",[292,583,584,619,625,642,647,703],{"__ignoreMap":352},[356,585,586,590,594,598,601,604,607,610,613,616],{"class":358,"line":359},[356,587,589],{"class":588},"s7zQu","import",[356,591,593],{"class":592},"sMK4o"," {",[356,595,597],{"class":596},"sTEyZ"," defineMcpHandler",[356,599,600],{"class":592},",",[356,602,603],{"class":596}," getMcpTools",[356,605,606],{"class":592}," }",[356,608,609],{"class":588}," from",[356,611,612],{"class":592}," '",[356,614,615],{"class":372},"@nuxtjs\u002Fmcp-toolkit\u002Fserver",[356,617,618],{"class":592},"'\n",[356,620,621],{"class":358,"line":366},[356,622,624],{"emptyLinePlaceholder":623},true,"\n",[356,626,627,630,633,636,639],{"class":358,"line":380},[356,628,629],{"class":588},"export",[356,631,632],{"class":588}," default",[356,634,597],{"class":635},"s2Zo4",[356,637,638],{"class":596},"(",[356,640,641],{"class":592},"{\n",[356,643,644],{"class":358,"line":391},[356,645,646],{"class":376},"  \u002F\u002F 每个标记为 'searchable' 的工具，不受文件夹影响。\n",[356,648,649,652,655,659,663,665,667,670,672,674,678,680,683,686,689,691,694,697,700],{"class":358,"line":402},[356,650,651],{"class":635},"  tools",[356,653,654],{"class":592},":",[356,656,658],{"class":657},"sHdIc"," event",[356,660,662],{"class":661},"spNyl"," =>",[356,664,603],{"class":635},[356,666,638],{"class":596},[356,668,669],{"class":592},"{",[356,671,658],{"class":596},[356,673,600],{"class":592},[356,675,677],{"class":676},"swJcz"," tags",[356,679,654],{"class":592},[356,681,682],{"class":596}," [",[356,684,685],{"class":592},"'",[356,687,688],{"class":372},"searchable",[356,690,685],{"class":592},[356,692,693],{"class":596},"] ",[356,695,696],{"class":592},"}",[356,698,699],{"class":596},")",[356,701,702],{"class":592},",\n",[356,704,705,707],{"class":358,"line":411},[356,706,696],{"class":592},[356,708,709],{"class":596},")\n",[288,711,712,295,715,718,719,722,723,726,727,730,731,734,735,295,738,295,741,295,744,295,747,750,751,755],{},[292,713,714],{},"getMcpTools",[292,716,717],{},"getMcpResources"," 和 ",[292,720,721],{},"getMcpPrompts"," 返回",[304,724,725],{},"原始","定义对象（保留处理器和 Zod schema 不变）——这正是 ",[292,728,729],{},"defineMcpHandler"," 所期望的。它们接受与对应 ",[292,732,733],{},"listMcp*"," 方法相同的选项：",[292,736,737],{},"event",[292,739,740],{},"group",[292,742,743],{},"tags",[292,745,746],{},"handler",[292,748,749],{},"orphansOnly","。完整参考请参见 ",[752,753,754],"a",{"href":211},"Listing definitions","。",[320,757,758],{"id":758},"默认处理器策略",[288,760,761,762,765,766,769,770,773],{},"默认的 ",[292,763,764],{},"\u002Fmcp"," 路由会遵循 ",[292,767,768],{},"nuxt.config.ts"," 中的 ",[292,771,772],{},"mcp.defaultHandlerStrategy","：",[775,776,777,787],"field-group",{},[778,779,782,783,786],"field",{"name":780,"type":781},"`'orphans'`","default","仅暴露",[304,784,785],{},"未附加","到任何命名处理器的定义。每个定义只会出现在一个地方。",[778,788,790],{"name":789},"`'all'`","暴露所有已发现的定义（多处理器之前的行为）。当你想在专门路由之外再提供一个“杂烩”路由时很有用。",[347,792,794],{"className":578,"code":793,"filename":768,"language":581,"meta":352,"style":352},"export default defineNuxtConfig({\n  mcp: {\n    defaultHandlerStrategy: 'orphans', \u002F\u002F（默认）\n  },\n})\n",[292,795,796,809,819,838,843],{"__ignoreMap":352},[356,797,798,800,802,805,807],{"class":358,"line":359},[356,799,629],{"class":588},[356,801,632],{"class":588},[356,803,804],{"class":635}," defineNuxtConfig",[356,806,638],{"class":596},[356,808,641],{"class":592},[356,810,811,814,816],{"class":358,"line":366},[356,812,813],{"class":676},"  mcp",[356,815,654],{"class":592},[356,817,818],{"class":592}," {\n",[356,820,821,824,826,828,831,833,835],{"class":358,"line":380},[356,822,823],{"class":676},"    defaultHandlerStrategy",[356,825,654],{"class":592},[356,827,612],{"class":592},[356,829,830],{"class":372},"orphans",[356,832,685],{"class":592},[356,834,600],{"class":592},[356,836,837],{"class":376}," \u002F\u002F（默认）\n",[356,839,840],{"class":358,"line":391},[356,841,842],{"class":592},"  },\n",[356,844,845,847],{"class":358,"line":402},[356,846,696],{"class":592},[356,848,709],{"class":596},[540,850,851,854,855,858,859,862],{"color":542,"icon":262},[304,852,853],{},"零成本向后兼容","：当没有任何定义使用文件夹约定时，",[292,856,857],{},"'orphans'"," 的行为与 ",[292,860,861],{},"'all'"," 完全一致——因为每个定义都是孤立项，所以都会被暴露。升级后现有应用的行为不会改变。",[320,864,865],{"id":865},"解析规则",[288,867,868],{},"工具包使用一条单一规则、按文件位置确定性地决定每个定义出现在哪里：",[870,871,872,889],"table",{},[873,874,875],"thead",{},[876,877,878,882],"tr",{},[879,880,881],"th",{},"处理器配置文件",[879,883,884,885,888],{},"对于 ",[292,886,887],{},"tools | resources | prompts: undefined"," 的默认行为",[890,891,892,907,921,932,940],"tbody",{},[876,893,894,901],{},[895,896,897,900],"td",{},[292,898,899],{},"server\u002Fmcp\u002Findex.ts","（默认路由）",[895,902,903,904],{},"遵循 ",[292,905,906],{},"defaultHandlerStrategy",[876,908,909,915],{},[895,910,911,914],{},[292,912,913],{},"server\u002Fmcp\u002Fhandlers\u002F\u003Cname>\u002Findex.ts","（文件夹处理器）",[895,916,917,918],{},"定义归属到 ",[292,919,920],{},"\u003Cname>",[876,922,923,929],{},[895,924,925,928],{},[292,926,927],{},"server\u002Fmcp\u002F\u003Cname>.ts","（顶层处理器）",[895,930,931],{},"所有已发现的定义（向后兼容）",[876,933,934,937],{},[895,935,936],{},"任意（数组）",[895,938,939],{},"按原样使用",[876,941,942,949],{},[895,943,944,945,948],{},"任意（函数 ",[292,946,947],{},"(event) => T[]","）",[895,950,951],{},"每次请求时调用",[540,953,956,957,959],{"color":954,"icon":955},"info","i-lucide-info","“文件夹处理器”和“顶层处理器”之间的区别纯粹取决于文件所在位置——并非魔法。加载器会在文件夹处理器上注入 ",[292,958,344],{},"；运行时读取它以选择默认值。",[320,961,962],{"id":962},"迁移提示",[964,965,966,984,998,1011],"ol",{},[967,968,969,972,973,976,977,718,980,983],"li",{},[304,970,971],{},"先从小处开始。"," 一次迁移一个处理器到 ",[292,974,975],{},"handlers\u002F\u003Cname>\u002F"," 中。现有的 ",[292,978,979],{},"tools: [...]",[292,981,982],{},"tools: ev => [...]"," 会继续原样工作。",[967,985,986,989,990,993,994,997],{},[304,987,988],{},"移除手动过滤器。"," 如果你之前在做 ",[292,991,992],{},"tools: allTools.filter(t => t._meta?.group === 'apps')","，请把这些工具移动到 ",[292,995,996],{},"handlers\u002Fapps\u002Ftools\u002F","，让系统自动为它们归属。",[967,999,1000,1003,1004,1007,1008,755],{},[304,1001,1002],{},"包装所有内容的处理器。"," 一个包装每个工具的顶层处理器（例如 ",[292,1005,1006],{},"mcp\u002Fcodemode.ts"," 中的代码模式包装器）会保持当前行为——顶层处理器默认使用完整池。若要过滤，请传入函数：",[292,1009,1010],{},"tools: ev => getMcpTools({ event: ev, ... })",[967,1012,1013,1016,1017,1019,1020,1022,1023,1025],{},[304,1014,1015],{},"强制旧行为。"," 将 ",[292,1018,772],{}," 设置为 ",[292,1021,861],{},"，以便在采用文件夹处理器后，",[292,1024,764],{}," 仍然暴露所有内容。",[320,1027,1028],{"id":1028},"另请参见",[1030,1031,1032,1043,1049],"ul",{},[967,1033,1034,1036,1037,1039,1040,1042],{},[752,1035,754],{"href":211}," — 以编程方式访问摘要和原始定义（",[292,1038,733],{}," \u002F ",[292,1041,574],{},"）。",[967,1044,1045,1048],{},[752,1046,1047],{"href":148},"Sharing & practices"," — 处理器组织模式和最佳实践。",[967,1050,1051,1054,1055,1058],{},[752,1052,1053],{"href":240},"Dynamic definitions"," — 对单个定义按请求启用的 ",[292,1056,1057],{},"enabled()"," 守卫。",[1060,1061,1062],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":352,"searchDepth":366,"depth":366,"links":1064},[1065,1066,1067,1068,1069,1070],{"id":322,"depth":366,"text":323},{"id":567,"depth":366,"text":568},{"id":758,"depth":366,"text":758},{"id":865,"depth":366,"text":865},{"id":962,"depth":366,"text":962},{"id":1028,"depth":366,"text":1028},"通过文件夹约定自动将自动发现的定义归属到多个 MCP 处理器，并为交叉切分场景提供一个基于函数的逃生口。","md",null,{},{"icon":155},{"title":152,"description":1077},"使用一个文件夹约定将工具\u002F资源\u002F提示归属到 MCP 路由，再通过 getMcp* 辅助函数进行临时过滤。没有魔法，没有运行时回退。","vKaSJ4rvBn6oX8rtvdtIIAbW3kefCk1WZ11chyIrlz4",[1080,1082],{"title":147,"path":148,"stem":149,"description":1081,"icon":150,"children":-1},"跨处理器工具共享、文件布局、使用场景和后续步骤。",{"title":46,"path":162,"stem":163,"description":1083,"icon":164,"children":-1},"构建交互式 UI 小部件，让 AI 主机与聊天内容并排渲染——以 Vue SFC 编写，作为 MCP UI 资源提供。",1778659578965]