Skip to main content
Version: V6.7

MCP服务集成

1. MCP基本概念

1.1 什么是MCP服务

MCP(Model Context Protocol)服务是机器人指挥官平台提供的一种标准化服务接口,允许外部智能体(AI Agent)通过MCP协议调用平台的RPA自动化能力。

通过MCP服务,智能体可以:

  • 获取可用的任务模板列表
  • 基于任务模板创建自动化任务
  • 查询任务执行状态和结果

1.2 应用架构

┌─────────────────────────────────────────────────────────────────┐
│ 智能体平台 │
│ (AI Agent Platform) │
└─────────────────────────────────────────────────────────────────┘

│ MCP协议调用
│ HTTPS + Bearer Token

┌─────────────────────────────────────────────────────────────────┐
│ Commander MCP服务端点 │
│ https://example.com/ │
│ /automation/mcp │
└─────────────────────────────────────────────────────────────────┘

2. 快速开始

2.1 基本使用流程

步骤1:获取Personal Access Token
├─ 登录机器人指挥官平台
├─ 点击右上角用户头像
├─ 选择"个人令牌"
└─ 点击"立即生成"生成令牌

步骤2:配置MCP客户端
├─ 设置服务端点URL
├─ 配置认证令牌
└─ 验证连接

步骤3:调用MCP工具
├─ 获取任务模板列表
├─ 创建新任务
└─ 查询任务结果

2.2 服务端点信息

配置项
协议HTTPS
端点路径/automation/mcp
认证方式Bearer Token
令牌格式rk-{CompanyOpenId}-{randomString}

3. 个人令牌管理

3.1 什么是Personal Access Token

Personal Access Token(个人访问令牌)是用于代替用户身份进行API调用的安全凭证。通过此令牌,外部应用可以代表用户调用平台的MCP服务。

3.2 访问令牌管理页面

  1. 登录机器人指挥官平台
  2. 点击顶部导航栏右侧的用户姓名/头像
  3. 在下拉菜单中选择“个人令牌”

3.3 生成个人令牌

3.3.1 操作步骤

  1. 进入个人令牌管理页面
  2. 如果是首次使用,点击立即生成按钮
  3. 系统自动生成令牌,默认命名为"default"
  4. 复制并妥善保存令牌

3.3.2 令牌格式说明

生成的令牌格式为:

rk-{CompanyOpenId}-{32位随机字符}

示例:

rk-abc123def456-a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p

重要提示:令牌生成后请立即复制并妥善保存,关闭页面后无法再次查看完整令牌。

3.4 重置个人令牌

如需更新令牌(例如令牌泄露),可以执行重置操作:

  1. 在令牌列表中找到要重置的令牌
  2. 点击重置按钮
  3. 确认重置操作

注意:重置令牌后,原令牌将立即失效,所有使用原令牌的外部服务将无法通过认证。请及时更新所有使用该令牌的服务配置。

3.5 删除个人令牌

  1. 在令牌列表中找到要删除的令牌
  2. 点击删除按钮
  3. 确认删除操作

注意:删除令牌后,所有使用该令牌的外部服务将失去对平台服务的访问权限。

3.6 查看令牌使用情况

令牌列表中显示以下信息:

字段说明
Token Name令牌名称
Personal Access Token令牌值(部分隐藏,可复制)
Created Time令牌创建时间
Last Used Time令牌上次使用时间(最近一次成功换取系统访问凭证的时间)

4. MCP工具使用

4.1 工具列表概览

MCP服务提供以下工具:

工具名称功能描述
get_task_templates获取用户可访问的任务模板列表
create_task基于任务模板创建新的执行任务
query_task_result查询任务的执行状态和结果

4.2 get_task_templates 工具

4.2.1 功能说明

获取当前用户可访问的所有任务模板列表,支持关键字搜索和分页。

4.2.2 请求参数

参数名类型必填说明
keyWordstring流程名称关键字,用于筛选使用指定流程的模板。仅支持单个字符或单词作为搜索关键字,不支持使用空格、逗号等符号组合多个关键字进行查询
pageIndexinteger页码,从1开始,默认为1
pageSizeinteger每页数量,默认为20,最大50

4.2.3 响应格式说明

MCP工具的返回结果被包装在一个JSON字符串中,实际响应格式为:

