用途:编写运行在 Bmob 服务器上的云函数源码,并完成上传、验证或把线上函数同步到本地。
两条通道:已配置 Bmob MCP 时优先使用 bmob-mcp,上传源码用 deploy_cloud_function,单独验证用 invoke_cloud_function,同步线上到本地用 list_cloud_functions → get_cloud_function(由 agent 写入本地文件)。未配置 MCP 时,按云函数文档与 REST /1/functions/<name> 或控制台流程给出代码与 curl。
语法基线:默认按 Web/Node 风格写 function onRequest(request, response, modules) { response.send("hello"); }。GET 直连参数取 request.query.xxx;POST/REST 参数取 request.body.xxx;返回用 response.send(...);数据库、文件、HTTP、加密等从 modules 取 oData、oFile、oHttp、oCrypto 等。
已知行为:通过 REST API 调用时参数从 request.body 取;很多回调返回字符串,需 JSON.parse(data) 后再当对象用;服务端可能把 request.body 的值转成字符串,数字、布尔、数组、对象需显式 parseInt / === "true" / JSON.parse。modules.oData 的 where 是 JSON 对象,不要 JSON.stringify;仅 REST GET 的 query 参数 where 才需 URL 编码的 JSON 字符串。
默认工作流:写最小可验证版本,函数名与调用名一致,涉及查表先确认表名与字段;上传时 deploy_cloud_function 传 funcName、code、language(1=javascript,2=java),需要立即验证传 verify=1 与 verify_data(JSON 字符串,默认 {});验证失败时对照上传结果、执行返回与传入参数。部署成功后用响应里的 invokeGuide 说明调用方式,禁止只写裸 URL,REST 必须带完整 headers 与 body,优先用 invokeGuide.rest.curl。
同步流程:调用 list_cloud_functions 获取函数列表(指定单个函数可直接 get),对每个名称调用 get_cloud_function,按其 code 原文与 suggestedFileName 写入本地 cloudfunctions/(或已有 bmob/cloud-functions/、functions/),已有同名文件先询问。未配 MCP 时给出 GET /1/functions 与 GET /1/functions/<name> 的 curl,并说明需自行 base64 解码 code。
限制:未配置 MCP、源码体量过大、或用户只要示例代码时,不要硬走自动上传;此时提供源码与 REST 上传说明,并明确未做在线验证。失败时回到只保留 response.send("ok") 的最小版本排查发布链路。