Skyvern MCP 集成指南:把 AI 应用接入浏览器自动化
2026/9/13 5:37:43 网站建设 项目流程

Skyvern MCP 集成指南:把 AI 应用接入浏览器自动化

【免费下载链接】skyvernAutomate browser based workflows with AI项目地址: https://gitcode.com/GitHub_Trending/sk/skyvern

导读

Skyvern 的 MCP(Model Context Protocol)服务器实现,将浏览器能力以标准 MCP 工具的形式暴露给任意 AI 应用,使其可以直接完成填表、文件下载、网页信息检索等浏览器操作。本文以 integrations/mcp/README.md 为骨架,结合仓库源码,完整讲解 Skyvern MCP 的两种接入方式(本地服务与 Skyvern Cloud)、快速启动流程、主流 AI 编码工具的配置方法、MCP 工具面(scope)体系以及针对 Glama 的容器化发布流程,帮助读者把 Claude、Cursor、Windsurf、OpenCode 等工具无缝接入 Skyvern 的浏览器自动化能力。

Skyvern MCP 是什么

Skyvern MCP 服务器的核心价值,是把「浏览器」变成 AI 应用的一个可编程工具集。通过 MCP 协议,AI 应用可以调用 Skyvern 暴露的工具,完成诸如:

  • 填写表单并提交
  • 下载文件
  • 在网页上检索与汇总信息
  • 管理多标签页、iframe、浏览器会话与浏览器画像
  • 创建、运行和监控完整的工作流(Workflow)

从仓库实现看,这套能力集中定义在 skyvern/cli/mcp_tools 目录下,基于 FastMCP 框架构建(见 scopes.py 中的from fastmcp import FastMCP),覆盖 75+ 个 MCP 工具(见 skyvern/cli/mcp_tools/README.md)。

接入方式有两种,对应不同的运行形态:

  1. 本地 Skyvern Server:使用你自己的 LLM 配置驱动 Skyvern,MCP 服务器通过 stdio 与本地 Skyvern 服务通信;
  2. Skyvern Cloud:在 app.skyvern.com 注册账号,从设置页获取 API Key,MCP 服务器以 HTTP 方式连接云端,浏览器会话在云端托管。

环境要求与安装

原文档特别强调了一个硬性前提:

⚠️ Skyvern 目前只支持在 Python 3.11 环境中运行。

这一点在 pyproject.toml 中有更精确的体现:requires-python = ">=3.11,<3.15",即 Python 3.11 及以上、3.15 以下的版本均可,3.11 是当前文档承诺的最低且经过充分验证的版本。安装方式为:

pip install skyvern

安装后,CLI 入口由 pyproject.toml 中的[project.scripts]段定义(skyvern = "skyvern.__main__:main"),因此可以直接使用skyvern命令。

快速启动三步

  1. 安装pip install skyvern
  2. 配置:运行配置向导skyvern init,引导你选择连接 Skyvern Cloud 还是本地版 Skyvern
  3. (可选)启动本地服务skyvern run server——仅在本地模式下需要

skyvern init是一个交互式命令,其注册位于 skyvern/cli/commands/init.py(register_lazy_command("init", "skyvern.cli.init_command", ...))。在原文档基础上,skyvern/cli/mcp_tools/README.md 还提供了等价的快捷方式:

skyvern setup claude-code # 直接为 Claude Code 配置 skyvern setup # 其他编码 Agent 的通用配置

支持的应用与配置方式

skyvern initskyvern setup可以帮助你完成以下应用的 MCP 配置(对应实现见 skyvern/cli/setup_commands.py 中的setup_claude_codesetup_claudesetup_cursorsetup_windsurf等函数):

  • Cursor
  • Windsurf
  • Claude Desktop
  • OpenCode(通过skyvern setup opencode配置,使用 API Key 认证,可避免 OAuth 回调超时)
  • 任意自定义 MCP 应用

本地模式:为 Claude Code 等客户端配置 stdio MCP