{
"result": "{\"return\": {...}, \"meta\": {...}}"
}

客户端需要先解析result字段,获取其中的JSON字符串后再次解析,才能得到完整的业务数据。

4.2.4 响应示例

解析后的业务数据示例

{
"return": {
"data": {
"items": [
{
"name": "财务报表自动生成",
"description": "自动生成月度、季度和年度财务报表",
"template_detail": {
"flowName": "finance_report_flow",
"assignType": "automatic",
"workerGroupName": "财务机器人组",
"priority": "high",
"parameters": [
{
"parameterName": "report_type",
"parameterType": "string",
"parameterRemark": "报表类型:monthly/quarterly/annual"
}
]
}
}
],
"pageIndex": 1,
"pageSize": 20,
"totalCount": 1
},
"code": "0",
"message": ""
},
"meta": {
"data_integrity": {
"is_truncated": false
}
}
}

4.3 create_task 工具

4.3.1 功能说明

基于指定的流程创建新的自动化任务,支持参数配置和任务调度设置。任务创建后立即返回任务ID,任务异步执行。

4.3.2 请求参数

参数名类型必填说明
flowNamestring要执行的RPA流程名称
assignTypestring分配策略:automatic(自动分配)/ designate(指定分配)
workerNamestring指定分配时的机器人名称,自动分配时传null或"0"
workerGroupNamestring自动分配时的机器人组名称,指定分配时传null或"0"
countinteger创建任务数量,默认1,范围1-100
departmentNamestring部门名称,用户属于多个部门时必填
prioritystring任务优先级:high/middle/low,默认middle
isRecordboolean是否录屏,默认根据组织配置
hasMaxRunningTimeboolean是否启用最大运行时长限制,默认false
maxRunningTimeinteger最大运行时长(分钟),启用限制时建议填写
validityDaysinteger任务有效期(天),默认30
parametersarray流程输入参数数组

4.3.3 响应格式说明

MCP工具的返回结果被包装在一个JSON字符串中,实际响应格式为:

{
"result": "{\"return\": {...}, \"meta\": {...}}"
}

客户端需要先解析result字段,获取其中的JSON字符串后再次解析,才能得到完整的业务数据。

4.3.4 响应示例

{
"return": {
"data": {
"taskIds": [4702818380283905, 4702818380283906]
},
"code": "0",
"message": "Tasks created successfully"
},
"meta": {
"data_integrity": {
"is_truncated": false
}
}
}

4.4 query_task_result 工具

4.4.1 功能说明

根据任务ID查询已创建任务的执行状态、结果和详细信息。

4.4.2 请求参数

参数名类型必填说明
taskIdinteger要查询的任务ID

4.4.3 响应格式说明

MCP工具的返回结果被包装在一个JSON字符串中,实际响应格式为:

{
"result": "{\"return\": {...}, \"meta\": {...}}"
}

客户端需要先解析result字段,获取其中的JSON字符串后再次解析,才能得到完整的业务数据。

4.4.4 响应示例

解析后的业务数据示例

{
"return": {
"data": {
"taskId": 4702818380283905,
"departmentName": "Laiye Tech",
"flowName": "财务报表自动生成",
"state": "completed",
"subStateMessage": "任务执行完成",
"createTime": "2025-11-19T07:50:19Z",
"startTime": "2025-11-19T07:51:00Z",
"stopTime": "2025-11-19T08:05:30Z",
"runningTime": 870
},
"code": "0",
"message": ""
},
"meta": {
"data_integrity": {
"is_truncated": false
}
}
}

4.5 任务执行状态说明

状态码状态名称说明
pending等待执行任务已创建,等待机器人执行
running正在执行任务正在机器人上执行
completed执行完成任务成功执行完成
failed执行失败任务执行过程中出现错误
cancelled已取消任务被用户主动取消
stopped已停止任务被系统停止
expired已过期任务超过有效期未执行

任务子状态(subState): 任务结果中还包含subState字段,用于更详细地描述任务的执行状态:

  • success:任务执行成功
  • 其他子状态码根据具体业务场景定义

响应中还会包含subStateMessage字段,提供状态的详细描述信息。

4.6 数据解析说明

