Subagent使用疑问

subagent的参数有allowedMcps和allowedTools,这种应该是指定使用mcp的所有工具。是否有办法指定使用某个mcp的一部分工具?

我问iflow,它说目前控制粒度尚不支持在Agent级别配置只能访问某个mcp的部分工具,但提供了两个曲线救国的方案,行不行就得验证下了。

✦ 根据检索到的文档,目前不支持在 agent 级别配置只访问某个 MCP 的部分工具。

当前权限控制粒度

  1. MCP 服务器级别配置(全局)
    在 ~/.iflow/settings.json 中配置 MCP 服务器时,可以使用 includeTools 和 excludeTools:
1 {
2   "mcpServers": {
3     "my-server": {
4       "command": "npx",
5       "args": ["-y", "@modelcontextprotocol/server-xyz"],
6       "includeTools": ["tool1", "tool2"],  // 只包含这两个工具(白名单)
7       "excludeTools": ["tool3"]             // 排除这个工具(黑名单)
8     }
9   }

10 }

注意:这种配置是全局的,会影响所有使用该 MCP 的 agent。

  1. Agent 级别配置
    在 agent 配置中,只能控制:
  • 访问哪些 MCP 服务器(allowedMcps)
  • 使用哪些工具(allowedTools)

1 agentType: “custom-agent”
2 allowedMcps: [“my-server”] # 只能访问这个 MCP 服务器
3 allowedTools: [“Read”, “Grep”] # 只能使用这些工具

您的需求与当前能力的对比

┌──────────────────────────────────────┬─────────────────────────────────────┐
│ 需求 │ 当前支持情况 │
├──────────────────────────────────────┼─────────────────────────────────────┤
│ MCP 默认访问所有工具 │ :white_check_mark: 支持(不配置 includeTools 即可) │
│ 特定 agent 只能访问该 MCP 的部分工具 │ :cross_mark: 不支持 │
│ 全局限制 MCP 的部分工具 │ :white_check_mark: 支持(通过 includeTools) │
└──────────────────────────────────────┴─────────────────────────────────────┘

可能的变通方案

虽然无法直接实现您的需求,但可以考虑以下方式:

方案 1:创建多个 MCP 配置
为同一服务创建多个配置,每个配置包含不同的工具集:

1 {
2   "mcpServers": {
3     "my-server-full": {
4       "command": "npx",
5       "args": ["-y", "@modelcontextprotocol/server-xyz"]
6       // 默认所有工具
7     },
8     "my-server-limited": {
9       "command": "npx",

10 “args”: [“-y”, “@modelcontextprotocol/server-xyz”],
11 “includeTools”: [“tool1”, “tool2”]
12 }
13 }
14 }

然后在 agent 配置中指定使用哪个 MCP:

1 agentType: “limited-agent”
2 allowedMcps: [“my-server-limited”] # 使用受限版本

方案 2:通过系统提示约束
在 agent 的 systemPrompt 中明确告知只能使用某些工具:

1 agentType: “custom-agent”
2 systemPrompt: |
3 你是一个特定领域的专家。
4 你只能使用 my-server MCP 中的 tool1 和 tool2 工具。
5 不要尝试使用其他工具。

总结

您希望的功能(针对特定 agent 限制特定 MCP 的工具访问)目前在 iFlow CLI 中尚未实现。当前的工具访问控制粒度仅限于:

  • 全局 MCP 服务器级别(通过 includeTools/excludeTools)
  • Agent 级别的 MCP 服务器访问权限(通过 allowedMcps)
  • Agent 级别的工具使用权限(通过 allowedTools)

如果您需要这个功能,建议通过官方渠道提交功能请求。

感谢解答!这两个方案感觉都很有效,我试一试

1 个赞