开发MCP Tool被AI智能体调用

通过示例介绍RPA自动化流程如何通过MCPAI智能体调用,应用在Computer Use、Browser UseAI场景中。

1. 案例简介

背景:某AI Agent需要能够帮助客户查询城市天气情况,该天气信息需要从某个天气网站(通过浏览器操作方式)上获取。

本文主要介绍如何使用RPA开发所需的Tool,并被AI智能体作为Tool使用,内容包括:

  1. 开发自动化流程,能够从该天气网站上查询到指定城市的温度或湿度;

  2. 发布成为MCP Tool;

  3. 调用MCP Tool;

  4. 发布新版本应用和MCP Tool;

  5. Agent集成建议。

2. 开发自动化流程

本例中使用可视化方式开发从某个天气网站获取指定城市的温度或湿度信息,要点介绍如下,如需从0开始进行开发,可参考RPA开发者-快速入门

  1. 该流程提供两个入参:城市名称、需要获取的天气类型(温度、湿度)

image

  1. 对流程进行简要说明:

    1. 首先,获取两个入参信息:cityname、weathertype;

    2. 其次,在该天气网站中查询cityname的天气,根据weathertype在界面上取出对应的内容;

    3. 最后,将结果记录到task_result中。

image

  1. 使用task_result记录结果。

image

重要

本例中因为演示目的,使用task_result方法记录流程执行结果;因为task_result本身的使用限制,在实际生产实践中,推荐在流程中直接将结果上传到您的系统,如流程中调用HTTP接口流程中操作数据库流程中发送邮件等。

  1. 将自动化流程发布为RPA应用,发布成功后如下所示。

image

3. 发布为MCP Tool

完成上述步骤后,该自动化流程已经能够被机器人运行,可通过手动触发、OpenAPI等触发,但还不能通过MCP方式触发运行,需完成本章节操作。

说明

产品中涉及的MCP Server(如系统MCP Server)、MCP Tool、MCP网关等请参考基本概念

步骤1:进入到MCP Server菜单后,点击“添加Tool”,选择上一步已经发布的应用和版本,定义Tool name和所属MCP Server,填写完成后如下所示。

image

参数

说明

应用和应用版本

  • 只能选择已经发布的应用。

  • 应用和Tool1:1的对应关系。如果选择已经创建Tool的应用,则页面会自动选择对应的Tool。

  • 应用版本和Tool版本是1:1的对应关系。

Tool名称(Tool name)

说明

建议Tool name不要直接使用应用名称。

Tool name在同一租户内(您的RPA企业)唯一,创建后支持修改。

  • Tool name不同于应用名称。应用名称的使用场景中,还有用于有人值守使用方式,即使用者在机器人客户端上根据应用名称筛选后执行;Tool nameTool description提供给大模型查找所需的Tool,因此Tool name需要更加容易被大模型所理解。

  • Tool name目前最长50个字符,不支持使用中文,建议使用英文下划线(_)分隔各个单词。

所属MCP Server

  • MCP Server分为两类,业务类MCP Server(默认名称为aiworker_deafult)和系统类MCP Server(默认名称为aiworker_system)。

  • 系统类MCP Server负责提供公共的MCP Tool,例如根据TaskId查询任务状态和结果。

  • 您开发的应用只能发布到业务类MCP Server中,不支持向内置的系统MCP Server中添加Tool。

步骤2:补充Tool description、Tool input信息,补充完毕后如下所示。

image

参数

说明

Tool版本

  • Tool版本和应用版本是1:1对应关系,第一版选中应用版本号后,此处的版本号即已经确定。

描述(Tool Description)

  • 产品提供了默认的Description模板,您可以在此模板上完善内容。

