
# MCP 参考 {#mcp-reference}

[启用 Paseo 工具](/docs/orchestration#get-started)，让 Agent 获得这套工具目录。用自然语言说明想要的结果，或者使用下面的工具接口。

## 配置 {#configuration}

| 设置                          | 默认值  | 用途                                     |
| ----------------------------- | ------- | ---------------------------------------- |
| `daemon.mcp.enabled`          | `true`  | 运行 MCP 服务器。                        |
| `daemon.mcp.injectIntoAgents` | `false` | 让 Paseo 启动的 Agent 可以使用它的工具。 |

根据 Provider 的不同，Paseo 通过其原生工具接口或 MCP 提供工具，能力是相同的。修改注入设置后，请启动新的 Agent 或重新加载已有的 Agent。

## 按 Provider 限制 Paseo 工具 {#limit-paseo-tools-by-provider}

当不同的 Agent 配置应获得不同的 Paseo 工具时，请使用 Provider 策略。先全局启用工具注入，然后在你启动所用的确切 Provider ID 上添加 `paseoTools`：

```json
{
  "$schema": "https://paseo.sh/schemas/paseo.config.v1.json",
  "version": 1,
  "daemon": {
    "mcp": {
      "enabled": true,
      "injectIntoAgents": true
    }
  },
  "agents": {
    "providers": {
      "codex-lead": {
        "extends": "codex",
        "label": "Codex Lead"
      },
      "codex-worker": {
        "extends": "codex",
        "label": "Codex Worker",
        "paseoTools": {
          "disabledTools": ["create_agent", "send_agent_prompt", "kill_agent"]
        }
      },
      "codex-isolated": {
        "extends": "codex",
        "label": "Codex Isolated",
        "paseoTools": {
          "enabled": false
        }
      }
    }
  }
}
```

编辑 `~/.paseo/config.json` 后运行 `paseo reload`，然后启动新的 Agent 或重新加载已有的 Agent。正在运行的会话保留它启动时得到的工具目录。

省略 `paseoTools` 会启用完整的工具目录。把 `enabled` 设为 `false` 会移除整个目录，在 `disabledTools` 中列出确切的工具 ID 则只移除所选的工具。自定义配置不会从 `extends` 继承这一策略；请为每个自定义 Provider ID 分别配置。

浏览器工具仍然需要启用浏览器工具并连接一个浏览器主机。仅用于语音的 `speak` 工具不受此策略控制。

这项设置限制的是呈现给 Agent 的工具目录。对于可以通过 shell 访问主机的 Agent，它不是安全边界。

## 心智模型 {#mental-model}

工作区决定工作在哪里进行；Agent 的父子关系决定工作归谁所有。

- 不带 `workspaceId` 调用 `create_agent` 的 Agent，会在它自己的工作区中得到一个子 Agent。
- 传入 `workspaceId` 会把子 Agent 放到另一个工作区，但不会让它脱离父 Agent。
- 没有工作区的顶层 MCP 调用方会得到一个新的本地工作区。
- 需要 worktree 隔离、特定分支或 Pull Request 检出时，请先创建工作区。

MCP 不提供解除 Agent 父子关系的工具。解除关系是用户在应用或 CLI 中手动执行的操作。

## 工具 {#tools}

### Agent {#agents}

| 工具                 | 功能                                                                                                 |
| -------------------- | ---------------------------------------------------------------------------------------------------- |
| `create_agent`       | 创建 Agent，可用 `workspaceId` 把它放到已有的工作区。用 `initialPrompt` 开始工作；不等待完成就返回。 |
| `send_agent_prompt`  | 用 `agentId` 和 `prompt` 发送提示词；不等待完成就返回。                                              |
| `get_agent_status`   | 返回 Agent 的最新快照。                                                                              |
| `list_agents`        | 以精简元数据列出最近的 Agent；`includeBackground: true` 会包含后台工作。                             |
| `cancel_agent`       | 中止 Agent 当前的运行，但保留该 Agent。                                                              |
| `archive_agent`      | 软删除 Agent，并把它从活动列表中移除。                                                               |
| `kill_agent`         | 永久终止 Agent 会话。                                                                                |
| `update_agent`       | 更新 Agent 的名称、标签或运行时设置，例如模式、模型、思考选项和功能。                                |
| `get_agent_activity` | 以整理后的摘要返回 Agent 最近的时间线条目。                                                          |
| `set_agent_mode`     | 切换 Agent 的会话模式。                                                                              |

Paseo Agent 默认会收到完成、错误和权限通知；设置 `notifyOnFinish: false` 可以关闭它们。外部 MCP 客户端使用 `get_agent_status` 和 `get_agent_activity` 查看结果。

### 工作区 {#workspaces}

| 工具                | 功能                                                                                                                                                                                                                                             |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `create_workspace`  | 创建本地工作区或使用 worktree 隔离的工作区。worktree 可以从某个分支分出、检出一个分支或一个 PR。`background: true` 会把它从默认列表和侧边栏中隐藏，同时保留历史记录和按 ID 访问。省略时继承调用方 Agent 工作区的设置；没有调用方时默认为 false。 |
| `list_workspaces`   | 列出活动的工作区及其目录和隔离方式。使用 `includeBackground: true` 可以包含后台工作区。                                                                                                                                                          |
| `rename_workspace`  | 修改当前或指定工作区在界面上显示的名称。                                                                                                                                                                                                         |
| `archive_workspace` | 归档工作区及其拥有的会话。                                                                                                                                                                                                                       |

对于 worktree 隔离，`create_workspace` 接受与应用中相同的常用选择：从某个基础分支分出、检出一个已有分支，或检出一个 Pull Request。worktree 仍然是工作区生命周期的实现细节。

### 工作区脚本 {#workspace-scripts}

这些工具管理在工作区的 `paseo.json` 中配置的脚本。每个工具都需要显式的 `workspaceId`；启动和停止还需要已配置的 `scriptName`。

| 工具                     | 功能                                                                  |
| ------------------------ | --------------------------------------------------------------------- |
| `list_workspace_scripts` | 列出已配置的脚本及其生命周期、终端、端口、代理 URL 和健康状态元数据。 |
| `start_workspace_script` | 通过 Paseo 的托管启动器启动已配置的脚本。                             |
| `stop_workspace_script`  | 通过受监管的终端停止正在运行的脚本。                                  |

`paseo.json` 的配置见 [Git worktree](/docs/worktrees#scripts-and-services)。

### 终端 {#terminals}

| 工具                 | 功能                                       |
| -------------------- | ------------------------------------------ |
| `list_terminals`     | 列出某个工作目录或所有工作目录的终端会话。 |
| `create_terminal`    | 为某个工作目录创建终端会话。               |
| `kill_terminal`      | 结束终端会话。                             |
| `capture_terminal`   | 捕获终端会话的纯文本输出。                 |
| `send_terminal_keys` | 向终端会话发送文本或特殊按键标记。         |

### 定时任务与 heartbeat {#schedules-and-heartbeats}

两者使用相同的 cron 引擎，但接口有意设计得不同。

| 工具                | 功能                                                      |
| ------------------- | --------------------------------------------------------- |
| `create_schedule`   | 创建一个 cron 定时任务，每次运行都启动一个新的 Agent。    |
| `list_schedules`    | 列出 daemon 管理的新建 Agent 定时任务。                   |
| `inspect_schedule`  | 查看定时任务及其运行历史。                                |
| `pause_schedule`    | 暂停一个活动的定时任务。                                  |
| `resume_schedule`   | 恢复一个已暂停的定时任务。                                |
| `update_schedule`   | 修改定时任务的 cron、提示词、Agent 设置、限制或其他设置。 |
| `schedule_logs`     | 返回定时任务最近的运行及输出。                            |
| `run_schedule_once` | 启动一次新建 Agent 的定时任务运行，不改变它的 cron。      |
| `delete_schedule`   | 永久删除一个新建 Agent 的定时任务。                       |
| `create_heartbeat`  | 向当前 Agent 发送一段由 cron 驱动的周期性提示词。         |
| `delete_heartbeat`  | 删除当前 Agent 的某个 heartbeat。                         |

MCP heartbeat 是临时的：只能创建或删除。要修改一个 heartbeat，请删除它并创建一个替代的。暂停、恢复、更新、查看、日志和单次运行只适用于新建 Agent 的定时任务。

默认情况下，新建 Agent 的定时任务每次运行结束时都会归档其工作区。`create_schedule` 和 `update_schedule` 不提供 **Archive on finish**（`archiveOnFinish`）；要让之后的运行工作区保持活跃，请[在应用中修改该选项](/docs/schedules#keep-run-workspaces)。

### Agent 配置 {#agent-profiles}

| 工具            | 功能                                                                          |
| --------------- | ----------------------------------------------------------------------------- |
| `list_profiles` | 返回主机上保存的 Agent 配置，包括它们的说明和启动设置。没有配置时返回空列表。 |

委派之前，请阅读每个配置的 `notes`，选择用户指定的配置或适合该任务的配置。设置方法和说明示例见 [Agent 配置](/docs/agent-profiles)。

`create_agent` 没有配置参数，并且需要 `provider/model` 组合。如果配置中没有模型，请先对其 Provider 调用 `list_models`，为任务选择一个可用的模型再启动。把所选配置的值应用到启动请求中：

| 配置字段                    | `create_agent` 字段                                            |
| --------------------------- | -------------------------------------------------------------- |
| `provider` 和可选的 `model` | `provider`，格式为 `provider/model`，使用保存的或发现的模型 ID |
| `modeId`                    | `settings.modeId`                                              |
| `thinkingOptionId`          | `settings.thinkingOptionId`                                    |
| `featureValues`             | `settings.features`                                            |
| `notes`                     | 供编排者选择时参考；任务放在 `initialPrompt` 中                |

省略不存在的可选设置。如果没有合适的配置，请用 Provider 发现来选择可用的设置。

### Provider {#providers}

| 工具               | 功能                                        |
| ------------------ | ------------------------------------------- |
| `list_providers`   | 列出已配置的 Agent Provider、可用性和模式。 |
| `list_models`      | 列出某个 Agent Provider 的模型。            |
| `inspect_provider` | 查看精简的 Provider 能力和草稿功能设置。    |

### 权限 {#permissions}

| 工具                       | 功能                                |
| -------------------------- | ----------------------------------- |
| `list_pending_permissions` | 返回所有 Agent 中待处理的权限请求。 |
| `respond_to_permission`    | 批准或拒绝一个待处理的权限请求。    |

### 浏览器 {#browser}

浏览器自动化需要主动开启，它会添加用于打开标签页、读取页面、点击、输入和截图的工具。见[浏览器工具参考](/docs/browser-tools)。

### 语音 {#voice}

| 工具    | 功能                                                           |
| ------- | -------------------------------------------------------------- |
| `speak` | 通过 daemon 管理的语音输出朗读文本。仅在启用语音的会话中可用。 |