重要:MCP工具的所有响应都需要进行二次JSON解析:

  1. 第一次解析:从MCP工具响应中获取result字段的字符串值
  2. 第二次解析:将result字段的字符串值解析为JSON对象,获取returnmeta字段
  3. 第三次解析(如需要):return.data字段也是JSON字符串格式,需要再次解析

5. 集成指南

5.1 MCP客户端配置

5.1.1 基本配置

# MCP客户端配置示例
mcp_client:
server_url: "https://example.rpa.com:8182/automation/mcp"
authentication:
type: "Bearer"
token: "rk-{CompanyOpenId}-{randomString}"
timeout: 30000
retry:
max_attempts: 3
backoff: 1000

5.1.2 认证请求头

Authorization: Bearer rk-{CompanyOpenId}-{randomString}
Content-Type: application/json

5.2 典型集成场景

场景1:智能客服自动创建RPA任务

  1. 用户向智能客服提交财务报表生成请求
  2. 智能客服调用 get_task_templates 获取可用模板
  3. 智能客服选择"财务报表自动生成"模板
  4. 调用 create_task 创建任务,传入报表类型和时间范围参数
  5. 返回任务ID给用户
  6. 用户使用任务ID通过 query_task_result 查询执行状态

场景2:定时调度系统集成

  1. 调度系统触发定时任务
  2. 调用 get_task_templates 获取相关模板
  3. 调用 create_task 批量创建任务
  4. 记录返回的任务ID列表
  5. 后台定期调用 query_task_result 检查任务状态

5.3 错误处理

5.3.1 认证错误

{
"return": {
"code": "401",
"message": "Invalid or expired access token"
}
}

处理建议

  • 验证令牌格式是否正确
  • 检查令牌是否已刷新或删除
  • 联系用户重新生成令牌

5.3.2 权限错误

{
"return": {
"code": "403",
"message": "Access denied: insufficient permissions"
}
}

处理建议

  • 验证用户是否有所请求资源的使用权限
  • 检查令牌对应的用户权限范围

5.3.3 参数错误

{
"return": {
"code": "400",
"message": "Invalid parameter: flowName not found"
}
}

处理建议

  • 检查参数值是否符合要求
  • 先调用 get_task_templates 获取有效的流程名称

5.4 智能体提示词编写指南

当将机器人指挥官的MCP服务集成到智能体(AI Agent)中时,合理的提示词(Prompt)设计对于引导智能体正确调用工具至关重要。

5.4.1 提示词编写原则

原则说明
明确自动化场景清晰告知智能体哪些业务场景可以使用RPA自动化
建立业务关联将业务术语与MCP工具建立明确的映射关系
引导工具调用明确告诉智能体何时调用哪个工具
说明参数要求告知智能体调用工具时需要哪些参数信息
设置响应预期告知智能体如何向用户反馈任务执行结果

5.4.2 基础提示词模板

以下是一个通用的提示词模板,可以根据实际业务场景进行调整:

你是一个智能助手,可以为用户调用RPA自动化服务来处理重复性、规则性的业务任务。

【可用的自动化能力】
你可以通过调用以下MCP工具为用户提供自动化服务:

1. get_task_templates - 查询可用的任务模板列表
- 当用户询问"可以自动完成什么任务"或"有哪些自动化能力"时调用
- 可以使用关键字搜索特定类型的任务模板

2. create_task - 创建并执行自动化任务
- 当用户明确要求执行某个自动化任务时调用
- 需要先通过get_task_templates确认任务模板存在

3. query_task_result - 查询任务执行状态和结果
- 当用户询问任务执行进度或结果时调用

【触发条件】
当用户的需求包含以下特征时,考虑调用MCP工具:
- 提到"自动"、"自动化"、"机器人"等关键词
- 描述的是重复性、规则性的操作(如数据录入、报表生成、文件处理等)
- 需要在多个系统之间进行数据同步或传输
- 需要定时执行的任务

【工作流程】
1. 理解用户需求,判断是否属于可自动化的场景
2. 调用get_task_templates查询相关的任务模板
3. 向用户说明可用的自动化选项
4. 获取用户确认和必要的参数
5. 调用create_task创建任务
6. 告知用户任务ID,并说明可以使用query_task_result查询进度

【注意事项】
- 在不确定用户需求时,先询问清楚再调用工具
- 对于需要用户提供参数的任务(如时间范围、文件路径等),务必先获取这些信息
- 任务执行是异步的,需要告知用户任务不会立即完成
- 如果找不到匹配的任务模板,诚实地告知用户当前不支持该自动化场景

