# 接外部 · 接一个真数据源,完成一次查询 · Warp · 一台终端形状的元工具

**作者** Aklman · **章节** 07 / 12 · **首发** 2026.08 · **语言** 中文为主, 中英双语
**原文** https://library.aklman.com/books/warp/07-mcp
**全书 markdown** https://library.aklman.com/books/warp/llms.md
**上一章** https://library.aklman.com/books/warp/06-drive/llms.md
**下一章** https://library.aklman.com/books/warp/08-control/llms.md

> 本章来自 Aklman · Library, 完整免费阅读。允许 AI 摘读、引用、问答; 转载请保留作者署名与原文链接 (CC BY-NC-ND 4.0, https://library.aklman.com/license)。

---

> agent 默认只看得见你的终端。这章真的接上一个外部数据源 —— 一个只读的 GitHub MCP —— 用它回答一个光看终端答不了的问题,然后把权限收成只读。能连是接口给的能力,该连是你给的判断,红线本章划清。

到这里,agent 看得见的还只是你的终端和仓库。但你大半上下文不在那儿 —— 在 issue 跟踪、数据库、监控面板、内部 API 里。MCP(Model Context Protocol)是那根接线。这章不空谈接线图:真的接一个只读的 GitHub MCP,用它回答一个光看终端答不了的问题,然后把权限收成只读。接完这一次,你就有了判断「下一个该不该接」的全部手感。

### I · 主线:接一次只读 GitHub MCP,答一题,收权限

为什么选 GitHub:几乎人人都有,只读 token 好申请,答错了代价为零。问题也挑一个终端答不了的:「我们 repo 里,open 超过 30 天、最近一周还有人评论的 issue 有哪些?」—— 答案不在你的文件系统里,在 GitHub 的 API 后面。[^1]

- **接:Settings > Agents > MCP servers 加一个 GitHub server**:
 入口有三个:Settings > Agents > MCP servers、Drive 的 Personal > MCP Servers、命令面板搜 `Open MCP Servers`。用 GitHub 官方 MCP,token 只给只读 scope;OAuth 类的服务器首次启动会弹授权窗,授权完才上线。加完不用重启 Warp —— 下一条消息新工具就进上下文。[^1]

- **问:把那句话交给它**:
 ⌘↩ 开会话,贴上下面 PromptBox 示例 tab 那段。注意它要求 agent 说出用了哪个 tool、数据来自哪 —— 这是防「凭空编」的验收钩子。

- **验:看它真读了外部数据**:
 它调用 MCP 工具时,确认面板会显示正在跑的是哪个 tool、来自哪个 server —— 你看得见它碰的是 GitHub 而不是在猜。答案回来,抽查两个 issue 号去 GitHub 上核对:真实存在、日期对得上,才算这次接线成功。[^1]

- **收:权限锁成只读**:
 回到 MCP 设置,把这个 server 的写类工具(create_issue、add_comment 之类)放进 denylist —— denylist 优先于一切,命中必须人工批准。以后它只能读,想写得先过你。这一步就是「能连」和「该连」之间的那道闸。[^3]

**提示词 · 主线同款:一个光看终端答不了的问题**

```text
用 GitHub MCP 回答:<repo> 里 open 超过 <天数> 天、
最近 <天数> 天内还有人评论的 issue 有哪些?
要求:
1. 说明你调用了哪个 tool、数据来自哪里;
2. 列出 issue 号、标题、open 天数、最近评论时间;
3. 只读,不要创建或修改任何 issue / comment。
```

**示例**

```text
用 GitHub MCP 回答:我们 repo 里 open 超过 30 天、
最近 7 天内还有人评论的 issue 有哪些?
要求:
1. 说明你调用了哪个 tool、数据来自哪里;
2. 列出 issue 号、标题、open 天数、最近评论时间;
3. 只读,不要创建或修改任何 issue / comment。
```

#### 没有 MCP 的同一题

开浏览器,进 Issues 页,按 updated 排序,一页页翻;open 天数要心算,最近评论要逐个 issue 点进去看;二十分钟后你有一份「大概齐」的清单,漏没漏你没把握。

#### 刚才这三分钟

一句话,一张带 issue 号和日期的表,工具调用过程全程可见,你抽查了两个号都对。剩下的问题是判断:这些僵尸 issue 哪些该关 —— 那是你的活,agent 把找答案的活干完了。

---

### II · 它能读你已有的配置

你不必重新配一遍。Warp 认这些位置的 MCP 配置:自己的 `~/.warp/.mcp.json`(全局)和项目里的 `.warp/.mcp.json`,Claude Code 的 `~/.claude.json` / `.mcp.json`,Codex 的 `~/.codex/config.toml`,以及其他 agent 的 `~/.agents/.mcp.json`。auto-spawn 规则分三层:Warp 自己的全局 file-based servers 默认自动启动;第三方全局 servers 要你显式打开「Auto-spawn servers from third-party agents」;项目级 servers 永不自动启动,会话级生效,重启后要重新批准 —— 从陌生 repo clone 下来的 `.warp/.mcp.json` 不能自己启动本地命令,这条规则是你的保险。[^2]

_一个只读 MCP 服务器条目(CLI 型,示意;包名与参数以对应 server 文档为准)_
```text

```json
{
 "docs-ro": {
 "command": "npx",
 "args": ["-y", "mcp-remote", "https://example.com/mcp"],
 "env": {
 "DOCS_TOKEN": "<read_only_token>"
 },
 "working_directory": "/absolute/path/to/project"
 }
}
```

```

**提示词 · MCP 接入审查模板(接下一个之前先跑这个)**

```text
我要给 Warp Agent 接一个 MCP server:<server-name>。
先不要安装或启动。
请帮我审查:
1. 它能读什么;
2. 它能写什么;
3. 凭据放在哪里,能否撤销;
4. 日志在哪里,是否可能含 token;
5. 该设为 allowlist、Agent decides 还是 denylist;
6. 第一次只读验证问题应该问什么。
```

**示例**

```text
我要给 Warp Agent 接一个 MCP server:linear-mcp。
先不要安装或启动。
请帮我审查:
1. 它能读什么;
2. 它能写什么;
3. 凭据放在哪里,能否撤销;
4. 日志在哪里,是否可能含 token;
5. 该设为 allowlist、Agent decides 还是 denylist;
6. 第一次只读验证问题应该问什么。
```

> 两个省时间的:文件型服务器可以让 agent 自己配 —— 内置 skill `/agent-add-mcp` 能写全局或项目配置;新服务器先用 `npx` 在本地跑通再贴进 Warp,省得在 app 里反复试。相对路径的命令一定显式设 `working_directory`。[^2]

---

### III · 能连不等于该连

每多接一个 MCP 服务器,agent 能做的事变多,能闯的祸也变多。三笔代价要算:多一个外部依赖就多一份攻击面,多一组工具就多烧 token,多一处写权限就多一处它能改坏的地方。所以默认连只读,写权限单独想清楚 —— denylist 优先于 allowlist 与「Agent decides」,命中必须人工批准,生产库的写口就该进 denylist。[^3]连之前先问三句:这服务器要的权限是只读还是能写?它的工具会不会把敏感数据带出去?这件事我多久用一次、值不值得让它常驻?「能连」是接口给的能力,「该连」是你给的判断。

| 风险级别 | 例子 | 默认策略 |
| :-- | :-- | :-- |
| 只读 | 文档、只读数据库、GitHub issue 读取、日志查询 | 可先接,但仍记录权限和日志位置 |
| 草拟 | 起草 issue 回复、生成 PR 描述、创建草稿工单 | 允许生成,不自动发布 |
| 写入 | 改 issue 状态、写数据库、改云资源 | 默认 denylist,每次批准 |
| 高风险 | 支付、客户数据导出、密码管理器、生产控制台、邮件发送 | 不要接,或只在隔离环境临时接 |

> 可截图判断:**MCP 省的是接外部工具的成本,但每接一个 server,都是在扩大 agent 的权限边界。**

| 你要做的事 | 优先选 | 原因 |
| :-- | :-- | :-- |
| 一次性调用一个公开 API | API CLI / curl | 轻,不扩大长期权限边界 |
| 重复查内部资料或 issue | **MCP** | 让 agent 直接读上下文 |
| 固定的数据清洗流程 | shell script / Workflow | 可审计、可复现、少 token |
| 需要网页登录、点按钮、看页面状态 | 浏览器 / Computer Use 类工具 | MCP 不是 GUI 自动化 |

验收这一章 —— 主线那一次接线,你自己也要做成:

- 我接上了一个只读 GitHub MCP,token 只给了只读 scope。

- 我用它回答了一个光看终端答不了的问题,并抽查了两个 issue 号核对。

- 我看到了它调用的 tool 名和来源 server,确认不是凭空编。

- 写类工具进了 denylist,这个 server 现在只能读。

- 我知道项目级 .warp/.mcp.json 不会自动启动,重启后要重新批准。

- 下一个想接的 server,我会先跑一遍接入审查模板。

> 能连的是接口,
> 该连的是判断

## 引用与参考

01 · Warp Docs · Model Context Protocol (MCP) —— 截至 2026-08-06:MCP servers 用标准接口给 Warp 本地 agent 暴露工具和数据源;支持 CLI command server 与 Streamable HTTP / SSE URL server、自定义 headers、环境变量;入口:Settings > Agents > MCP servers、Drive Personal > MCP Servers、命令面板「Open MCP Servers」;OAuth 服务器首次启动弹授权窗;2026-07-31 起,工具确认面板会显示正在运行的是哪个 tool、来自哪个 server。  (Warp Docs · MCP)
02 · Warp Docs · MCP security behavior —— 全局 Warp file-based servers 默认 auto-spawn;第三方全局 servers 需显式开启「Auto-spawn servers from third-party agents」;项目级 servers 永不自动启动、会话级生效(重启后重新批准);MCP 配置编辑需要批准;共享时 env 值会被 scrub,队友各自重填;日志可能含 token,分享前先清理;相对路径命令要显式设 working_directory。  (Warp Docs · MCP security)
03 · Warp Docs · Agent Profiles & Permissions —— 可针对每个 MCP 服务器选择「Agent decides」、allowlist 或 denylist;denylist 优先于 allowlist 与「Agent decides」,命中必须人工批准(详见第八章「管住它」)。  (Warp Docs · Profiles & Permissions)

---

*接外部 · 接一个真数据源,完成一次查询 · Warp · 一台终端形状的元工具 · Aklman 著 · CC BY-NC-ND 4.0 · https://library.aklman.com/books/warp/07-mcp*
