mcpField
S
Steel MCP Server

Steel MCP Server

本地服务
github.com/steel-dev浏览器自动化581 周前更新

关于 Steel MCP Server

Steel MCP Server 是一个 MCP 服务,让 Claude、Cursor 等 MCP 客户端通过 Steel 托管的云端 Chrome 浏览网页。适合需要读取受限页面、填写表单或截图的用户,并可在登录或验证码处将浏览器交给人工接管。

主要功能

  1. 01读取被普通 fetch 拦截的页面
  2. 02基于无障碍树的元素引用操作
  3. 03截图与 PDF 导出
  4. 04会话诊断与人工接管
  5. 05提示注入内容过滤与凭据脱敏

适用场景

  1. 01读取页面并总结价格表
  2. 02在多个商店之间比较商品价格
  3. 03登录账户后查看账单并交由人工处理验证码
  4. 04填写申请表并在本地选择附件

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"steel": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
启动命令npx -y @smithery/cli

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@smithery/cli

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Steel MCP Server

Release CI License: MIT Node

让 Claude、Cursor 或任何 MCP 客户端都能使用云端真实的 Chrome。读取会阻止普通 fetch 的网页、填写表单、截取屏幕截图;遇到需要人工处理的登录或 CAPTCHA 时,还可以把浏览器交给用户。浏览器由 Steel 运行。

状态: 3.0.0。从 Releases 下载。 此项目尚未发布到 npm。mcp.steel.dev 目前尚未上线。

安装

你需要一个 Steel API 密钥。免费套餐足以供你试用。

Claude for macOS or Windows

下载 steel-mcp-2.0.1.mcpb 并打开。Claude 会安装它并要求你提供 Steel API 密钥。无需安装 Node。

替换已安装的软件包后,请等安装程序完成,再退出并重新打开 Claude,然后开始新对话,以便 Claude 读取新的工具目录。

Claude Code
claude mcp add steel -e STEEL_API_KEY=your-steel-api-key -- npx -y github:steel-dev/steel-mcp-server

首次运行时会克隆并构建服务,大约需要一分钟。之后运行会立即启动。

Cursor、VS Code 和其他 MCP 客户端

将以下内容添加到客户端的 MCP 配置中:

{
  "mcpServers": {
    "steel": {
      "command": "npx",
      "args": ["-y", "github:steel-dev/steel-mcp-server"],
      "env": { "STEEL_API_KEY": "<your-steel-api-key>" }
    }
  }
}

如果要从本地检出目录运行,npm install 会构建服务;将 command 指向 node,并将 args 指向 /absolute/path/to/steel-mcp-server/dist/stdio.js。

自托管 steel-browser

运行 steel-browser 镜像,并设置 STEEL_LOCAL=true,而不是使用 API 密钥。无需密钥,也不会发送密钥。自托管 Steel 一次只运行一个浏览器会话,不提供托管代理、浏览器配置文件、托管凭据或 CAPTCHA 求解功能;请求这些功能的工具会给出明确说明。

团队共享端点

dist/hosted.js 通过 Streamable HTTP 提供相同的工具,每位调用者使用自己的 Steel 密钥。Claude Code 可直接连接;Claude Desktop 需要 mcp-remote 桥接程序。部署、Redis、追踪和客户端代码示例见 docs/HOSTING.md。

你可以提出的请求

请求处理方式
“读取此网页并总结价格表。”调用一次 steel_scrape。无需浏览器会话,也无需释放资源
“比较这款产品在这三家店的价格。”执行三次无状态读取;如果某家店需要 JavaScript 来渲染页面,则使用会话
“登录我的账户并查看上个月的发票。”创建会话并获取页面快照;遇到登录页面时将浏览器交给你。服务绝不会猜测密码
“根据我的简历填写这份申请。”Agent 填写普通字段,然后通过 steel_session_handoff 让你在同一浏览器中从本地选择简历
“截取这篇文章顶部的屏幕截图,用于幻灯片。”调用一次 steel_screenshot;图片足够小时会内嵌显示,并始终提供下载链接
“上次浏览器会话发生了什么?”steel_session_diagnostics 会读取最近释放的会话。不会启动新的浏览器

