ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

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

Skyvern MCP 集成指南:把 AI 应用接入浏览器自动化 Skyvern MCP 集成指南把 AI 应用接入浏览器自动化【免费下载链接】skyvernAutomate browser based workflows with AI项目地址: https://gitcode.com/GitHub_Trending/sk/skyvern导读Skyvern 的 MCPModel 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。接入方式有两种对应不同的运行形态本地 Skyvern Server使用你自己的 LLM 配置驱动 SkyvernMCP 服务器通过 stdio 与本地 Skyvern 服务通信Skyvern Cloud在 app.skyvern.com 注册账号从设置页获取 API KeyMCP 服务器以 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命令。快速启动三步安装pip install skyvern配置运行配置向导skyvern init引导你选择连接 Skyvern Cloud 还是本地版 Skyvern可选启动本地服务skyvern run server——仅在本地模式下需要skyvern init是一个交互式命令其注册位于 skyvern/cli/commands/init.pyregister_lazy_command(init, skyvern.cli.init_command, ...)。在原文档基础上skyvern/cli/mcp_tools/README.md 还提供了等价的快捷方式skyvern setup claude-code # 直接为 Claude Code 配置 skyvern setup # 其他编码 Agent 的通用配置支持的应用与配置方式skyvern init与skyvern setup可以帮助你完成以下应用的 MCP 配置对应实现见 skyvern/cli/setup_commands.py 中的setup_claude_code、setup_claude、setup_cursor、setup_windsurf等函数CursorWindsurfClaude DesktopOpenCode通过skyvern setup opencode配置使用 API Key 认证可避免 OAuth 回调超时任意自定义 MCP 应用本地模式为 Claude Code 等客户端配置 stdio MCPsetup_mcp见 skyvern/cli/mcp.py是skyvern init/skyvern setup中 MCP 配置的核心逻辑。在本地localTrue模式下它会为 Claude Code、Claude Desktop、Cursor、Windsurf 逐个写入 stdio 类型的 MCP 配置让这些客户端直接与 localhost 上的 Skyvern 服务通信。本地配置的底层由_build_local_mcp_entryskyvern/cli/setup_commands.py生成其要点是始终使用当前激活的解释器路径sys.executable保证本地 venv 与 editable 安装都能直接工作不依赖 PATH 上的skyvern二进制自动写入SKYVERN_BASE_URL、SKYVERN_API_KEY等环境变量如果指定了browser_type或browser_remote_debugging_url会同步写入BROWSER_TYPE与BROWSER_REMOTE_DEBUGGING_URL环境变量用于接入本地浏览器画像或远程调试地址。云端模式HTTP 类型的 MCP 配置云端配置由_build_remote_mcp_entryskyvern/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:8000SKYVERN_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 传输方式stdio、sse或streamable-http--scopeallMCP 工具范围all、operate、build、browser、lean详见下文--host127.0.0.1HTTP 传输的监听地址需要对外监听时显式传入0.0.0.0--port8000HTTP 传输的端口--path/mcpHTTP 端点的路径--stateless-http/--no-stateless-http启用HTTP 传输是否使用无状态语义stdio 下忽略--verbose/--no-verbose关闭是否返回完整工具响应含sdk_equivalent、browser_context、timing 等字段--browser-extension/--no-browser-extension关闭是否启动中继relay用于通过 Skyvern 浏览器扩展控制 Chrome该选项仅支持--transport stdio从源码还可以看到几个值得注意的实现细节HTTP 传输的中间件链依次是_ServerCardMiddleware在/.well-known/mcp/server-card.json暴露 MCP Server Card便于客户端自动发现、OriginValidationMiddlewareOrigin 校验浏览器来源的请求仅允许 loopback 与 Claude 来源防止恶意页面借用合法 API Key、MCPAPIKeyMiddlewareAPI 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运行、监控已存在的自动化workflow、schedule、folder、scriptbuild编排author工作流operate全部 block_discovery、inspection、ai_powered、session、statebrowser直接浏览器控制browser_primitive、tab_management、session、browser_profile、inspectionlean精简浏览器面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.pyapply_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 在相关网站执行检索并将结果文件下载到本地。这些场景共同说明一件事借助 MCPAI 编码工具不再局限于读写代码仓库而是可以真正「上网办事」。工具全景供 AI 应用调用的 75 工具虽然原文档没有逐一列举但 skyvern/cli/mcp_tools/README.md 对 MCP 工具面做了完整归类这里按类别列出方便在配置后快速了解可用的能力工具具体实现在 skyvern/cli/mcp_tools 目录下如browser.py、workflow.py、session.py、credential.py等浏览器会话Browser Sessionsskyvern_browser_session_create、skyvern_browser_session_close、skyvern_browser_session_list、skyvern_browser_session_get、skyvern_browser_session_connect浏览器画像Browser Profilesskyvern_browser_profile_create、skyvern_browser_profile_list、skyvern_browser_profile_get、skyvern_browser_profile_update、skyvern_browser_profile_delete浏览器动作Browser Actionsskyvern_act自然语言指令、skyvern_navigate、skyvern_click、skyvern_type、skyvern_hover、skyvern_scroll、skyvern_select_option、skyvern_press_key、skyvern_drag、skyvern_file_upload、skyvern_wait数据提取与校验Data Extraction Validationskyvern_extract结构化 JSON 输出、skyvern_screenshot、skyvern_find、skyvern_validate、skyvern_evaluate执行 JavaScript、skyvern_get_html、skyvern_get_value、skyvern_get_styles认证与凭据Authentication Credentialsskyvern_login、skyvern_credential_list、skyvern_credential_get、skyvern_credential_delete以及skyvern_onepassword_*、skyvern_bitwarden_*系列支持 Skyvern vault、Bitwarden、1Password、Azure Key Vault并内置自动 2FA/TOTP 处理标签页与框架Tabs Framesskyvern_tab_new、skyvern_tab_list、skyvern_tab_switch、skyvern_tab_close、skyvern_tab_wait_for_new、skyvern_frame_list、skyvern_frame_switch、skyvern_frame_main网络与控制台Network Console Inspectionskyvern_console_messages、skyvern_network_requests、skyvern_network_request_detail、skyvern_network_route、skyvern_network_unroute、skyvern_get_errors、skyvern_har_start、skyvern_har_stop、skyvern_handle_dialog浏览器状态与存储Browser State Storageskyvern_state_save、skyvern_state_load、skyvern_get_session_storage、skyvern_set_session_storage、skyvern_clear_session_storage、skyvern_clear_local_storage、skyvern_clipboard_read、skyvern_clipboard_write工作流Workflowsskyvern_workflow_create、skyvern_workflow_list、skyvern_workflow_get、skyvern_workflow_run_list、skyvern_workflow_run、skyvern_workflow_status、skyvern_workflow_retry、skyvern_workflow_update、skyvern_workflow_delete、skyvern_workflow_cancel、skyvern_workflow_update_folder工作流构建块Workflow Building Blocksskyvern_block_schema、skyvern_block_validate——覆盖 23 种块类型用于编排多步自动化脚本缓存Cached Scriptsskyvern_script_list_for_workflow、skyvern_script_get_code、skyvern_script_versions、skyvern_script_deploy、skyvern_script_fallback_episodes组织管理Organizationskyvern_folder_create、skyvern_folder_list、skyvern_folder_get、skyvern_folder_update、skyvern_folder_delete在多个配置之间切换如果需要在多个 API Key 或环境本地/云端之间切换不必手动编辑配置文件直接使用skyvern mcp switch该命令与skyvern init/skyvern setup共享同一套配置解析与写入逻辑见 setup_commands.py 文件头注释以及 skyvern/cli/mcp_commands.py。Glama 发布配置容器化 ReleaseGlama 的「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 Chromiumplaywright install --with-deps chromium与 Bitwarden CLIbitwarden/cli2025.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 配置步骤认领服务器本仓库已包含 glama.json授权维护者可以认领Skyvern-AI/skyvern条目指定构建镜像在 Glama 的 Dockerfile 管理页面将构建指向Dockerfile.glama即本目录的 integrations/mcp/Dockerfile保持默认命令除非 Glama 明确要求 HTTP 传输否则保持默认命令——镜像默认以 stdio 方式运行python -m skyvern run mcp配置云端 API Key可选如果你希望托管的 Glama release 使用 Skyvern Cloud 的浏览器会话需要在 Glama 中添加真实的SKYVERN_API_KEY密钥。否则容器会以本地嵌入式embedded模式启动这足以用于检查但不适合云端的浏览器会话部署并发布等待检查通过后在服务器管理界面使用 Glama 的「Make Release」操作发布。与官方 MCP Registry 的关系如果你同时要向官方 MCP Registry 发布请将其视为独立步骤官方 Registry 基于包元数据与server.json而 Glama 的发布是基于容器的。两者互不替代。常见问题与排错结合原文档与源码将接入过程中最常遇到的问题整理如下问题现象原因与处理浏览器工具返回BrowserNotAvailable使用远程/无状态端点时未先创建会话。先调用skyvern_browser_session_create并在每次浏览器工具调用中传入browser_session_idopencode mcp auth Skyvern报 OAuth 回调超时改用 API Key 认证skyvern login后执行skyvern setup opencode且之后不要再运行opencode mcp auth本地 stdio 模式找不到skyvern命令配置中使用sys.executablePython 解释器路径-m skyvern run mcp方式而非依赖 PATH 上的二进制见_build_local_mcp_entry本地运行提示 Python 版本不支持使用 Python 3.113.11,3.15环境安装端口被占用skyvern run server默认端口 8000skyvern 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),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进