setup_mcp(见 skyvern/cli/mcp.py)是skyvern init/skyvern setup中 MCP 配置的核心逻辑。在本地(local=True)模式下,它会为 Claude Code、Claude Desktop、Cursor、Windsurf 逐个写入 stdio 类型的 MCP 配置,让这些客户端直接与 localhost 上的 Skyvern 服务通信。

本地配置的底层由_build_local_mcp_entry(skyvern/cli/setup_commands.py)生成,其要点是:

  • 始终使用当前激活的解释器路径(sys.executable),保证本地 venv 与 editable 安装都能直接工作,不依赖 PATH 上的skyvern二进制;
  • 自动写入SKYVERN_BASE_URLSKYVERN_API_KEY等环境变量;
  • 如果指定了browser_typebrowser_remote_debugging_url,会同步写入BROWSER_TYPEBROWSER_REMOTE_DEBUGGING_URL环境变量,用于接入本地浏览器画像或远程调试地址。

云端模式:HTTP 类型的 MCP 配置

云端配置由_build_remote_mcp_entry(skyvern/cli/setup_commands.py)生成,默认指向https://api.skyvern.com/mcp/,并把 API Key 写入x-api-key请求头。

对于只支持 stdio 的客户端(如 Claude Desktop 远程接入场景),_build_mcp_remote_bridge_entry会退化为通过npx mcp-remote桥接的方式,把远程 HTTP 端点包装成 stdio 子进程(见 setup_commands.py)。

手动配置任意 MCP 应用

如果你使用的是其他支持 MCP 的应用,可以直接复制以下 JSON 配置模板(来自原文档):