5.4.3 场景化提示词示例

场景1:财务报销自动化

你是一个财务助手,可以帮助用户处理与财务报销相关的自动化任务。

用户可能会用以下方式表达需求:
- "帮我自动完成报销申请"
- "发票信息能自动填到报销系统吗"
- "每个月的报表能不能自动生成"

当用户提到"报销"、"发票"、"报表"等财务相关词汇,且带有"自动"的意思时:
1. 首先调用get_task_templates,使用关键字如"报销"、"发票"、"报表"进行搜索
2. 将找到的模板及其描述展示给用户
3. 如果用户需要执行某项任务,获取必要的参数(如发票文件、时间范围等)
4. 调用create_task创建任务
5. 返回任务ID给用户,说明任务正在后台执行

场景2:数据录入与同步

你是一个数据管理助手,可以帮助用户处理数据录入和数据同步的自动化任务。

当用户的需求涉及:
- 从Excel/CSV文件批量录入数据到系统(如CRM、ERP)
- 在多个系统之间同步数据
- 定期拉取某个系统的数据并生成报告

工作流程:
1. 理解用户的数据源和目标系统
2. 调用get_task_templates搜索相关模板(关键字:"数据"、"同步"、"导入"等)
3. 确认用户的执行意图,获取必要的文件路径、时间范围等参数
4. 创建自动化任务并反馈任务ID

场景3:邮件与文档处理

你是一个办公助手,可以帮助用户处理邮件和文档相关的自动化任务。

支持的自动化场景包括:
- 自动识别邮件中的发票、合同等文档
- 自动分类和归档邮件
- 批量处理文档(如格式转换、信息提取)
- 自动生成并发送标准邮件

当用户提到"邮件"、"文档"、"自动处理"、"识别"等词汇时:
1. 调用get_task_templates查看相关能力
2. 向用户说明可用的自动化选项
3. 获取必要的参数(如邮箱账号、文件位置、规则条件等)
4. 创建任务并跟踪执行状态

5.4.4 高级提示词技巧

技巧说明示例
Few-Shot示例给智能体提供具体的对话示例用户:"能不能自动处理发票?" → 智能体调用get_task_templates搜索"发票"
思维链提示引导智能体逐步思考"当用户提出需求时,先判断:1.是否是自动化场景 2.查询可用模板 3.确认参数后创建任务"
否定示例明确告诉智能体什么情况不该调用"如果用户的需求是一次性操作或需要创造性判断,不要调用自动化工具"
角色设定给智能体设定明确的业务角色"你是RPA自动化专家,熟悉企业的各种自动化流程"

5.4.5 提示词调试建议

在部署智能体之前,建议进行以下测试:

测试类型测试内容预期行为
正面测试使用明确的自动化需求话术智能体应主动查询并创建任务
负面测试使用不相关的话术智能体不应调用MCP工具
边界测试使用模糊的话术智能体应主动询问澄清
参数测试测试缺少必要参数的情况智能体应主动询问缺失的参数

6. 最佳实践

6.1 令牌安全管理

建议说明
定期刷新令牌建议每90天刷新一次个人令牌
安全存储将令牌存储在安全的密钥管理系统中
最小权限原则仅为集成账户分配必要的权限
监控使用情况定期检查令牌的上次使用时间,发现异常及时处理

6.2 任务创建建议

建议说明
参数验证创建任务前先调用 get_task_templates 验证参数有效性
异步处理任务创建后立即返回,使用后台任务轮询执行结果
错误重试实现指数退避的重试机制处理网络故障
批量操作使用count参数批量创建相同配置的任务

6.3 状态查询优化

建议说明
合理轮询任务执行初期使用较短轮询间隔(如30秒),稳定后延长至2-5分钟
避免过度查询对于已完成/失败的任务无需继续查询
结果缓存缓存已查询的任务结果,避免重复查询

6.4 数据完整性处理

MCP服务对返回数据有8KB的大小限制。超过限制的数据将被截断。

{
"meta": {
"data_integrity": {
"is_truncated": true,
"truncation_reason": "size_limit_exceeded",
"original_size": 12288,
"size_limit": "8192"
}
}
}

