[{"data":1,"prerenderedAt":2417},["ShallowReactive",2],{"navigation_docs":3,"-tools-schema-handler":282,"-tools-schema-handler-surround":2412},[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":51,"body":284,"description":2403,"extension":2404,"links":2405,"meta":2406,"navigation":2407,"path":52,"seo":2408,"stem":53,"__hash__":2411},"docs\u002F2.tools\u002F1.schema-handler.md",{"type":285,"value":286,"toc":2392},"minimark",[287,292,303,445,448,897,902,1043,1047,1054,1509,1518,1521,1528,1531,1543,1732,1741,1744,1749,2004,2007,2018,2201,2370,2388],[288,289,291],"h2",{"id":290},"输入-schema","输入 Schema",[293,294,295,299,300,302],"p",{},[296,297,298],"code",{},"inputSchema"," 是可选的，使用 Zod 来定义和验证输入参数。提供时，每个字段都必须是 Zod schema。没有参数的工具可以完全省略 ",[296,301,298],{},"：",[304,305,311],"pre",{"className":306,"code":307,"filename":308,"language":309,"meta":310,"style":310},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  name: 'echo',\n  description: '回显一条消息',\n  handler: async () => '回显：test',\n})\n","server\u002Fmcp\u002Ftools\u002Fecho.ts","typescript","",[296,312,313,346,353,371,392,409,436],{"__ignoreMap":310},[314,315,318,322,326,330,333,336,339,343],"span",{"class":316,"line":317},"line",1,[314,319,321],{"class":320},"s7zQu","import",[314,323,325],{"class":324},"sMK4o"," {",[314,327,329],{"class":328},"sTEyZ"," defineMcpTool",[314,331,332],{"class":324}," }",[314,334,335],{"class":320}," from",[314,337,338],{"class":324}," '",[314,340,342],{"class":341},"sfazB","@nuxtjs\u002Fmcp-toolkit\u002Fserver",[314,344,345],{"class":324},"'\n",[314,347,349],{"class":316,"line":348},2,[314,350,352],{"emptyLinePlaceholder":351},true,"\n",[314,354,356,359,362,365,368],{"class":316,"line":355},3,[314,357,358],{"class":320},"export",[314,360,361],{"class":320}," default",[314,363,329],{"class":364},"s2Zo4",[314,366,367],{"class":328},"(",[314,369,370],{"class":324},"{\n",[314,372,374,378,381,383,386,389],{"class":316,"line":373},4,[314,375,377],{"class":376},"swJcz","  name",[314,379,380],{"class":324},":",[314,382,338],{"class":324},[314,384,385],{"class":341},"echo",[314,387,388],{"class":324},"'",[314,390,391],{"class":324},",\n",[314,393,395,398,400,402,405,407],{"class":316,"line":394},5,[314,396,397],{"class":376},"  description",[314,399,380],{"class":324},[314,401,338],{"class":324},[314,403,404],{"class":341},"回显一条消息",[314,406,388],{"class":324},[314,408,391],{"class":324},[314,410,412,415,417,421,424,427,429,432,434],{"class":316,"line":411},6,[314,413,414],{"class":364},"  handler",[314,416,380],{"class":324},[314,418,420],{"class":419},"spNyl"," async",[314,422,423],{"class":324}," ()",[314,425,426],{"class":419}," =>",[314,428,338],{"class":324},[314,430,431],{"class":341},"回显：test",[314,433,388],{"class":324},[314,435,391],{"class":324},[314,437,439,442],{"class":316,"line":438},7,[314,440,441],{"class":324},"}",[314,443,444],{"class":328},")\n",[293,446,447],{},"对于带参数的工具，请使用 Zod schema 来定义它们：",[304,449,452],{"className":306,"code":450,"filename":451,"language":309,"meta":310,"style":310},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  name: 'calculator',\n  inputSchema: {\n    \u002F\u002F 字符串输入\n    operation: z.string().describe('要执行的操作'),\n\n    \u002F\u002F 数字输入\n    a: z.number().describe('第一个数字'),\n    b: z.number().describe('第二个数字'),\n\n    \u002F\u002F 可选字段\n    precision: z.number().optional().describe('小数精度'),\n\n    \u002F\u002F 枚举输入\n    format: z.enum(['decimal', 'fraction']).describe('输出格式'),\n\n    \u002F\u002F 数组输入\n    numbers: z.array(z.number()).describe('数字列表'),\n  },\n  handler: async ({ operation, a, b, precision, format, numbers }) => {\n    \u002F\u002F 处理器实现\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fcalculator.ts",[296,453,454,474,492,496,508,523,533,539,577,582,588,622,655,660,666,706,711,717,772,777,783,825,831,879,885,890],{"__ignoreMap":310},[314,455,456,458,460,463,465,467,469,472],{"class":316,"line":317},[314,457,321],{"class":320},[314,459,325],{"class":324},[314,461,462],{"class":328}," z",[314,464,332],{"class":324},[314,466,335],{"class":320},[314,468,338],{"class":324},[314,470,471],{"class":341},"zod",[314,473,345],{"class":324},[314,475,476,478,480,482,484,486,488,490],{"class":316,"line":348},[314,477,321],{"class":320},[314,479,325],{"class":324},[314,481,329],{"class":328},[314,483,332],{"class":324},[314,485,335],{"class":320},[314,487,338],{"class":324},[314,489,342],{"class":341},[314,491,345],{"class":324},[314,493,494],{"class":316,"line":355},[314,495,352],{"emptyLinePlaceholder":351},[314,497,498,500,502,504,506],{"class":316,"line":373},[314,499,358],{"class":320},[314,501,361],{"class":320},[314,503,329],{"class":364},[314,505,367],{"class":328},[314,507,370],{"class":324},[314,509,510,512,514,516,519,521],{"class":316,"line":394},[314,511,377],{"class":376},[314,513,380],{"class":324},[314,515,338],{"class":324},[314,517,518],{"class":341},"calculator",[314,520,388],{"class":324},[314,522,391],{"class":324},[314,524,525,528,530],{"class":316,"line":411},[314,526,527],{"class":376},"  inputSchema",[314,529,380],{"class":324},[314,531,532],{"class":324}," {\n",[314,534,535],{"class":316,"line":438},[314,536,538],{"class":537},"sHwdD","    \u002F\u002F 字符串输入\n",[314,540,542,545,547,549,552,555,558,560,563,565,567,570,572,575],{"class":316,"line":541},8,[314,543,544],{"class":376},"    operation",[314,546,380],{"class":324},[314,548,462],{"class":328},[314,550,551],{"class":324},".",[314,553,554],{"class":364},"string",[314,556,557],{"class":328},"()",[314,559,551],{"class":324},[314,561,562],{"class":364},"describe",[314,564,367],{"class":328},[314,566,388],{"class":324},[314,568,569],{"class":341},"要执行的操作",[314,571,388],{"class":324},[314,573,574],{"class":328},")",[314,576,391],{"class":324},[314,578,580],{"class":316,"line":579},9,[314,581,352],{"emptyLinePlaceholder":351},[314,583,585],{"class":316,"line":584},10,[314,586,587],{"class":537},"    \u002F\u002F 数字输入\n",[314,589,591,594,596,598,600,603,605,607,609,611,613,616,618,620],{"class":316,"line":590},11,[314,592,593],{"class":376},"    a",[314,595,380],{"class":324},[314,597,462],{"class":328},[314,599,551],{"class":324},[314,601,602],{"class":364},"number",[314,604,557],{"class":328},[314,606,551],{"class":324},[314,608,562],{"class":364},[314,610,367],{"class":328},[314,612,388],{"class":324},[314,614,615],{"class":341},"第一个数字",[314,617,388],{"class":324},[314,619,574],{"class":328},[314,621,391],{"class":324},[314,623,625,628,630,632,634,636,638,640,642,644,646,649,651,653],{"class":316,"line":624},12,[314,626,627],{"class":376},"    b",[314,629,380],{"class":324},[314,631,462],{"class":328},[314,633,551],{"class":324},[314,635,602],{"class":364},[314,637,557],{"class":328},[314,639,551],{"class":324},[314,641,562],{"class":364},[314,643,367],{"class":328},[314,645,388],{"class":324},[314,647,648],{"class":341},"第二个数字",[314,650,388],{"class":324},[314,652,574],{"class":328},[314,654,391],{"class":324},[314,656,658],{"class":316,"line":657},13,[314,659,352],{"emptyLinePlaceholder":351},[314,661,663],{"class":316,"line":662},14,[314,664,665],{"class":537},"    \u002F\u002F 可选字段\n",[314,667,669,672,674,676,678,680,682,684,687,689,691,693,695,697,700,702,704],{"class":316,"line":668},15,[314,670,671],{"class":376},"    precision",[314,673,380],{"class":324},[314,675,462],{"class":328},[314,677,551],{"class":324},[314,679,602],{"class":364},[314,681,557],{"class":328},[314,683,551],{"class":324},[314,685,686],{"class":364},"optional",[314,688,557],{"class":328},[314,690,551],{"class":324},[314,692,562],{"class":364},[314,694,367],{"class":328},[314,696,388],{"class":324},[314,698,699],{"class":341},"小数精度",[314,701,388],{"class":324},[314,703,574],{"class":328},[314,705,391],{"class":324},[314,707,709],{"class":316,"line":708},16,[314,710,352],{"emptyLinePlaceholder":351},[314,712,714],{"class":316,"line":713},17,[314,715,716],{"class":537},"    \u002F\u002F 枚举输入\n",[314,718,720,723,725,727,729,732,735,737,740,742,745,747,750,752,755,757,759,761,763,766,768,770],{"class":316,"line":719},18,[314,721,722],{"class":376},"    format",[314,724,380],{"class":324},[314,726,462],{"class":328},[314,728,551],{"class":324},[314,730,731],{"class":364},"enum",[314,733,734],{"class":328},"([",[314,736,388],{"class":324},[314,738,739],{"class":341},"decimal",[314,741,388],{"class":324},[314,743,744],{"class":324},",",[314,746,338],{"class":324},[314,748,749],{"class":341},"fraction",[314,751,388],{"class":324},[314,753,754],{"class":328},"])",[314,756,551],{"class":324},[314,758,562],{"class":364},[314,760,367],{"class":328},[314,762,388],{"class":324},[314,764,765],{"class":341},"输出格式",[314,767,388],{"class":324},[314,769,574],{"class":328},[314,771,391],{"class":324},[314,773,775],{"class":316,"line":774},19,[314,776,352],{"emptyLinePlaceholder":351},[314,778,780],{"class":316,"line":779},20,[314,781,782],{"class":537},"    \u002F\u002F 数组输入\n",[314,784,786,789,791,793,795,798,801,803,805,808,810,812,814,816,819,821,823],{"class":316,"line":785},21,[314,787,788],{"class":376},"    numbers",[314,790,380],{"class":324},[314,792,462],{"class":328},[314,794,551],{"class":324},[314,796,797],{"class":364},"array",[314,799,800],{"class":328},"(z",[314,802,551],{"class":324},[314,804,602],{"class":364},[314,806,807],{"class":328},"())",[314,809,551],{"class":324},[314,811,562],{"class":364},[314,813,367],{"class":328},[314,815,388],{"class":324},[314,817,818],{"class":341},"数字列表",[314,820,388],{"class":324},[314,822,574],{"class":328},[314,824,391],{"class":324},[314,826,828],{"class":316,"line":827},22,[314,829,830],{"class":324},"  },\n",[314,832,834,836,838,840,843,847,849,852,854,857,859,862,864,867,869,872,875,877],{"class":316,"line":833},23,[314,835,414],{"class":364},[314,837,380],{"class":324},[314,839,420],{"class":419},[314,841,842],{"class":324}," ({",[314,844,846],{"class":845},"sHdIc"," operation",[314,848,744],{"class":324},[314,850,851],{"class":845}," a",[314,853,744],{"class":324},[314,855,856],{"class":845}," b",[314,858,744],{"class":324},[314,860,861],{"class":845}," precision",[314,863,744],{"class":324},[314,865,866],{"class":845}," format",[314,868,744],{"class":324},[314,870,871],{"class":845}," numbers",[314,873,874],{"class":324}," })",[314,876,426],{"class":419},[314,878,532],{"class":324},[314,880,882],{"class":316,"line":881},24,[314,883,884],{"class":537},"    \u002F\u002F 处理器实现\n",[314,886,888],{"class":316,"line":887},25,[314,889,830],{"class":324},[314,891,893,895],{"class":316,"line":892},26,[314,894,441],{"class":324},[314,896,444],{"class":328},[898,899,901],"h3",{"id":900},"常见-zod-类型","常见 Zod 类型",[903,904,905,920],"table",{},[906,907,908],"thead",{},[909,910,911,915,917],"tr",{},[912,913,914],"th",{},"Zod 类型",[912,916,254],{},[912,918,919],{},"描述",[921,922,923,939,954,968,983,998,1013,1028],"tbody",{},[909,924,925,931,936],{},[926,927,928],"td",{},[296,929,930],{},"z.string()",[926,932,933],{},[296,934,935],{},"z.string().min(1).max(100)",[926,937,938],{},"带校验的字符串",[909,940,941,946,951],{},[926,942,943],{},[296,944,945],{},"z.number()",[926,947,948],{},[296,949,950],{},"z.number().min(0).max(100)",[926,952,953],{},"带校验的数字",[909,955,956,961,965],{},[926,957,958],{},[296,959,960],{},"z.boolean()",[926,962,963],{},[296,964,960],{},[926,966,967],{},"布尔值",[909,969,970,975,980],{},[926,971,972],{},[296,973,974],{},"z.array()",[926,976,977],{},[296,978,979],{},"z.array(z.string())",[926,981,982],{},"值数组",[909,984,985,990,995],{},[926,986,987],{},[296,988,989],{},"z.object()",[926,991,992],{},[296,993,994],{},"z.object({ ... })",[926,996,997],{},"嵌套对象",[909,999,1000,1005,1010],{},[926,1001,1002],{},[296,1003,1004],{},"z.enum()",[926,1006,1007],{},[296,1008,1009],{},"z.enum(['a', 'b'])",[926,1011,1012],{},"枚举",[909,1014,1015,1020,1025],{},[926,1016,1017],{},[296,1018,1019],{},"z.optional()",[926,1021,1022],{},[296,1023,1024],{},"z.string().optional()",[926,1026,1027],{},"可选字段",[909,1029,1030,1035,1040],{},[926,1031,1032],{},[296,1033,1034],{},"z.default()",[926,1036,1037],{},[296,1038,1039],{},"z.string().default('value')",[926,1041,1042],{},"带默认值的字段",[288,1044,1046],{"id":1045},"输出-schema","输出 Schema",[293,1048,1049,1050,1053],{},"使用 ",[296,1051,1052],{},"outputSchema"," 定义结构化输出：",[304,1055,1058],{"className":306,"code":1056,"filename":1057,"language":309,"meta":310,"style":310},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  name: 'calculate-bmi',\n  description: '计算身体质量指数',\n  inputSchema: {\n    weightKg: z.number().describe('体重（千克）'),\n    heightM: z.number().describe('身高（米）'),\n  },\n  outputSchema: {\n    bmi: z.number(),\n    category: z.string(),\n  },\n  handler: async ({ weightKg, heightM }) => {\n    const bmi = weightKg \u002F (heightM * heightM)\n    let category = '正常'\n    if (bmi \u003C 18.5) category = '偏瘦'\n    else if (bmi >= 25) category = '超重'\n    else if (bmi >= 30) category = '肥胖'\n\n    return {\n      structuredContent: {\n        bmi: Math.round(bmi * 100) \u002F 100,\n        category,\n      },\n    }\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fbmi.ts",[296,1059,1060,1078,1096,1100,1112,1127,1142,1150,1182,1214,1218,1227,1244,1261,1265,1289,1318,1335,1367,1398,1426,1430,1437,1446,1479,1486,1491,1497,1502],{"__ignoreMap":310},[314,1061,1062,1064,1066,1068,1070,1072,1074,1076],{"class":316,"line":317},[314,1063,321],{"class":320},[314,1065,325],{"class":324},[314,1067,462],{"class":328},[314,1069,332],{"class":324},[314,1071,335],{"class":320},[314,1073,338],{"class":324},[314,1075,471],{"class":341},[314,1077,345],{"class":324},[314,1079,1080,1082,1084,1086,1088,1090,1092,1094],{"class":316,"line":348},[314,1081,321],{"class":320},[314,1083,325],{"class":324},[314,1085,329],{"class":328},[314,1087,332],{"class":324},[314,1089,335],{"class":320},[314,1091,338],{"class":324},[314,1093,342],{"class":341},[314,1095,345],{"class":324},[314,1097,1098],{"class":316,"line":355},[314,1099,352],{"emptyLinePlaceholder":351},[314,1101,1102,1104,1106,1108,1110],{"class":316,"line":373},[314,1103,358],{"class":320},[314,1105,361],{"class":320},[314,1107,329],{"class":364},[314,1109,367],{"class":328},[314,1111,370],{"class":324},[314,1113,1114,1116,1118,1120,1123,1125],{"class":316,"line":394},[314,1115,377],{"class":376},[314,1117,380],{"class":324},[314,1119,338],{"class":324},[314,1121,1122],{"class":341},"calculate-bmi",[314,1124,388],{"class":324},[314,1126,391],{"class":324},[314,1128,1129,1131,1133,1135,1138,1140],{"class":316,"line":411},[314,1130,397],{"class":376},[314,1132,380],{"class":324},[314,1134,338],{"class":324},[314,1136,1137],{"class":341},"计算身体质量指数",[314,1139,388],{"class":324},[314,1141,391],{"class":324},[314,1143,1144,1146,1148],{"class":316,"line":438},[314,1145,527],{"class":376},[314,1147,380],{"class":324},[314,1149,532],{"class":324},[314,1151,1152,1155,1157,1159,1161,1163,1165,1167,1169,1171,1173,1176,1178,1180],{"class":316,"line":541},[314,1153,1154],{"class":376},"    weightKg",[314,1156,380],{"class":324},[314,1158,462],{"class":328},[314,1160,551],{"class":324},[314,1162,602],{"class":364},[314,1164,557],{"class":328},[314,1166,551],{"class":324},[314,1168,562],{"class":364},[314,1170,367],{"class":328},[314,1172,388],{"class":324},[314,1174,1175],{"class":341},"体重（千克）",[314,1177,388],{"class":324},[314,1179,574],{"class":328},[314,1181,391],{"class":324},[314,1183,1184,1187,1189,1191,1193,1195,1197,1199,1201,1203,1205,1208,1210,1212],{"class":316,"line":579},[314,1185,1186],{"class":376},"    heightM",[314,1188,380],{"class":324},[314,1190,462],{"class":328},[314,1192,551],{"class":324},[314,1194,602],{"class":364},[314,1196,557],{"class":328},[314,1198,551],{"class":324},[314,1200,562],{"class":364},[314,1202,367],{"class":328},[314,1204,388],{"class":324},[314,1206,1207],{"class":341},"身高（米）",[314,1209,388],{"class":324},[314,1211,574],{"class":328},[314,1213,391],{"class":324},[314,1215,1216],{"class":316,"line":584},[314,1217,830],{"class":324},[314,1219,1220,1223,1225],{"class":316,"line":590},[314,1221,1222],{"class":376},"  outputSchema",[314,1224,380],{"class":324},[314,1226,532],{"class":324},[314,1228,1229,1232,1234,1236,1238,1240,1242],{"class":316,"line":624},[314,1230,1231],{"class":376},"    bmi",[314,1233,380],{"class":324},[314,1235,462],{"class":328},[314,1237,551],{"class":324},[314,1239,602],{"class":364},[314,1241,557],{"class":328},[314,1243,391],{"class":324},[314,1245,1246,1249,1251,1253,1255,1257,1259],{"class":316,"line":657},[314,1247,1248],{"class":376},"    category",[314,1250,380],{"class":324},[314,1252,462],{"class":328},[314,1254,551],{"class":324},[314,1256,554],{"class":364},[314,1258,557],{"class":328},[314,1260,391],{"class":324},[314,1262,1263],{"class":316,"line":662},[314,1264,830],{"class":324},[314,1266,1267,1269,1271,1273,1275,1278,1280,1283,1285,1287],{"class":316,"line":668},[314,1268,414],{"class":364},[314,1270,380],{"class":324},[314,1272,420],{"class":419},[314,1274,842],{"class":324},[314,1276,1277],{"class":845}," weightKg",[314,1279,744],{"class":324},[314,1281,1282],{"class":845}," heightM",[314,1284,874],{"class":324},[314,1286,426],{"class":419},[314,1288,532],{"class":324},[314,1290,1291,1294,1297,1300,1302,1305,1308,1311,1314,1316],{"class":316,"line":708},[314,1292,1293],{"class":419},"    const",[314,1295,1296],{"class":328}," bmi",[314,1298,1299],{"class":324}," =",[314,1301,1277],{"class":328},[314,1303,1304],{"class":324}," \u002F",[314,1306,1307],{"class":376}," (",[314,1309,1310],{"class":328},"heightM",[314,1312,1313],{"class":324}," *",[314,1315,1282],{"class":328},[314,1317,444],{"class":376},[314,1319,1320,1323,1326,1328,1330,1333],{"class":316,"line":713},[314,1321,1322],{"class":419},"    let",[314,1324,1325],{"class":328}," category",[314,1327,1299],{"class":324},[314,1329,338],{"class":324},[314,1331,1332],{"class":341},"正常",[314,1334,345],{"class":324},[314,1336,1337,1340,1342,1345,1348,1352,1355,1358,1360,1362,1365],{"class":316,"line":719},[314,1338,1339],{"class":320},"    if",[314,1341,1307],{"class":376},[314,1343,1344],{"class":328},"bmi",[314,1346,1347],{"class":324}," \u003C",[314,1349,1351],{"class":1350},"sbssI"," 18.5",[314,1353,1354],{"class":376},") ",[314,1356,1357],{"class":328},"category",[314,1359,1299],{"class":324},[314,1361,338],{"class":324},[314,1363,1364],{"class":341},"偏瘦",[314,1366,345],{"class":324},[314,1368,1369,1372,1375,1377,1379,1382,1385,1387,1389,1391,1393,1396],{"class":316,"line":774},[314,1370,1371],{"class":320},"    else",[314,1373,1374],{"class":320}," if",[314,1376,1307],{"class":376},[314,1378,1344],{"class":328},[314,1380,1381],{"class":324}," >=",[314,1383,1384],{"class":1350}," 25",[314,1386,1354],{"class":376},[314,1388,1357],{"class":328},[314,1390,1299],{"class":324},[314,1392,338],{"class":324},[314,1394,1395],{"class":341},"超重",[314,1397,345],{"class":324},[314,1399,1400,1402,1404,1406,1408,1410,1413,1415,1417,1419,1421,1424],{"class":316,"line":779},[314,1401,1371],{"class":320},[314,1403,1374],{"class":320},[314,1405,1307],{"class":376},[314,1407,1344],{"class":328},[314,1409,1381],{"class":324},[314,1411,1412],{"class":1350}," 30",[314,1414,1354],{"class":376},[314,1416,1357],{"class":328},[314,1418,1299],{"class":324},[314,1420,338],{"class":324},[314,1422,1423],{"class":341},"肥胖",[314,1425,345],{"class":324},[314,1427,1428],{"class":316,"line":785},[314,1429,352],{"emptyLinePlaceholder":351},[314,1431,1432,1435],{"class":316,"line":827},[314,1433,1434],{"class":320},"    return",[314,1436,532],{"class":324},[314,1438,1439,1442,1444],{"class":316,"line":833},[314,1440,1441],{"class":376},"      structuredContent",[314,1443,380],{"class":324},[314,1445,532],{"class":324},[314,1447,1448,1451,1453,1456,1458,1461,1463,1465,1467,1470,1472,1475,1477],{"class":316,"line":881},[314,1449,1450],{"class":376},"        bmi",[314,1452,380],{"class":324},[314,1454,1455],{"class":328}," Math",[314,1457,551],{"class":324},[314,1459,1460],{"class":364},"round",[314,1462,367],{"class":376},[314,1464,1344],{"class":328},[314,1466,1313],{"class":324},[314,1468,1469],{"class":1350}," 100",[314,1471,1354],{"class":376},[314,1473,1474],{"class":324},"\u002F",[314,1476,1469],{"class":1350},[314,1478,391],{"class":324},[314,1480,1481,1484],{"class":316,"line":887},[314,1482,1483],{"class":328},"        category",[314,1485,391],{"class":324},[314,1487,1488],{"class":316,"line":892},[314,1489,1490],{"class":324},"      },\n",[314,1492,1494],{"class":316,"line":1493},27,[314,1495,1496],{"class":324},"    }\n",[314,1498,1500],{"class":316,"line":1499},28,[314,1501,830],{"class":324},[314,1503,1505,1507],{"class":316,"line":1504},29,[314,1506,441],{"class":324},[314,1508,444],{"class":328},[293,1510,1511,1514,1515,1517],{},[296,1512,1513],{},"structuredContent"," 字段提供与 ",[296,1516,1052],{}," 匹配的结构化数据，使 AI 助手更容易处理结果。",[288,1519,1520],{"id":1520},"处理器函数",[293,1522,1523,1524,1527],{},"处理器是一个异步函数，接收经过验证的输入并返回结果。你可以直接返回简化值——它们会自动包装为 MCP ",[296,1525,1526],{},"CallToolResult"," 格式。",[898,1529,1530],{"id":1530},"简化返回",[293,1532,1533,1534,1536,1537,1536,1539,1542],{},"你可以直接从处理器返回 ",[296,1535,554],{},"、",[296,1538,602],{},[296,1540,1541],{},"boolean","、对象或数组：",[1544,1545,1546,1591,1631,1697],"code-group",{},[304,1547,1550],{"className":306,"code":1548,"filename":1549,"language":309,"meta":310,"style":310},"handler: async ({ name }) => `你好 ${name}`\n\u002F\u002F → { content: [{ type: 'text', text: '你好 World' }] }\n","String",[296,1551,1552,1586],{"__ignoreMap":310},[314,1553,1554,1558,1560,1562,1564,1567,1569,1571,1574,1577,1580,1583],{"class":316,"line":317},[314,1555,1557],{"class":1556},"sBMFI","handler",[314,1559,380],{"class":324},[314,1561,420],{"class":419},[314,1563,842],{"class":324},[314,1565,1566],{"class":845}," name",[314,1568,874],{"class":324},[314,1570,426],{"class":419},[314,1572,1573],{"class":324}," `",[314,1575,1576],{"class":341},"你好 ",[314,1578,1579],{"class":324},"${",[314,1581,1582],{"class":328},"name",[314,1584,1585],{"class":324},"}`\n",[314,1587,1588],{"class":316,"line":348},[314,1589,1590],{"class":537},"\u002F\u002F → { content: [{ type: 'text', text: '你好 World' }] }\n",[304,1592,1595],{"className":306,"code":1593,"filename":1594,"language":309,"meta":310,"style":310},"handler: async ({ a, b }) => a + b\n\u002F\u002F → { content: [{ type: 'text', text: '10' }] }\n","Number",[296,1596,1597,1626],{"__ignoreMap":310},[314,1598,1599,1601,1603,1605,1607,1609,1611,1613,1615,1617,1620,1623],{"class":316,"line":317},[314,1600,1557],{"class":1556},[314,1602,380],{"class":324},[314,1604,420],{"class":419},[314,1606,842],{"class":324},[314,1608,851],{"class":845},[314,1610,744],{"class":324},[314,1612,856],{"class":845},[314,1614,874],{"class":324},[314,1616,426],{"class":419},[314,1618,1619],{"class":328}," a ",[314,1621,1622],{"class":324},"+",[314,1624,1625],{"class":328}," b\n",[314,1627,1628],{"class":316,"line":348},[314,1629,1630],{"class":537},"\u002F\u002F → { content: [{ type: 'text', text: '10' }] }\n",[304,1632,1635],{"className":306,"code":1633,"filename":1634,"language":309,"meta":310,"style":310},"handler: async ({ id }) => {\n  const user = await getUser(id)\n  return user\n}\n\u002F\u002F → { content: [{ type: 'text', text: '{ \"id\": ... }' }] }\n","Object \u002F Array",[296,1636,1637,1656,1679,1687,1692],{"__ignoreMap":310},[314,1638,1639,1641,1643,1645,1647,1650,1652,1654],{"class":316,"line":317},[314,1640,1557],{"class":1556},[314,1642,380],{"class":324},[314,1644,420],{"class":419},[314,1646,842],{"class":324},[314,1648,1649],{"class":845}," id",[314,1651,874],{"class":324},[314,1653,426],{"class":419},[314,1655,532],{"class":324},[314,1657,1658,1661,1664,1666,1669,1672,1674,1677],{"class":316,"line":348},[314,1659,1660],{"class":419},"  const",[314,1662,1663],{"class":328}," user",[314,1665,1299],{"class":324},[314,1667,1668],{"class":320}," await",[314,1670,1671],{"class":364}," getUser",[314,1673,367],{"class":376},[314,1675,1676],{"class":328},"id",[314,1678,444],{"class":376},[314,1680,1681,1684],{"class":316,"line":355},[314,1682,1683],{"class":320},"  return",[314,1685,1686],{"class":328}," user\n",[314,1688,1689],{"class":316,"line":373},[314,1690,1691],{"class":324},"}\n",[314,1693,1694],{"class":316,"line":394},[314,1695,1696],{"class":537},"\u002F\u002F → { content: [{ type: 'text', text: '{ \"id\": ... }' }] }\n",[304,1698,1701],{"className":306,"code":1699,"filename":1700,"language":309,"meta":310,"style":310},"handler: async ({ id }) => await exists(id)\n\u002F\u002F → { content: [{ type: 'text', text: 'true' }] }\n","Boolean",[296,1702,1703,1727],{"__ignoreMap":310},[314,1704,1705,1707,1709,1711,1713,1715,1717,1719,1721,1724],{"class":316,"line":317},[314,1706,1557],{"class":1556},[314,1708,380],{"class":324},[314,1710,420],{"class":419},[314,1712,842],{"class":324},[314,1714,1649],{"class":845},[314,1716,874],{"class":324},[314,1718,426],{"class":419},[314,1720,1668],{"class":320},[314,1722,1723],{"class":364}," exists",[314,1725,1726],{"class":328},"(id)\n",[314,1728,1729],{"class":316,"line":348},[314,1730,1731],{"class":537},"\u002F\u002F → { content: [{ type: 'text', text: 'true' }] }\n",[293,1733,1734,1735,1737,1738,1740],{},"当你需要更多控制时，也可以返回完整的 ",[296,1736,1526],{}," 格式（例如图片、多条 content 项、",[296,1739,1513],{},"）。",[898,1742,1743],{"id":1743},"内容类型",[293,1745,1746,1747,302],{},"对于高级用例，返回带类型内容的完整 ",[296,1748,1526],{},[1544,1750,1751,1834,1893],{},[304,1752,1755],{"className":306,"code":1753,"filename":1754,"language":309,"meta":310,"style":310},"return {\n  content: [{\n    type: 'image',\n    data: base64ImageData,\n    mimeType: 'image\u002Fpng',\n  }],\n}\n","Image Content",[296,1756,1757,1764,1776,1792,1804,1820,1830],{"__ignoreMap":310},[314,1758,1759,1762],{"class":316,"line":317},[314,1760,1761],{"class":320},"return",[314,1763,532],{"class":324},[314,1765,1766,1769,1771,1774],{"class":316,"line":348},[314,1767,1768],{"class":376},"  content",[314,1770,380],{"class":324},[314,1772,1773],{"class":328}," [",[314,1775,370],{"class":324},[314,1777,1778,1781,1783,1785,1788,1790],{"class":316,"line":355},[314,1779,1780],{"class":376},"    type",[314,1782,380],{"class":324},[314,1784,338],{"class":324},[314,1786,1787],{"class":341},"image",[314,1789,388],{"class":324},[314,1791,391],{"class":324},[314,1793,1794,1797,1799,1802],{"class":316,"line":373},[314,1795,1796],{"class":376},"    data",[314,1798,380],{"class":324},[314,1800,1801],{"class":328}," base64ImageData",[314,1803,391],{"class":324},[314,1805,1806,1809,1811,1813,1816,1818],{"class":316,"line":394},[314,1807,1808],{"class":376},"    mimeType",[314,1810,380],{"class":324},[314,1812,338],{"class":324},[314,1814,1815],{"class":341},"image\u002Fpng",[314,1817,388],{"class":324},[314,1819,391],{"class":324},[314,1821,1822,1825,1828],{"class":316,"line":411},[314,1823,1824],{"class":324},"  }",[314,1826,1827],{"class":328},"]",[314,1829,391],{"class":324},[314,1831,1832],{"class":316,"line":438},[314,1833,1691],{"class":324},[304,1835,1838],{"className":306,"code":1836,"filename":1837,"language":309,"meta":310,"style":310},"return {\n  structuredContent: {\n    bmi: 25.5,\n    category: '正常',\n  },\n}\n\u002F\u002F 作为旧客户端的回退，文本内容会自动生成\n","Structured Content",[296,1839,1840,1846,1855,1866,1880,1884,1888],{"__ignoreMap":310},[314,1841,1842,1844],{"class":316,"line":317},[314,1843,1761],{"class":320},[314,1845,532],{"class":324},[314,1847,1848,1851,1853],{"class":316,"line":348},[314,1849,1850],{"class":376},"  structuredContent",[314,1852,380],{"class":324},[314,1854,532],{"class":324},[314,1856,1857,1859,1861,1864],{"class":316,"line":355},[314,1858,1231],{"class":376},[314,1860,380],{"class":324},[314,1862,1863],{"class":1350}," 25.5",[314,1865,391],{"class":324},[314,1867,1868,1870,1872,1874,1876,1878],{"class":316,"line":373},[314,1869,1248],{"class":376},[314,1871,380],{"class":324},[314,1873,338],{"class":324},[314,1875,1332],{"class":341},[314,1877,388],{"class":324},[314,1879,391],{"class":324},[314,1881,1882],{"class":316,"line":394},[314,1883,830],{"class":324},[314,1885,1886],{"class":316,"line":411},[314,1887,1691],{"class":324},[314,1889,1890],{"class":316,"line":438},[314,1891,1892],{"class":537},"\u002F\u002F 作为旧客户端的回退，文本内容会自动生成\n",[304,1894,1897],{"className":306,"code":1895,"filename":1896,"language":309,"meta":310,"style":310},"return {\n  content: [{\n    type: 'resource',\n    resource: {\n      uri: 'file:\u002F\u002F\u002Fpath\u002Fto\u002Ffile',\n      text: '文件内容',\n      mimeType: 'text\u002Fplain',\n    },\n  }],\n}\n","Resource Reference",[296,1898,1899,1905,1915,1930,1939,1955,1971,1987,1992,2000],{"__ignoreMap":310},[314,1900,1901,1903],{"class":316,"line":317},[314,1902,1761],{"class":320},[314,1904,532],{"class":324},[314,1906,1907,1909,1911,1913],{"class":316,"line":348},[314,1908,1768],{"class":376},[314,1910,380],{"class":324},[314,1912,1773],{"class":328},[314,1914,370],{"class":324},[314,1916,1917,1919,1921,1923,1926,1928],{"class":316,"line":355},[314,1918,1780],{"class":376},[314,1920,380],{"class":324},[314,1922,338],{"class":324},[314,1924,1925],{"class":341},"resource",[314,1927,388],{"class":324},[314,1929,391],{"class":324},[314,1931,1932,1935,1937],{"class":316,"line":373},[314,1933,1934],{"class":376},"    resource",[314,1936,380],{"class":324},[314,1938,532],{"class":324},[314,1940,1941,1944,1946,1948,1951,1953],{"class":316,"line":394},[314,1942,1943],{"class":376},"      uri",[314,1945,380],{"class":324},[314,1947,338],{"class":324},[314,1949,1950],{"class":341},"file:\u002F\u002F\u002Fpath\u002Fto\u002Ffile",[314,1952,388],{"class":324},[314,1954,391],{"class":324},[314,1956,1957,1960,1962,1964,1967,1969],{"class":316,"line":411},[314,1958,1959],{"class":376},"      text",[314,1961,380],{"class":324},[314,1963,338],{"class":324},[314,1965,1966],{"class":341},"文件内容",[314,1968,388],{"class":324},[314,1970,391],{"class":324},[314,1972,1973,1976,1978,1980,1983,1985],{"class":316,"line":438},[314,1974,1975],{"class":376},"      mimeType",[314,1977,380],{"class":324},[314,1979,338],{"class":324},[314,1981,1982],{"class":341},"text\u002Fplain",[314,1984,388],{"class":324},[314,1986,391],{"class":324},[314,1988,1989],{"class":316,"line":541},[314,1990,1991],{"class":324},"    },\n",[314,1993,1994,1996,1998],{"class":316,"line":579},[314,1995,1824],{"class":324},[314,1997,1827],{"class":328},[314,1999,391],{"class":324},[314,2001,2002],{"class":316,"line":584},[314,2003,1691],{"class":324},[898,2005,2006],{"id":2006},"结果辅助函数",[293,2008,2009,2010,2013,2014,2017],{},"该模块提供 ",[296,2011,2012],{},"imageResult"," 和 ",[296,2015,2016],{},"audioResult"," 辅助函数，用于工具响应中的二进制媒体（base64 编码数据加 MIME 类型）：",[304,2019,2021],{"className":306,"code":2020,"language":309,"meta":310,"style":310},"import { z } from 'zod'\nimport { defineMcpTool, imageResult, audioResult } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  description: '生成图表',\n  inputSchema: { data: z.array(z.number()) },\n  handler: async ({ data }) => {\n    const base64 = await generateChart(data)\n    return imageResult(base64, 'image\u002Fpng')\n  },\n})\n",[296,2022,2023,2041,2069,2073,2085,2100,2131,2149,2170,2191,2195],{"__ignoreMap":310},[314,2024,2025,2027,2029,2031,2033,2035,2037,2039],{"class":316,"line":317},[314,2026,321],{"class":320},[314,2028,325],{"class":324},[314,2030,462],{"class":328},[314,2032,332],{"class":324},[314,2034,335],{"class":320},[314,2036,338],{"class":324},[314,2038,471],{"class":341},[314,2040,345],{"class":324},[314,2042,2043,2045,2047,2049,2051,2054,2056,2059,2061,2063,2065,2067],{"class":316,"line":348},[314,2044,321],{"class":320},[314,2046,325],{"class":324},[314,2048,329],{"class":328},[314,2050,744],{"class":324},[314,2052,2053],{"class":328}," imageResult",[314,2055,744],{"class":324},[314,2057,2058],{"class":328}," audioResult",[314,2060,332],{"class":324},[314,2062,335],{"class":320},[314,2064,338],{"class":324},[314,2066,342],{"class":341},[314,2068,345],{"class":324},[314,2070,2071],{"class":316,"line":355},[314,2072,352],{"emptyLinePlaceholder":351},[314,2074,2075,2077,2079,2081,2083],{"class":316,"line":373},[314,2076,358],{"class":320},[314,2078,361],{"class":320},[314,2080,329],{"class":364},[314,2082,367],{"class":328},[314,2084,370],{"class":324},[314,2086,2087,2089,2091,2093,2096,2098],{"class":316,"line":394},[314,2088,397],{"class":376},[314,2090,380],{"class":324},[314,2092,338],{"class":324},[314,2094,2095],{"class":341},"生成图表",[314,2097,388],{"class":324},[314,2099,391],{"class":324},[314,2101,2102,2104,2106,2108,2111,2113,2115,2117,2119,2121,2123,2125,2128],{"class":316,"line":411},[314,2103,527],{"class":376},[314,2105,380],{"class":324},[314,2107,325],{"class":324},[314,2109,2110],{"class":376}," data",[314,2112,380],{"class":324},[314,2114,462],{"class":328},[314,2116,551],{"class":324},[314,2118,797],{"class":364},[314,2120,800],{"class":328},[314,2122,551],{"class":324},[314,2124,602],{"class":364},[314,2126,2127],{"class":328},"()) ",[314,2129,2130],{"class":324},"},\n",[314,2132,2133,2135,2137,2139,2141,2143,2145,2147],{"class":316,"line":438},[314,2134,414],{"class":364},[314,2136,380],{"class":324},[314,2138,420],{"class":419},[314,2140,842],{"class":324},[314,2142,2110],{"class":845},[314,2144,874],{"class":324},[314,2146,426],{"class":419},[314,2148,532],{"class":324},[314,2150,2151,2153,2156,2158,2160,2163,2165,2168],{"class":316,"line":541},[314,2152,1293],{"class":419},[314,2154,2155],{"class":328}," base64",[314,2157,1299],{"class":324},[314,2159,1668],{"class":320},[314,2161,2162],{"class":364}," generateChart",[314,2164,367],{"class":376},[314,2166,2167],{"class":328},"data",[314,2169,444],{"class":376},[314,2171,2172,2174,2176,2178,2181,2183,2185,2187,2189],{"class":316,"line":579},[314,2173,1434],{"class":320},[314,2175,2053],{"class":364},[314,2177,367],{"class":376},[314,2179,2180],{"class":328},"base64",[314,2182,744],{"class":324},[314,2184,338],{"class":324},[314,2186,1815],{"class":341},[314,2188,388],{"class":324},[314,2190,444],{"class":376},[314,2192,2193],{"class":316,"line":584},[314,2194,830],{"class":324},[314,2196,2197,2199],{"class":316,"line":590},[314,2198,441],{"class":324},[314,2200,444],{"class":328},[304,2202,2204],{"className":306,"code":2203,"language":309,"meta":310,"style":310},"import { z } from 'zod'\nimport { defineMcpTool, audioResult } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  description: '文本转语音',\n  inputSchema: { text: z.string() },\n  handler: async ({ text }) => {\n    const base64 = await synthesizeSpeech(text)\n    return audioResult(base64, 'audio\u002Fmp3')\n  },\n})\n",[296,2205,2206,2224,2246,2250,2262,2277,2301,2319,2339,2360,2364],{"__ignoreMap":310},[314,2207,2208,2210,2212,2214,2216,2218,2220,2222],{"class":316,"line":317},[314,2209,321],{"class":320},[314,2211,325],{"class":324},[314,2213,462],{"class":328},[314,2215,332],{"class":324},[314,2217,335],{"class":320},[314,2219,338],{"class":324},[314,2221,471],{"class":341},[314,2223,345],{"class":324},[314,2225,2226,2228,2230,2232,2234,2236,2238,2240,2242,2244],{"class":316,"line":348},[314,2227,321],{"class":320},[314,2229,325],{"class":324},[314,2231,329],{"class":328},[314,2233,744],{"class":324},[314,2235,2058],{"class":328},[314,2237,332],{"class":324},[314,2239,335],{"class":320},[314,2241,338],{"class":324},[314,2243,342],{"class":341},[314,2245,345],{"class":324},[314,2247,2248],{"class":316,"line":355},[314,2249,352],{"emptyLinePlaceholder":351},[314,2251,2252,2254,2256,2258,2260],{"class":316,"line":373},[314,2253,358],{"class":320},[314,2255,361],{"class":320},[314,2257,329],{"class":364},[314,2259,367],{"class":328},[314,2261,370],{"class":324},[314,2263,2264,2266,2268,2270,2273,2275],{"class":316,"line":394},[314,2265,397],{"class":376},[314,2267,380],{"class":324},[314,2269,338],{"class":324},[314,2271,2272],{"class":341},"文本转语音",[314,2274,388],{"class":324},[314,2276,391],{"class":324},[314,2278,2279,2281,2283,2285,2288,2290,2292,2294,2296,2299],{"class":316,"line":411},[314,2280,527],{"class":376},[314,2282,380],{"class":324},[314,2284,325],{"class":324},[314,2286,2287],{"class":376}," text",[314,2289,380],{"class":324},[314,2291,462],{"class":328},[314,2293,551],{"class":324},[314,2295,554],{"class":364},[314,2297,2298],{"class":328},"() ",[314,2300,2130],{"class":324},[314,2302,2303,2305,2307,2309,2311,2313,2315,2317],{"class":316,"line":438},[314,2304,414],{"class":364},[314,2306,380],{"class":324},[314,2308,420],{"class":419},[314,2310,842],{"class":324},[314,2312,2287],{"class":845},[314,2314,874],{"class":324},[314,2316,426],{"class":419},[314,2318,532],{"class":324},[314,2320,2321,2323,2325,2327,2329,2332,2334,2337],{"class":316,"line":541},[314,2322,1293],{"class":419},[314,2324,2155],{"class":328},[314,2326,1299],{"class":324},[314,2328,1668],{"class":320},[314,2330,2331],{"class":364}," synthesizeSpeech",[314,2333,367],{"class":376},[314,2335,2336],{"class":328},"text",[314,2338,444],{"class":376},[314,2340,2341,2343,2345,2347,2349,2351,2353,2356,2358],{"class":316,"line":579},[314,2342,1434],{"class":320},[314,2344,2058],{"class":364},[314,2346,367],{"class":376},[314,2348,2180],{"class":328},[314,2350,744],{"class":324},[314,2352,338],{"class":324},[314,2354,2355],{"class":341},"audio\u002Fmp3",[314,2357,388],{"class":324},[314,2359,444],{"class":376},[314,2361,2362],{"class":316,"line":584},[314,2363,830],{"class":324},[314,2365,2366,2368],{"class":316,"line":590},[314,2367,441],{"class":324},[314,2369,444],{"class":328},[2371,2372,2375,1536,2378,2013,2381,2384,2385,1740],"callout",{"color":2373,"icon":2374},"info","i-lucide-info",[296,2376,2377],{},"textResult",[296,2379,2380],{},"jsonResult",[296,2382,2383],{},"errorResult"," 辅助函数已弃用。请改为直接从处理器返回值，并在出错时抛出错误（参见 ",[2386,2387,61],"a",{"href":62},[2389,2390,2391],"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 pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .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 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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":310,"searchDepth":348,"depth":348,"links":2393},[2394,2397,2398],{"id":290,"depth":348,"text":291,"children":2395},[2396],{"id":900,"depth":355,"text":901},{"id":1045,"depth":348,"text":1046},{"id":1520,"depth":348,"text":1520,"children":2399},[2400,2401,2402],{"id":1530,"depth":355,"text":1530},{"id":1743,"depth":355,"text":1743},{"id":2006,"depth":355,"text":2006},"使用 Zod 定义工具输入和输出，并从处理器返回文本、结构化数据或媒体。","md",null,{},{"icon":54},{"title":2409,"description":2410},"工具 schema 与处理器","MCP 工具的 Zod 输入和输出 schema、处理器返回类型、图像和音频辅助函数。","J0YqT1t06LRulx95ACN7Bf5ajlI-6HPDpfA4LY47FBg",[2413,2415],{"title":46,"path":47,"stem":48,"description":2414,"icon":49,"children":-1},"使用 Zod 校验和类型安全创建 MCP 工具。",{"title":56,"path":57,"stem":58,"description":2416,"icon":59,"children":-1},"MCP 客户端的行为提示以及复杂工具的具体 inputExamples。",1778659578326]