{ "mcpServers": { "Skyvern": { "env": { "SKYVERN_BASE_URL": "https://api.skyvern.com", # "http://localhost:8000" if running locally "SKYVERN_API_KEY": "YOUR_SKYVERN_API_KEY" # find the local SKYVERN_API_KEY in the .env file after running `skyvern init` or in your Skyvern Cloud console }, "command": "PATH_TO_PYTHON", "args": [ "-m", "skyvern", "run", "mcp" ] } } }

配置项说明:

配置项说明
SKYVERN_BASE_URL云端为https://api.skyvern.com;本地自托管为http://localhost:8000
SKYVERN_API_KEY本地模式下,运行skyvern init后会写入.env文件;云端模式下在 Skyvern Cloud 控制台获取
commandPython 解释器路径(PATH_TO_PYTHON),也可以直接使用skyvern可执行文件
args固定为-m skyvern run mcp,即通过 Python 模块方式启动 MCP 服务器

MCP 服务器启动参数详解

skyvern run mcp命令的定义位于 skyvern/cli/run_commands.py,支持以下参数:

参数默认值说明
--transportstdioMCP 传输方式:stdiossestreamable-http
--scopeallMCP 工具范围:alloperatebuildbrowserlean(详见下文)
--host127.0.0.1HTTP 传输的监听地址;需要对外监听时显式传入0.0.0.0
--port8000HTTP 传输的端口
--path/mcpHTTP 端点的路径
--stateless-http/--no-stateless-http启用HTTP 传输是否使用无状态语义(stdio 下忽略)
--verbose/--no-verbose关闭是否返回完整工具响应(含sdk_equivalentbrowser_context、timing 等字段)
--browser-extension/--no-browser-extension关闭是否启动中继(relay),用于通过 Skyvern 浏览器扩展控制 Chrome;该选项仅支持--transport stdio

从源码还可以看到几个值得注意的实现细节:

  • HTTP 传输的中间件链:依次是_ServerCardMiddleware(在/.well-known/mcp/server-card.json暴露 MCP Server Card,便于客户端自动发现)、OriginValidationMiddleware(Origin 校验,浏览器来源的请求仅允许 loopback 与 Claude 来源,防止恶意页面借用合法 API Key)、MCPAPIKeyMiddleware(API Key 校验);
  • stdio 的生命周期管理run_mcp为 stdio 模式注册了 SIGINT/SIGTERM 处理与 stdin EOF 监听(_start_stdin_eof_watcher),退出时会依次清理浏览器会话、Skyvern 客户端连接与本地浏览器画像,保证宿主进程关闭时不留孤儿进程;
  • 本地组织与 API Key 引导:在本地模式下,skyvern init会通过 skyvern/cli/mcp.py 中的get_or_create_local_organization自动创建域名为skyvern.local的本地组织,并签发一个长期有效的 HS256 JWT 作为 API Key 写入数据库。

OpenCode 远程 MCP 配置(API Key 认证)

如果你在 OpenCode 中执行opencode mcp auth Skyvern遇到OAuth 回调超时,请改用 API Key 认证方式:

skyvern login skyvern setup opencode

该命令会在~/.config/opencode/opencode.json中写入"oauth": false以及你的x-api-key请求头。注意:完成上述操作后不要再执行opencode mcp auth,以免覆盖掉 API Key 配置。

关于无状态远程端点的关键提醒

原文档指出一个容易踩坑的要点:

远程/mcp端点是无状态的(stateless)。请先调用skyvern_browser_session_create创建浏览器会话,并在后续每次浏览器工具调用时传入browser_session_id,否则浏览器工具会返回BrowserNotAvailable

这正是--stateless-http默认开启的原因(见上文参数表):HTTP 传输不会在服务器端维护会话状态,浏览器会话必须由调用方显式创建并逐次传递。

按需裁剪工具面(Tool Scope)

为了把 MCP 安装收敛到单一职责,可以在args中追加--scope参数。原文档与 skyvern/cli/mcp_tools/README.md 给出了五种范围:

Scope适用场景暴露的工具分组
all(默认)完整功能全部工具
operate运行、监控已存在的自动化workflowschedulefolderscript
build编排(author)工作流operate全部 +block_discoveryinspectionai_poweredsessionstate
browser直接浏览器控制browser_primitivetab_managementsessionbrowser_profileinspection
lean精简浏览器面lean(直接操作 + 选择器限定的页面读取)

配置示例(仅启用operate):

{ "mcpServers": { "Skyvern": { "env": { "SKYVERN_BASE_URL": "http://localhost:8000", "SKYVERN_API_KEY": "YOUR_API_KEY" }, "command": "PATH_TO_PYTHON", "args": ["-m", "skyvern", "run", "mcp", "--scope", "operate"] } } }

Scope 的底层实现见 skyvern/cli/mcp_tools/scopes.py:apply_scope先通过 FastMCP 的Visibility变换隐藏所有工具,再按SCOPES字典中的标签集合重新启用对应工具。设计上有两个值得留意的取舍:

  • operate刻意不包含浏览器相关工具,因为它的定位是「运行与监控已有的自动化」,不需要现场打开页面;
  • build必须保留session工具分组,否则其 inspection 与 state 工具将无法获得浏览器实例而报NO_ACTIVE_BROWSER

此外需要注意:--scope只支持本地 stdio 配置;云端(远程)配置固定为all范围(见 setup_commands.py 的_validate_scope_for_transport)。

应用示例

原文档附带三段演示视频,展示了三种典型用法(视频资产托管在 GitHub 外部,仓库内无对应文件,此处仅按原文档描述其场景):

  • Claude 查询 Hacker News 今日热帖:让 Claude 通过 Skyvern 打开 HN 首页并汇总当天热门帖子;
  • Cursor 检索你所在地区的高薪编程岗位:让 Cursor 访问招聘站点并按条件筛选岗位;
  • Windsurf 进行 Form 5500 检索并下载文件:让 Windsurf 在相关网站执行检索并将结果文件下载到本地。

这些场景共同说明一件事:借助 MCP,AI 编码工具不再局限于读写代码仓库,而是可以真正「上网办事」。

工具全景(供 AI 应用调用的 75+ 工具)

虽然原文档没有逐一列举,但 skyvern/cli/mcp_tools/README.md 对 MCP 工具面做了完整归类,这里按类别列出,方便在配置后快速了解可用的能力(工具具体实现在 skyvern/cli/mcp_tools 目录下,如browser.pyworkflow.pysession.pycredential.py等):

浏览器会话(Browser Sessions)skyvern_browser_session_createskyvern_browser_session_closeskyvern_browser_session_listskyvern_browser_session_getskyvern_browser_session_connect

浏览器画像(Browser Profiles)skyvern_browser_profile_createskyvern_browser_profile_listskyvern_browser_profile_getskyvern_browser_profile_updateskyvern_browser_profile_delete

浏览器动作(Browser Actions)skyvern_act(自然语言指令)、skyvern_navigateskyvern_clickskyvern_typeskyvern_hoverskyvern_scrollskyvern_select_optionskyvern_press_keyskyvern_dragskyvern_file_uploadskyvern_wait

数据提取与校验(Data Extraction & Validation)skyvern_extract(结构化 JSON 输出)、skyvern_screenshotskyvern_findskyvern_validateskyvern_evaluate(执行 JavaScript)、skyvern_get_htmlskyvern_get_valueskyvern_get_styles

认证与凭据(Authentication & Credentials)skyvern_loginskyvern_credential_listskyvern_credential_getskyvern_credential_delete,以及skyvern_onepassword_*skyvern_bitwarden_*系列;支持 Skyvern vault、Bitwarden、1Password、Azure Key Vault,并内置自动 2FA/TOTP 处理

标签页与框架(Tabs & Frames)skyvern_tab_newskyvern_tab_listskyvern_tab_switchskyvern_tab_closeskyvern_tab_wait_for_newskyvern_frame_listskyvern_frame_switchskyvern_frame_main

网络与控制台(Network & Console Inspection)skyvern_console_messagesskyvern_network_requestsskyvern_network_request_detailskyvern_network_routeskyvern_network_unrouteskyvern_get_errorsskyvern_har_startskyvern_har_stopskyvern_handle_dialog

浏览器状态与存储(Browser State & Storage)skyvern_state_saveskyvern_state_loadskyvern_get_session_storageskyvern_set_session_storageskyvern_clear_session_storageskyvern_clear_local_storageskyvern_clipboard_readskyvern_clipboard_write

工作流(Workflows)skyvern_workflow_createskyvern_workflow_listskyvern_workflow_getskyvern_workflow_run_listskyvern_workflow_runskyvern_workflow_statusskyvern_workflow_retryskyvern_workflow_updateskyvern_workflow_deleteskyvern_workflow_cancelskyvern_workflow_update_folder

工作流构建块(Workflow Building Blocks)skyvern_block_schemaskyvern_block_validate——覆盖 23 种块类型,用于编排多步自动化

脚本缓存(Cached Scripts)skyvern_script_list_for_workflowskyvern_script_get_codeskyvern_script_versionsskyvern_script_deployskyvern_script_fallback_episodes

组织管理(Organization)skyvern_folder_createskyvern_folder_listskyvern_folder_getskyvern_folder_updateskyvern_folder_delete

在多个配置之间切换

如果需要在多个 API Key 或环境(本地/云端)之间切换,不必手动编辑配置文件,直接使用:

skyvern mcp switch

该命令与skyvern init/skyvern setup共享同一套配置解析与写入逻辑(见 setup_commands.py 文件头注释,以及 skyvern/cli/mcp_commands.py)。

Glama 发布配置(容器化 Release)

Glama 的「release」流程与发布到 PyPI 或官方 MCP Registry 不同:Glama 需要一个可运行的服务器容器,以便它启动 MCP 服务器、检查工具 schema,并在其目录中发布可安装的版本。

为什么需要专门的 Dockerfile

原文档明确指出:

  • 本目录下的专用 integrations/mcp/Dockerfile 用于 Glama 发布流程;
  • 仓库根目录的 Dockerfile 面向完整的 Skyvern 应用栈,启动的是python -m skyvern.forge,对仅用于 Glama MCP 发布的场景来说运行时不正确。

从 integrations/mcp/Dockerfile 的内容可以看到它与根 Dockerfile 的差异:

  • 基于python:3.11-slim-bookworm,并通过uv pip compile生成依赖清单;
  • 内置 Playwright Chromium(playwright install --with-deps chromium)与 Bitwarden CLI(@bitwarden/cli@2025.9.0);
  • 默认命令为 stdio 传输:python -m skyvern run mcp
  • 通过环境变量支持运行时切换:SKYVERN_MCP_TRANSPORT(默认stdio)、SKYVERN_MCP_PATH(默认/mcp)、PORT(默认8000)。当SKYVERN_MCP_TRANSPORT不是stdio时,容器会以--transport <transport> --host 0.0.0.0 --port $PORT --path $SKYVERN_MCP_PATH方式启动 HTTP 传输。

推荐的 Glama 配置步骤

  1. 认领服务器:本仓库已包含 glama.json,授权维护者可以认领Skyvern-AI/skyvern条目;
  2. 指定构建镜像:在 Glama 的 Dockerfile 管理页面,将构建指向Dockerfile.glama(即本目录的 integrations/mcp/Dockerfile);
  3. 保持默认命令:除非 Glama 明确要求 HTTP 传输,否则保持默认命令——镜像默认以 stdio 方式运行python -m skyvern run mcp
  4. 配置云端 API Key(可选):如果你希望托管的 Glama release 使用 Skyvern Cloud 的浏览器会话,需要在 Glama 中添加真实的SKYVERN_API_KEY密钥。否则容器会以本地嵌入式(embedded)模式启动,这足以用于检查,但不适合云端的浏览器会话;
  5. 部署并发布:等待检查通过后,在服务器管理界面使用 Glama 的「Make Release」操作发布。

与官方 MCP Registry 的关系

如果你同时要向官方 MCP Registry 发布,请将其视为独立步骤:官方 Registry 基于包元数据与server.json,而 Glama 的发布是基于容器的。两者互不替代。

常见问题与排错

结合原文档与源码,将接入过程中最常遇到的问题整理如下:

问题现象原因与处理
浏览器工具返回BrowserNotAvailable使用远程/无状态端点时未先创建会话。先调用skyvern_browser_session_create,并在每次浏览器工具调用中传入browser_session_id
opencode mcp auth Skyvern报 OAuth 回调超时改用 API Key 认证:skyvern login后执行skyvern setup opencode,且之后不要再运行opencode mcp auth
本地 stdio 模式找不到skyvern命令配置中使用sys.executable(Python 解释器路径)+-m skyvern run mcp方式,而非依赖 PATH 上的二进制(见_build_local_mcp_entry
本地运行提示 Python 版本不支持使用 Python 3.11(>=3.11,<3.15)环境安装
端口被占用skyvern run server默认端口 8000;skyvern run ui默认端口 8080,可用--force清理占用进程
想缩小 MCP 工具面args中追加--scope operate/build/browser/lean(仅本地 stdio 模式有效)

总结

Skyvern MCP 的价值在于用一套标准协议,把「AI 驱动浏览器自动化」交付给任意 MCP 客户端:本地自托管时通过 stdio 直连、零成本起步;需要托管时可切换到 Skyvern Cloud,通过 HTTP + API Key 认证获得云端浏览器会话。skyvern init/skyvern setup向导负责完成主流 AI 工具的配置写入,--scope体系允许按职责裁剪工具面,而 integrations/mcp/Dockerfile 则支持 Glama 这类容器化发布平台直接启动 MCP 服务器完成检查与发布。对于想要让 Claude、Cursor、Windsurf、OpenCode 等工具真正「会上网」的开发者,这是一个即装即用的接入方案。

【免费下载链接】skyvernAutomate browser based workflows with AI项目地址: https://gitcode.com/GitHub_Trending/sk/skyvern

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询