处理建议

  • 检查响应中的 data_integrity.is_truncated 字段
  • 如数据被截断,可通过平台界面获取完整数据

7. 常见问题

7.1 令牌相关

Q1:个人令牌有有效期吗?

A:个人令牌本身没有过期时间,但建议每90天刷新一次以确保安全。


Q2:忘记保存令牌怎么办?

A:如果令牌已生成但未保存,请刷新令牌生成新的令牌。旧令牌将无法找回。


Q3:一个用户可以创建多少个个人令牌?

A:当前版本每个用户限制为1个个人令牌。


Q4:令牌泄露后如何处理?

A:请立即刷新令牌,使旧令牌失效,并更新所有使用该令牌的服务配置。

7.2 工具调用相关

Q5:为什么调用create_task后任务没有立即执行?

A:任务创建后需要等待机器人空闲才能开始执行。这是正常现象,请通过 query_task_result 查询任务状态。


Q6:如何判断任务执行完成?

A:调用 query_task_result 查询任务状态,当 statecompletedfailedcancelledstoppedexpired 时表示任务已结束。


Q7:任务执行失败后如何查看错误原因?

A:调用 query_task_result 时,响应中的 subStateMessage 字段包含详细的错误信息。


Q8:可以批量创建任务吗?

A:可以。调用 create_task 时设置 count 参数(范围1-100)即可批量创建相同配置的任务。

7.3 技术集成相关

Q9:MCP服务支持哪些MCP协议版本?

A:MCP服务使用Streamable HTTP协议,兼容MCP协议的最新版本。


Q10:MCP服务有调用频率限制吗?

A:当前版本没有明确的调用频率限制,但建议合理控制调用频率,避免对系统造成压力。


Q11:如何处理网络超时?

A:建议设置30秒的超时时间,并实现指数退避的重试机制。


Q12:返回数据被截断怎么办?

A:检查响应中的 meta.data_integrity 字段。如数据被截断,可通过机器人指挥官平台界面获取完整数据。


8. 故障排查

8.1 连接问题排查

问题1:无法连接到MCP服务

现象连接超时或拒绝连接
可能原因1. 服务端点URL配置错误 2. 网络连接问题 3. 防火墙阻止
排查步骤1. 验证服务端点URL格式正确 2. 检查网络连接 3. 确认防火墙规则允许HTTPS访问
解决方案修正配置、检查网络、调整防火墙规则

问题2:认证失败

现象返回401 Unauthorized
可能原因1. 令牌格式错误 2. 令牌已刷新或删除 3. 令牌被撤销
排查步骤1. 验证令牌格式为 rk-{CompanyOpenId}-{randomString} 2. 检查令牌状态
解决方案使用有效的令牌

8.2 工具调用问题排查

问题3:get_task_templates返回空列表

现象没有返回任何任务模板
可能原因1. 用户没有任何任务模板的使用权限 2. 搜索关键字没有匹配结果
排查步骤1. 不使用keyWord参数重试 2. 确认用户权限
解决方案联系任务模板所有者分配使用权限

问题4:create_task参数错误

现象返回400 Bad Request
可能原因1. flowName对应的流程不存在 2. 权限不足 3. 参数值不符合要求
排查步骤1. 先调用get_task_templates验证流程名称 2. 检查用户权限 3. 验证参数值
解决方案使用有效的参数值重新调用

问题5:query_task_result任务不存在

现象返回404 Not Found
可能原因1. taskId不正确 2. 任务已被删除 3. 用户无权访问该任务
排查步骤1. 验证taskId格式 2. 确认任务创建成功 3. 检查用户权限
解决方案使用正确的taskId查询

附录

附录A:术语表

术语英文说明
MCPModel Context Protocol模型上下文协议,一种AI智能体与服务交互的标准化协议
Personal Access Token-个人访问令牌,用于API调用的安全凭证
Task Template-任务模板,预定义的任务配置
Flow-流程,RPA自动化流程的定义
Worker Robot-流程机器人,执行RPA流程的机器人或机器人组
Asynchronous Execution-异步执行,任务在后台执行,调用立即返回

附录B:HTTP状态码说明

状态码说明
200请求成功
400请求参数错误
401认证失败,令牌无效或已过期
403权限不足,无权访问请求的资源
404资源不存在
500服务器内部错误