Skip to content

从想法到作品 / 章节 06

第六章|用 MCP 让 Agent 真正操作作品 ​

读完这一章,你可以

连接浏览器工具,把检查方法变成真实操作与结果。

上一章我们准备了一份游戏检查 Skill。它已经说明先看什么、怎样检查、如何记录。但执行这些步骤,还需要能够打开网页、点击按钮和读取结果的能力。

如果你使用的 Agent 已有浏览器工具,可以直接用现有工具完成。想再接入一个外部工具时,可以通过 MCP。我们用微软维护的 Playwright MCP作为案例,把“有一套检查方法”接到“能实际操作页面”。

先看一次连接里谁在做什么 ​

想象你对 Agent 说:“打开当前游戏,检查开始和暂停。”其中有几层关系:

text
你提出任务
    ↓
Agent 决定下一步需要什么操作
    ↓
当前应用通过 MCP 与 Playwright 服务通信
    ↓
服务操作浏览器,返回页面信息和操作结果
    ↓
Agent 根据结果继续检查或报告问题

承载 Agent 的应用通常称为 host,它通过客户端连接 MCP 服务。服务可以提供工具和数据等能力。需要时可以回看浏览器工具与 MCP。

对我们当前的目标来说,先抓住一个重点:模型决定调用什么,具体工具执行动作并返回结果。连上一个服务之后,要继续确认它提供了什么能力,以及 Agent 怎样使用。

为什么先选浏览器案例 ​

浏览器操作的结果比较直观。你能看到页面是否打开、按钮是否点击、界面是否改变;同时还可以检查控制台里的错误。它与前面的试玩直接相连。

Playwright MCP 提供页面导航、结构快照、点击、截图和日志等工具。我们先用这些基本能力,不急着配置一大批服务。等它解决了眼前的检查任务,再根据新的需求扩展。

MCP 也可以连接文档、数据库或其他系统。每次选择服务时,都先说清楚它要补哪一项能力。当前的问题是操作游戏,所以从浏览器开始。

先读配置,再把它填进去 ​

先按工具准备安装 Node.js,运行 node --version,确认版本不低于 18。下面的配置使用 Microsoft Edge;先确认电脑上已经安装 Edge,服务会用它打开页面。

配套文件 playwright.json采用常见的服务配置结构:

json
{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "--registry=https://registry.npmmirror.com",
        "-y",
        "@playwright/mcp@latest",
        "--browser",
        "msedge"
      ]
    }
  }
}

先理解它的意思:服务名是 playwright;command 是要运行的程序;args 是交给它的参数。这里由 npx 启动指定的软件包;--registry 指定国内 npm 镜像,首次运行从那里下载;--browser msedge 指定使用已安装的 Edge。

这属于在本机启动的服务,常见通信方式叫 stdio。有些服务运行在远端,需要填 URL,可能还要完成认证。不要把远程地址填进本地命令栏;先看该服务给出的接入方式。

在 ZCode 中添加并确认连接 ​

打开设置中的 MCP 服务管理,添加一个当前项目使用的服务。可以在表单中填名称、启动方式、命令和参数,也可以按完整配置入口导入 JSON。具体入口见 ZCode MCP 文档。

配置完成后启用服务,查看连接状态和可用工具。先找是否出现页面导航、页面快照、点击等浏览器能力。让 Agent 列出这次任务可以使用的浏览器工具,也是一个容易理解的确认方式。

服务显示在线,是连接这一环完成;接下来还要进行一次最小调用,确认它能按预期工作。先让它打开一个普通页面并读取标题,再进入我们的游戏,能把服务问题与项目问题分开。

让工具真的操作一次

Agent MCP
打开页面
读取控件
点击开始
点击暂停
已返回 · 暂停中
127.0.0.1:8000
开始暂停
正在打开

为本地游戏准备一个地址 ​

单文件游戏可以在自己的浏览器里直接打开。交给自动化工具时,我们给它一个本地 HTTP 地址,便于工具访问同一份作品。

在 snake-lab 目录中,通过终端运行:

bash
python3 -m http.server 8000 --bind 127.0.0.1

Windows 上如果使用 Python 启动器,可以改用:

powershell
py -m http.server 8000 --bind 127.0.0.1

保持这个终端运行,在浏览器访问 http://127.0.0.1:8000/。目录中有 index.html 时,通常直接展示它。127.0.0.1 指当前电脑,8000 是这个服务监听的端口;命令结束后,这个地址也就暂时不可访问。

终端在这里承担了一个明确任务:把项目文件提供给浏览器读取。你可以让 Agent 帮忙启动,并告诉你它运行在哪个目录、怎样停止。

第一次调用:先观察页面 ​

text
请使用已连接的浏览器工具打开 http://127.0.0.1:8000/。
先读取页面结构,找出开始、暂停和重开按钮,说明当前可执行哪些操作。

Playwright MCP 主要使用结构化页面信息定位元素。截图适合辅助看外观,按钮操作则应依据页面快照中的元素信息。

如果快照中看不到某个控件,可以先检查页面是否加载、控件是否有明确文字或标签。有些游戏把整个界面都画在画布里,内部元素不会自动变成普通按钮;此时让 Agent 根据实际结构选择检查方式,必要时改善控件表达。

这里又出现了一个按需学习的机会:为了让作品更容易被操作和检查,我们开始关心标签、结构和可访问名称。这些知识有了当前用途,再去学就更具体。

把 Skill 和工具接起来 ​

现在再次调用检查技能:

text
$playable-review
当前游戏地址是 http://127.0.0.1:8000/。
请使用浏览器工具检查:开始、暂停、继续和重新开始。
记录操作与结果,再指出最值得优先修改的一项。

Skill 提供方法,MCP 工具提供操作能力。它们的组合可以沿一轮具体检查来理解:读取玩法,安排操作,调用工具,记录变化,整理建议。

观察报告是否对应实际行动。涉及蛇身位置、实时移动等画布内部行为时,可以结合截图、日志、代码与人工试玩。把工具能直接观察的结果与还需要进一步检查的部分分清,下一步任务就更明确。

连接失败时,按层找原因 ​

先看错误发生在哪个位置:

卡在哪里先检查什么
服务启动不了Node.js、命令和参数、包下载、启动日志
服务在线但没有预期工具启用状态、工具列表、当前会话是否刷新
工具调用失败参数、返回错误、浏览器是否启动
页面打不开本地服务是否运行,端口和目录是否正确
页面打开但检查走不下去元素结构、按钮状态、实际操作顺序

这样,你可以先处理连接,而不是反复改游戏代码;也可以确认服务正常后,把注意力放回作品。

换一个任务想一想 ​

如果你想让 Agent 阅读外部文档,再修改项目,它需要什么能力?先说清资料在哪里、怎样认证、希望读取什么、输出用在哪里,再去选择合适的服务。

到这里,我们已经走过一条完整路线:把想法说清楚,借助 Agent 做出第一版,学习需要的知识,继续修改;遇到问题就排查和恢复,重复的方法整理成 Skill,需要的工具通过 MCP 接进来。

给自己的项目留一页记录:当前目标、已有结果、下一项最想做的修改,以及准备怎样检查。后面集中实战,我们就从这一步继续。

接下来可以打开补充教程:在 DSH 中接入模型,通过一次界面配置认识 API 的常见名词。

停一下,检查自己的理解 ​

RECALL / 一分钟回忆

通过 MCP 让 Agent 操作浏览器,哪条链路更准确?

本站点基于 MIT License 发布