当你需要以代码方式精细定义工具逻辑,并将工具纳入团队的工程体系(Git 管理、CI/CD、单元测试等)时,可以使用代码创建方式创建工具。
通过代码创建工具,可以将工具的定义纳入版本控制(如 Git),实现持续集成与部署(CI/CD),并支持更复杂的初始化逻辑。
在该模式下:
编写的工具会以函数计算(FC)HTTP 函数的形式运行;
可以被 AgentRun创建的Agent作为MCP 工具或Function Call 工具引用;
也可以作为通用 Web 服务被任何 HTTP 客户端访问。
典型应用场景包括:
数据处理 API:接收外部请求,完成清洗、转换、统计等操作,并将结果写入数据库或直接返回;
封装内部算法或小模型:把团队已有算法封装成标准 API,供 Agent 或其他系统按工具方式调用;
Webhook / 事件接收端:接收 GitHub、支付网关、业务系统等外部事件,作为 Agent 的触发入口。
使用前准备
在创建代码工具前,建议先完成以下准备:
准备代码工程
可以使用官方 Demo 代码包(控制台“下载 Demo 示例文件”),或自有代码;
确认主入口文件、启动命令和服务端口(如
python mcp_server.py+8080)。
准备运行时依赖
确认使用的运行时语言版本(如 Python 3.10);
代码包模式:将代码和依赖一起打包为 zip(依赖一般放在约定目录,如
/python等);容器镜像模式:在镜像中预置运行环境与依赖,并配置好服务入口。
准备访问凭证
如希望调用方通过 API Key 鉴权访问工具,请在凭证管理中准备好凭证。
操作步骤
步骤1:选择创建方式与基本信息
登录AgentRun 控制台,在顶部菜单栏,点击其他;
在左侧目录选择工具管理,单击创建工具;
在选择创建方式区域选择代码创建;
在 基本信息区域填写:
工具名称:如
tool-4geek,建议使用有意义、可区分的名称;工具描述:简要说明工具的功能用途,便于后续管理和协作。
步骤2:代码创建配置
在代码创建配置区域,依次完成工具类型、代码来源和运行时选择。
工具类型
在工具类型下拉中选择工具协议类型(当前支持):MCP 工具:MCP 协议工具,适合接入 AgentRun 和其他支持 MCP 的 Agent;
Function Call:函数调用工具,适合与支持 Function Calling 的模型配合使用。
本示例以MCP 工具为例。
代码来源
在代码来源中选择代码的来源方式:上传文件:从本地上传 zip 包;
OSS 存储:从 OSS Bucket 中加载代码包;
容器镜像:使用已有镜像中内置的代码;
在线编码:使用在线编辑器直接编写代码。
选择上传文件时:
点击“点击上传文件”,选择本地 zip 包;
支持 ZIP 格式,最大 100MB;
如需参考官方示例,可点击下载 Demo 示例文件,该代码示例的运行时版本为Python 3.10,在本地修改后再上传。
运行时
在「运行时」下拉中选择语言环境,例如:Python 3.10
根据实际代码环境选择相应运行时版本。
步骤3:启动配置
在启动配置区域,配置工具服务的启动方式:
启动命令
示例:
python main.py对应代码包中的主入口文件。
若使用官方 Demo,一般默认即可;如使用自定义代码,请根据实际入口文件修改。
服务端口:只对SSE以及Streamable HTTP协议的MCP工具生效。
示例:
8080必须与代码中实际监听的端口一致。
推荐在代码中从环境变量读取端口,便于后续调整。
步骤4:传输协议与路径
在传输协议区域,配置 MCP 服务的传输方式:
传输协议(下拉可选):
STDIO:通过标准输入输出进行通信(适用于 MCP 标准 STDIO 模式);SSE:Server-Sent Events 推送模式;Streamable HTTP:HTTP 流式模式。
路径(部分协议需要):
对于
STDIO协议,如果使用 SSE 网关转发,需要配置一个 SSE 路径,例如:/sse;控制台默认值为
/sse,如有特殊需求可自行修改。
请根据你实际实现的 MCP Server 协议选择对应的项。例如:
若使用 FastMCP 的 STDIO 模式,可以选择
STDIO;若使用基于 HTTP+SSE 的 Server 实现,可以选择
SSE或Streamable HTTP并填写路径。
步骤5:资源配置
在资源配置区域,设置工具实例的计算资源与超时时间,可根据工具复杂度和预期负载进行调整。:
CPU(核)/内存(GB):CPU/内存决定单实例的处理能力;
超时时间(秒):超时时间为单次请求的最长执行时长,超时后会自动中断请求。
步骤6:环境变量配置
在环境变量区域,你可以以表单模式或JSON 模式配置环境变量:
示例:
ENV=prodDB_URL=xxx
环境变量会在工具代码运行时注入,可用于:
指定下游服务地址、数据库连接等;
配置日志级别、运行模式等。
如果使用官方 Demo,请参考 Demo 说明决定是否需要额外的环境变量;如果使用自定义代码,按实际需要配置即可。
步骤7:执行角色配置
在执行角色配置区域,选择工具运行时使用的执行角色 ARN:
在下拉框中选择已有角色;
如没有合适的角色,可点击右侧
按钮,跳转至 RAM 角色列表创建新角色:信任主体:函数计算(
fc.aliyuncs.com);创建完成后,为角色授予所需策略,例如:
AliyunOSSFullAccess:访问 OSS;AliyunVPCFullAccess:访问 VPC 内网资源;以及其他与业务相关的权限策略。
工具在运行时将以该角色身份调用云服务,请根据最小权限原则为角色赋权。
步骤 8:网络配置与 OSS 存储挂载(可选)
在网络配置与OSS 存储挂载区域,按需设置:
网络配置
VPC ID:选择需要访问的 VPC;
子网 ID(交换机):选择对应交换机;
安全组:选择安全组,用于控制入/出方向的网络访问规则。
如工具需要访问内网的数据库、应用服务等,请在此处绑定合适的 VPC/子网,并确保安全组放行目标地址。
OSS 存储挂载(如有需要)
在此区域配置 OSS 挂载。
请注意:必须先在“执行角色”中授予 OSS 访问权限,才能正常使用挂载。
步骤 9:访问认证配置
在页面底部访问认证区域,可以为工具服务配置访问凭证:
提示:目前工具只支持 API Key 类型的凭证。
点击入站:访问凭证,进入访问认证配置;
选择使用已有凭证或点击
参考凭证管理创建新的 API Key;完成后,调用方在访问工具 HTTP 接口时需携带该 API Key,才能通过认证。
如仅用于内部测试,可以暂时不启用访问认证,但不建议在生产环境中关闭鉴权。
步骤 10:保存并创建
示例代码说明(MCP 工具)
以下是一个最小化的 MCP 工具示例,基于 fastmcp 框架实现:
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("My App")
@mcp.tool()
async def hello() -> str:
"""Return string 'Hello World!'"""
print("hello tool called")
return "Hello World!"
if __name__ == "__main__":
print("STDIO server started")
mcp.run()
说明:
FastMCP("My App"):创建一个 MCP Server 实例;@mcp.tool():将hello函数暴露为 MCP 工具;mcp.run():以 STDIO 方式启动 MCP Server;在控制台中将传输协议选择为
STDIO时,可直接配合此示例使用。
对于 SSE / HTTP Streamable 模式,可参考官方 Demo 项目的 README 与入口代码(如基于 Starlette/Uvicorn),只需修改对应“传输协议”和“路径”即可。
常见问题
Q1:工具启动失败,提示端口占用或访问不到?
确认代码服务监听的是
0.0.0.0,而不是127.0.0.1;确认监听端口与你在“服务端口”中配置的值一致;
如使用容器镜像,确认 Dockerfile 中暴露的端口与控制台配置一致。
Q2:调用工具时返回 401 / 鉴权失败?
检查“访问认证”是否启用 API Key;
确认调用方在请求头中正确携带了 API Key。
Q3:工具需要访问 OSS/VPC 资源但报权限错误?
检查“执行角色 ARN”是否包含
AliyunOSSFullAccess、AliyunVPCFullAccess等必要策略;如使用 OSS 挂载,还需确保在“OSS 存储挂载”中正确配置挂载信息。