工作原理

  • 先读取,必要时再浏览。 steel_scrape 可以回答有关页面的大多数问题,而且不会启动计费会话。只有在需要交互时才会创建会话,并在任务完成后释放。
  • 操作元素,而非像素。 steel_snapshot 和 steel_find 会将页面读取为无障碍树,并为可定位的元素提供 @eN 引用。steel_act 会根据引用点击、输入和填写。截图供人查看和进行视觉检查,绝不用来定位目标。
  • 操作会报告发生了哪些变化。 点击操作会返回页面是否发生导航、DOM 是否改变或焦点是否移动。如果没有任何变化,响应会明确说明,而不会声称操作成功。引用失效时,错误会说明原因以及接下来应调用什么工具。
  • 敏感环节由人来处理。 在支持 MCP Apps 的宿主中(包括 Claude),运行中的浏览器会内嵌显示在对话中。接管可让你操作浏览器,以完成登录、CAPTCHA 验证、付款或访问本地文件;交还则会把浏览器还给 Agent,随后 Agent 会重新读取页面再继续。遇到登录墙和 CAPTCHA 验证时,会自动触发交接。保存的浏览器配置文件和托管凭据会通过 steel_session_options 发现,绝不会猜测。详情请见 docs/SESSIONS.md。
  • 页面内容是数据,不是指令。 从页面读取的所有内容都会放在 <untrusted-page-content> 块中,其中的隐藏文本和其他提示词注入载体都会被剥除。密码和凭据会在进入响应或日志前进行遮盖。

工具

默认的 browse 配置会公开 16 个工具。STEEL_PROFILE=scrape 只会公开前 3 个工具,这些工具绝不会启动浏览器。

完整列表
工具功能
steel_scrape读取预算范围内的页面及有限数量的链接和元数据。不会启动浏览器会话
steel_screenshot为人截取 URL 的画面,或为视觉检查截取实时会话画面;URL 截图支持代理
steel_pdf将页面渲染为 PDF 并返回链接;支持代理
steel_session_create启动可供交互的浏览器会话
steel_session_release关闭会话并停止计费
steel_navigate让会话打开指定 URL
steel_snapshot将页面读取为包含 @eN 引用的无障碍树
steel_find按文本、安全正则表达式或角色定位元素,无需读取整个页面
steel_act点击、输入、填写表单、选择、悬停、滚动、按键、返回、关闭覆盖层
steel_wait_for等待指定文本、选择器或 URL
steel_session_diagnostics读取会话活动记录,或重新发现此凭据的有效句柄;不会启动浏览器
steel_session_handoff暂停会话,让人独占控制同一浏览器,然后将控制权交还给 Agent
steel_session_replay仅在明确请求时,返回已结束会话的 Steel 控制面板链接
steel_batch在一次调用中运行已知的可逆步骤;登录、付款或最终确认前会交由人处理
steel_session_options规划非默认会话,并发现已保存的配置文件 ID 或托管登录命名空间
steel_session_live_view向内嵌查看器提供连接详情。宿主会将其对模型隐藏
## 配置
变量默认值含义
STEEL_API_KEYSteel Cloud 必需。绝不会发送到可自托管的部署
STEEL_LOCALfalsetrue 会运行本地 steel-browser,并免除 API 密钥要求
STEEL_BASE_URLhttps://api.steel.devSteel REST 基础 URL。末尾是否带 /v1 均可
STEEL_PROFILEbrowsebrowse 或 scrape
STEEL_SESSION_TIMEOUT_MS900000默认的不可变会话生命周期。创建请求最长可选择 24 小时,但不得超过账户上限
STEEL_INACTIVITY_TIMEOUT_MS600000空闲释放时间。足以完成交接,因此闲置的浏览器可运行约 10 分钟
STEEL_MAX_SESSIONS10每个凭据允许的活动会话数加待创建会话数;使用 Redis 时会跨副本强制执行
STEEL_CONNECT_URLwss://connect.steel.devCDP 端点;自托管时根据基础 URL 推导