输入参数(Tool Input)

  • 输入参数包括两部分:自动化流程的输入参数、系统输入参数。

  • 系统输入参数,不可修改。

  • 自动化流程的输入参数,参数名称、参数类型和是否必填来自流程开发阶段的定义。

  • 本例中的两个输入参数来自前面章节,补充了输入的描述信息,大模型在获取ToolInput Schema中会读取到这些信息,大模型会根据Input Schema创建所需参数。

步骤3:发布到MCP网关。前面两个步骤已经完成了对MCP Tool的定义,需要发布到MCP网关上后,才能够被调用。本产品内置了共享的MCP网关实例,可在本步骤中勾选后,即可完成发布。

image

在列表中可以查看到发布结果。

image

4. 调用MCP Tool

本章节主要包括两部分:

  • 获取MCP调用地址和认证信息。

  • 调试MCP Tool,如百炼、Python代码等。

4.1 获取调用MCP的调用地址和认证信息

MCP Server菜单中,左侧MCP ServerTool的树状结构上选择根节点后,可点击“获取MCP Server连接信息”获取指定MCP网关实例的调用地址和连接信息。

image

所有MCP Tool的调用都需要使用Token方式认证,可根据引导自动创建Token信息,创建成功后,可获得该MCP网关实例下所有MCP Server的调用地址和认证信息,如下图所示:

image

4.2 准备机器人运行环境

本例中使用服务型机器人作为机器人的运行资源,如下图所示,已经添加好一个服务型机器人。

image

说明

传统RPA机器人和服务型机器人都支持被MCP调度。建议使用服务型机器人,便于大规模部署、调度和维护。

4.3 使用阿里云百炼调用MCP Tool

本章节以阿里云百炼为例,介绍智能体中如何调用本文中发布的MCP Tool。

步骤1:在百炼的MCP管理菜单中,选择“自定义服务”,点击“创建MCP服务”,并“选择使用脚本部署”方式。

image

image

步骤2:添加业务类MCP Server。安装方式选择“http”,将前文获取的MCP Server连接信息复制进去,只保留aiworker_default部分,如下图所示

image

部署成功后,可在该MCP Server中查看到工具。

image

步骤3:参考步骤2的过程,将系统MCP Server也添加到百炼的MCP管理中,如下图所示。

image

步骤4:在百炼的应用管理中,根据引导创建智能体,并在MCP服务中,添加步骤2和步骤3MCP Server。

image

步骤5:在智能体的调试界面中,输入“使用指定机器人ID查询某个城市的温度”的请求,如下图所示,大模型可根据MCP Tool的描述信息完成任务的创建和查询结果。

image

RPA控制台中,也可以查看到大模型创建的任务。

image

也可以将机器人ID放在提示词内,使用百炼提供的自定义变量功能控制不同最终用户使用不同的机器人,如下图所示。

image

4.4 使用代码调用MCP Tool

本章节提供一个Python的代码示例片段,介绍如何调用前文发布的MCP Tool。

请求示例

from mcp import ClientSession
from mcp.client.sse import sse_client
import asyncio
import json

async def call_mcp_tool(mcpserver):
    url = mcpserver['url']
    headers = mcpserver['headers']

    async with (sse_client(url=url, headers=headers) as (read, write)):
        async with ClientSession(read, write) as session:
            await session.initialize()
            params = {
                "RobotId": ".....",  #机器人ID
                "cityname": "北京",
                "weathertype": "temperature"
            }
            tool_result = await session.call_tool(name="get_city_current_weather",
                                                  arguments=params)
            print(tool_result)

# 内容来自前面章节获得的MCP Server连接信息
mcp_config_str = """
{
  "mcpServers": {
    "aiworker_default": {
      "type": "sse",
      "url": "https://rpa-api.aliyuncs.com/......./sse",  #MCP调用地址
      "headers": {
        "x-rpa-personal-access-token": "rt_........",    #您的调用Token
        "x-rpa-auth-way": "personal_access_token"
      }
    },
    "aiworker_system": {
      "type": "sse",
      "url": "https://rpa-api.aliyuncs.com/......./sse",  #MCP调用地址
      "headers": {
        "x-rpa-personal-access-token": "rt_........",    #您的调用Token
        "x-rpa-auth-way": "personal_access_token"
      }
    }
  }
}"""
mcp_config = json.loads(mcp_config_str)
asyncio.run(call_mcp_tool(mcp_config['mcpServers']['aiworker_default']))

