Skip to content

Commit 464142c

Browse files
author
CodeBuddy Attribution Bot
committed
fix(attribution): MCP 工具参数验证错误提示不清晰,缺乏参数示例 (issue_mo8yzj2s_zu5l9q)
1 parent e2ca73f commit 464142c

2 files changed

Lines changed: 66 additions & 15 deletions

File tree

mcp/src/tools/functions.ts

Lines changed: 42 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1412,23 +1412,38 @@ export function registerFunctionTools(server: ExtendedMcpServer) {
14121412
{
14131413
title: "查询云函数域资源",
14141414
description:
1415-
"函数域统一只读入口。通过更自解释的 action 查询函数列表、函数详情、日志、层、触发器和代码下载地址。",
1415+
"函数域统一只读入口。通过 action 查询函数列表、函数详情、日志、层、触发器和代码下载地址。" +
1416+
"\n\n各 action 所需参数:\n" +
1417+
"- listFunctions: 无必填参数(可选 limit, offset)\n" +
1418+
"- getFunctionDetail: functionName(必填)\n" +
1419+
"- listFunctionLogs: functionName(必填), startTime/endTime(可选)\n" +
1420+
"- getFunctionLogDetail: requestId(必填)\n" +
1421+
"- listFunctionLayers: functionName(必填)\n" +
1422+
"- listLayers: 无必填参数(可选 runtime, searchKey, limit, offset)\n" +
1423+
"- listLayerVersions: layerName(必填)\n" +
1424+
"- getLayerVersionDetail: layerName + layerVersion(均必填)\n" +
1425+
"- listFunctionTriggers: functionName(必填)\n" +
1426+
"- getFunctionDownloadUrl: functionName(必填)" +
1427+
"\n\n调用示例:\n" +
1428+
"- 列出所有函数: { action: \"listFunctions\" }\n" +
1429+
"- 查看函数详情: { action: \"getFunctionDetail\", functionName: \"my-function\" }\n" +
1430+
"- 查看函数日志: { action: \"listFunctionLogs\", functionName: \"my-function\" }",
14161431
inputSchema: {
14171432
action: z
14181433
.enum(QUERY_FUNCTION_ACTIONS)
1419-
.describe("只读操作类型,例如 listFunctionsgetFunctionDetaillistFunctionLogs"),
1420-
functionName: z.string().optional().describe("函数名称。函数相关 action 必填"),
1434+
.describe("只读操作类型。各 action 所需参数详见工具描述。常用: listFunctions, getFunctionDetail, listFunctionLogs"),
1435+
functionName: z.string().optional().describe("函数名称。getFunctionDetail/listFunctionLogs/listFunctionLayers/listFunctionTriggers/getFunctionDownloadUrl 时必填"),
14211436
limit: z.number().optional().describe("分页数量。列表类 action 可选"),
14221437
offset: z.number().optional().describe("分页偏移。列表类 action 可选"),
14231438
codeSecret: z.string().optional().describe("代码保护密钥"),
14241439
startTime: z.string().optional().describe("日志查询开始时间"),
14251440
endTime: z.string().optional().describe("日志查询结束时间"),
1426-
requestId: z.string().optional().describe("日志 requestId。获取日志详情时必填"),
1441+
requestId: z.string().optional().describe("日志 requestId。getFunctionLogDetail 时必填"),
14271442
qualifier: z.string().optional().describe("函数版本,日志查询时可选"),
14281443
runtime: z.string().optional().describe("层查询的运行时筛选"),
14291444
searchKey: z.string().optional().describe("层名称搜索关键字"),
1430-
layerName: z.string().optional().describe("层名称。层相关 action 必填"),
1431-
layerVersion: z.number().optional().describe("层版本号。获取层版本详情时必填"),
1445+
layerName: z.string().optional().describe("层名称。listLayerVersions/getLayerVersionDetail 时必填"),
1446+
layerVersion: z.number().optional().describe("层版本号。getLayerVersionDetail 时必填"),
14321447
},
14331448
annotations: {
14341449
readOnlyHint: true,
@@ -1444,11 +1459,27 @@ export function registerFunctionTools(server: ExtendedMcpServer) {
14441459
{
14451460
title: "管理云函数域资源",
14461461
description:
1447-
"函数域统一写入口。通过 action 管理函数创建、代码更新、配置更新、调用函数、触发器和层绑定。危险操作需要显式 confirm=true。",
1462+
"函数域统一写入口。通过 action 管理函数创建、代码更新、配置更新、调用函数、触发器和层绑定。危险操作需要显式 confirm=true。" +
1463+
"\n\n各 action 所需参数:\n" +
1464+
"- createFunction: func(必填,包含 name),functionRootPath 或 zipFile(HTTP 函数必填其一)\n" +
1465+
"- updateFunctionCode: functionName(必填),functionRootPath 或 zipFile\n" +
1466+
"- updateFunctionConfig: functionName(必填),timeout/envVariables/vpc(可选)\n" +
1467+
"- invokeFunction: functionName(必填),params(可选调用参数)\n" +
1468+
"- createFunctionTrigger: functionName + triggers(均必填)\n" +
1469+
"- deleteFunctionTrigger: functionName + triggerName(均必填),confirm=true\n" +
1470+
"- createLayerVersion: layerName + runtimes(均必填),contentPath 或 base64Content(必填其一)\n" +
1471+
"- deleteLayerVersion: layerName + layerVersion(均必填),confirm=true\n" +
1472+
"- attachLayer: functionName + layerName + layerVersion(均必填)\n" +
1473+
"- detachLayer: functionName + layerName + layerVersion(均必填),confirm=true\n" +
1474+
"- updateFunctionLayers: functionName + layers(均必填)" +
1475+
"\n\n调用示例:\n" +
1476+
"- 创建函数: { action: \"createFunction\", func: { name: \"hello\", type: \"Event\" }, functionRootPath: \"/path/to/cloudfunctions\" }\n" +
1477+
"- 更新代码: { action: \"updateFunctionCode\", functionName: \"hello\", functionRootPath: \"/path/to/cloudfunctions\" }\n" +
1478+
"- 调用函数: { action: \"invokeFunction\", functionName: \"hello\", params: { key: \"value\" } }",
14481479
inputSchema: {
14491480
action: z
14501481
.enum(MANAGE_FUNCTION_ACTIONS)
1451-
.describe("写操作类型,例如 createFunctioninvokeFunction、attachLayer"),
1482+
.describe("写操作类型。各 action 所需参数详见工具描述。常用: createFunction, updateFunctionCode, invokeFunction"),
14521483
func: CREATE_FUNCTION_SCHEMA.optional().describe("createFunction 操作的函数配置"),
14531484
functionRootPath: z.string().optional().describe(
14541485
"创建或更新函数代码时默认推荐的本地目录方式。" +
@@ -1459,16 +1490,16 @@ export function registerFunctionTools(server: ExtendedMcpServer) {
14591490
"SDK 会自动拼接函数名子目录,无需预先压缩 zip 或 base64 编码。",
14601491
),
14611492
force: z.boolean().optional().describe("createFunction 时是否覆盖"),
1462-
functionName: z.string().optional().describe("函数名称。大多数 action 使用该字段作为统一目标"),
1493+
functionName: z.string().optional().describe("函数名称。updateFunctionCode/updateFunctionConfig/invokeFunction/createFunctionTrigger/deleteFunctionTrigger/attachLayer/detachLayer/updateFunctionLayers 时必填"),
14631494
zipFile: z.string().optional().describe(
14641495
"仅兼容特殊场景:预先准备好的代码包 base64 编码。普通 createFunction/updateFunctionCode 默认不要先压缩 zip,优先使用 functionRootPath。",
14651496
),
14661497
handler: z.string().optional().describe("函数入口"),
14671498
timeout: z.number().optional().describe("配置更新时的超时时间"),
14681499
envVariables: z.record(z.string()).optional().describe("配置更新时要合并的环境变量"),
14691500
vpc: VPC_SCHEMA.optional().describe("配置更新时的 VPC 信息"),
1470-
params: z.record(z.any()).optional().describe("invokeFunction 的调用参数"),
1471-
triggers: z.array(TRIGGER_SCHEMA).optional().describe("createFunctionTrigger 的触发器列表"),
1501+
params: z.record(z.any()).optional().describe("invokeFunction 的调用参数,例如 { key: \"value\" }"),
1502+
triggers: z.array(TRIGGER_SCHEMA).optional().describe("createFunctionTrigger 的触发器列表。例如 [{ name: \"my-timer\", type: \"timer\", config: \"0 */5 * * * * *\" }]"),
14721503
triggerName: z.string().optional().describe("deleteFunctionTrigger 的目标触发器名称"),
14731504
layerName: z.string().optional().describe("层名称"),
14741505
layerVersion: z.number().optional().describe("层版本号"),

mcp/src/tools/gateway.ts

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -549,11 +549,20 @@ export function registerGatewayTools(server: ExtendedMcpServer) {
549549
{
550550
title: "查询网关域资源",
551551
description:
552-
"网关域统一只读入口。通过 action 查询网关域名、访问入口和目标暴露情况。",
552+
"网关域统一只读入口。通过 action 查询网关域名、访问入口和目标暴露情况。" +
553+
"\n\n各 action 所需参数:\n" +
554+
"- listDomains: 无必填参数\n" +
555+
"- listRoutes: 无必填参数\n" +
556+
"- getAccess: targetName(必填)\n" +
557+
"- getRoute: routeId 或 targetName(可选,用于筛选)\n" +
558+
"- listCustomDomains: 无必填参数" +
559+
"\n\n调用示例:\n" +
560+
"- 列出域名: { action: \"listDomains\" }\n" +
561+
"- 查看访问入口: { action: \"getAccess\", targetName: \"my-function\" }",
553562
inputSchema: {
554563
action: z
555564
.enum(QUERY_GATEWAY_ACTIONS)
556-
.describe("只读操作类型,例如 getAccess、listDomains"),
565+
.describe("只读操作类型。各 action 所需参数详见工具描述。常用: listDomains, getAccess"),
557566
targetType: z
558567
.enum(["function"])
559568
.optional()
@@ -578,11 +587,22 @@ export function registerGatewayTools(server: ExtendedMcpServer) {
578587
{
579588
title: "管理网关域资源",
580589
description:
581-
"网关域统一写入口。通过 action 创建目标访问入口,后续承接更通用的网关配置能力。为已存在的 HTTP 云函数补默认域名访问时,通常使用 createAccess 并提供 targetType=\"function\"、targetName、type=\"HTTP\" 与期望 path。注意 createAccess 只创建网关入口,不会自动修改函数资源权限。",
590+
"网关域统一写入口。通过 action 创建目标访问入口,后续承接更通用的网关配置能力。" +
591+
"\n\n各 action 所需参数:\n" +
592+
"- createAccess: targetType + targetName + type(均必填)。path, auth 可选\n" +
593+
"- createRoute: route(必填,含 path, serviceType, serviceName)\n" +
594+
"- updateRoute: route(必填,含 path, serviceType, serviceName)\n" +
595+
"- deleteRoute: route.path 或 path(必填)\n" +
596+
"- bindCustomDomain: domain + certificateId(均必填)\n" +
597+
"- deleteCustomDomain: domain(必填)\n" +
598+
"- deleteAccess: targetName 或 path(至少一个)\n" +
599+
"- updatePathAuth: targetName 或 path(至少一个)+ auth(必填)" +
600+
"\n\n调用示例:\n" +
601+
"- 为 HTTP 函数创建访问入口: { action: \"createAccess\", targetType: \"function\", targetName: \"my-http-func\", type: \"HTTP\", path: \"/api/hello\", auth: false }",
582602
inputSchema: {
583603
action: z
584604
.enum(MANAGE_GATEWAY_ACTIONS)
585-
.describe('写操作类型,例如 createAccess。为已有函数补默认域名访问入口时使用 createAccess;若 action=createAccess 且 targetType=function,必须显式提供 type。'),
605+
.describe('写操作类型。各 action 所需参数详见工具描述。createAccess 时必须显式提供 type(HTTP 函数传 HTTP,Event 函数传 Event 或省略)。'),
586606
targetType: z
587607
.enum(["function"])
588608
.optional()

0 commit comments

Comments
 (0)