日志以结构化 JSON 格式写入 stderr;stdout 只输出 JSON-RPC。托管端点有自己的变量,详见 docs/HOSTING.md。

故障排除

网站返回 403 或显示质询页面。 这是机器人检测,并非错误。错误信息会指出服务商以及一个后续尝试方案;每次只更改一项。steel_session_diagnostics 会显示发生了什么。

托管代理或 CAPTCHA 求解因付款错误而失败。 在 Launch 计划中,这些功能需要 $10 的已验证付费余额;免费额度不计入。

@eN 引用失效。 错误会说明原因:页面已导航、包含该元素的框架加载了新文档、节点已被移除,或元素的角色或名称发生了变化。错误还会说明应调用什么来恢复。

点击后提示没有任何变化。 点击很可能落在了其他位置。如果覆盖层遮挡了目标,错误会指出覆盖层:使用 dismiss_overlays 调用 steel_act,然后重试。如果目标位于框架内,响应会说明该框架未被观察到;请重新获取快照,而不要再次点击。

会话似乎消失了。 Steel 会在会话 10 分钟没有活动后释放会话,也会在计划规定的硬性时限到达时释放。只有在需要再次交互时才创建新会话;若要读取旧活动记录,请使用其 dashboard UUID 调用 steel_session_diagnostics,或不带 ID 调用以查看最新记录。

调用 steel_session_create 时出现“Concurrency limit reached”。 你的 Steel 计划允许同时运行的浏览器数量少于当前已打开的数量。忘记释放的会话也会计入;steel_session_release 可立即释放一个会话。

扩展启动失败,并显示有关 STEEL_API_KEY 的消息。 密钥没有到达服务端。请在 Claude 中打开扩展的设置并重新输入密钥;该字段为只写,因此空白字段看起来和已填写的字段一样。

请求了跟踪,但无法启动。 桌面端软件包不包含 OpenTelemetry 导出器堆栈。服务端会记录一次此情况,然后正常提供服务;从源码检出后,可以安装 @opentelemetry/sdk-node 和 @opentelemetry/exporter-trace-otlp-http。

安全与隐私

服务端不保留任何自身数据。它会将工具调用指定的 URL 和页面交互发送给运行浏览器的 Steel,并返回页面内容。页面内容会传递给你的 MCP 客户端,不会存储、记录或转发到其他地方。不会收集任何对话信息,除非你使用标准的 OTEL_* 变量配置遥测导出器,否则不会加载任何遥测导出器。Steel 对其运行的浏览器会话的处理方式详见 Steel 隐私政策。

网页可能包含提示词注入,过滤机制无法将其全部移除。请审查会提交数据、进行购买或更改账户的浏览器操作。威胁模型和当前缓解措施见 RESEARCH.md §7。请按照 SECURITY.md 中的说明报告漏洞,不要在公开问题中报告。

开发

npm run build
npm run typecheck
npm run lint
npm test               # unit + integration
npm run budget         # tools/list byte budget per profile
npm run conformance    # MCP conformance suite
npm run test:browser   # runs the inline viewer and the frame snapshot in a real Chrome
npm run test:e2e       # starts, waits for and tears down the real-browser stack

CLAUDE.md 记录了工作规则;本项目采用 TDD,因此每项更改都从一个失败的测试开始。RELEASING.md 说明了这个软件包会发布哪些内容:桌面套件、容器映像和托管服务。NOTES.md 记录了针对 Steel API 和 Chrome 的测量结果,RESEARCH.md 则记录了设计背后的决策。

欢迎贡献:请创建分支,然后提交拉取请求,说明更改内容及原因。报告错误时,请创建 issue,并注明你调用的工具和错误文本。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。