返回示例

meta=None content=[TextContent(type='text', text='{"requestId":"5a91a676-c797-43ac-8552-70fa7959ab89","success":true,"code":0,"msg":"调用成功","msgCode":"result.success","data":{"TaskId":"db422a5a-39a5-4e80-b3........."},"pager":null,"instanceId":null}', annotations=None, meta=None)] structuredContent=None isError=False

5. 更新自动化流程

自动化流程会需要修改bug、增加新功能,因此本章节介绍自动化流程更新后,MCP Tool的处理过程。

步骤1:在章节2的基础上(按照城市名称查询温度或湿度),增加也可使用邮编(postcode)进行查询。

image

自动化流程发布后,版本号为3.0.0,如下图所示。

image

步骤2:在MCP Server菜单中,可以看到当前Tool使用的应用版本仍然是2.0.0。

image

说明

已经发布上线的MCP Tool只会调用对应版本的应用,不会因为应用的版本更新而自动变化。

点击添加新版本Tool,选择前一步骤发布的版本号。

image

步骤3:完善补充新版本Tool信息。默认情况下,新版本ToolTool description、Tool input信息都需要填写,可以使用“使用Tool的其他版本信息”功能,使用已有版本的Tool信息,在此基础上进行修改。

image

步骤4:(可选)发布到MCP网关实例。此处可以看到当前MCP网关实例上发布的Tool版本,如果选择发布,将直接替换掉线上的Tool。

image

步骤5:在指定Tool的管理界面中,可根据需要切换不同版本的Tool。

image

说明

如果一个Tool存在多个版本,在同一个MCP网关实例中最多只能运行一个版本。

6. 系统集成建议

前文使用一个示例介绍了如何将RPA自动化流程变成可以被AI智能体使用的Tool,但在生产中使用时,还需要考虑如下几个方面:

  • 机器人分配方式。

    • 从前文可以看到,所有自动化任务都需要指定某个机器人来运行。主要原因是对已有系统(平台或软件)的操作中,绝大部分情况下都需要先完成用户登录,这些已有系统(平台或软件)自身的登录方式各异、安全管控方式各异,故造成即开即用的资源管理方式能够使用的场景有限,绝大部分情况下需要根据您的业务特点单独考虑如何分配机器人给最终用户使用。

    • 建议处理方式:大部分情况下可以将分配过程放在最终用户(企业内外)在使用智能体之前的注册环节(或开通环节)中,通过调用RPAOpenAPI(例如服务型机器人的ListRobots接口),在您的系统内对管理和记录机器人分配。

  • 大模型调度方式。

    • 根据我们的生产实践观察,超过70%以上的自动化任务执行时间超过30分钟。因此使用RPA开发的MCP Tool,大部分情况下需要按照异步调度的方式处理,同时在Tool description中默认也会告知大模型调用模型。

    • 同时,使用Chat方式与最终用户进行交互的智能体,需要考虑到由于自动化任务执行时间很长的情况下的处理。

    • 建议处理方式:自动化任务执行(Tool执行)和结果获取(包括获得任务状态、获得任务产生业务所需的数据)采用不同的方式进行处理。

      • 自动化任务执行:由大模型使用MCP触发。

      • 结果获取:通过后台的OpenAPI(例如服务型机器人的ListTaskDetails、ListTasks接口)或回调方式通知(例如服务型机器人在任务状态变化时推送消息);智能体与最终用户的交互界面中,采用推送通知的方式告知用户结果(如WebSocket)。