关于 extensiondev
extensiondev 是面向扩展开发者和编码 Agent 的 MCP 服务,可构建和调试浏览器扩展。它结合项目脚手架、实时浏览器检查、跨浏览器验证,以及可选的平台发布工具。
主要功能
- 01从 50 多个模板创建项目
- 02以热更新运行扩展
- 03检查 DOM、日志、存储和上下文
- 04通过判定测试预期行为
- 05验证清单并构建发布版本
适用场景
- 01从模板创建浏览器扩展
- 02在运行中的浏览器里调试扩展
- 03检查扩展在不同浏览器中的行为
- 04构建扩展并提交审核
MCP 相关
向 MCP 客户端提供创建、运行、检查、测试和构建浏览器扩展的工具。可选的平台工具支持预览、分享、发布版本和提交应用商店审核。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
23收录的工具列表 · 更新于 今天
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| install | boolean | 否 | 创建后安装依赖项 |
| template | string | 否 | extension.dev 目录中的模板 slug(例如 'react'、'ai-claude'、'content-vue')。extension_templates 可发现这些模板。 |
| parentDir | string | 否 | 要在其中创建项目的目录。默认为 MCP 服务进程的 cwd,而不是调用方的 cwd,因此如果你在意项目创建位置,请务必传入。别名:parent、into。 |
| projectName | string | 是 | 扩展项目的名称(用作目录名)。别名:name。 |
详细介绍
@extension.dev/mcp

为你的 AI Agent 装上浏览器扩展开发之手。35 个 MCP 工具,可在你的机器上搭建脚手架、运行、检查、调试、测试和构建跨浏览器扩展;另有平台通道(私有 Alpha),可用于分享和发布扩展。
claude mcp add extension-dev npx @extension.dev/mcp
兼容 Claude Code、Claude Desktop、Cursor 和任何 MCP 客户端。
extension.dev · 文档 · 模板 · Discord
为什么需要扩展专用 MCP 服务
扩展出错时往往毫无提示:内容脚本始终未注入、面板始终未打开、权限返回 undefined 却没有任何错误。这些工具让 Agent 能查看实时浏览器,从而基于证据进行调试,而不是凭空猜测。
- 搭建脚手架:使用 templates.extension.dev 上的 50 多个模板,或为现有项目添加弹出窗口、侧边栏或内容脚本
- 运行:在 Chrome、Firefox、Edge 和下方列出的所有浏览器中运行支持 HMR 的开发服务器;macOS 上还支持 Safari(暂不支持 HMR)
- 查看:实时 DOM、来自所有扩展上下文的日志、
chrome.storage和已加载扩展列表 - 操作:在任意上下文中执行代码、触发操作按钮和命令、重新加载扩展
- 测试:声明对运行中扩展的预期,并分别获取判定结果
- 发布:验证跨浏览器清单并构建生产版本。在平台通道上,还可分享预览链接、推广构建版本并提交至应用商店
基于 Extension.js 构建,这是 extension.dev 赞助的开源框架。
查看运行效果
浏览器
extension_dev 会在你指定的浏览器中打开扩展。
| Google Chrome | Chromium | Microsoft Edge | Brave | Opera | Mozilla Firefox | Apple Safari |
Chromium 系浏览器和 Firefox 支持 HMR、控制、eval、检查和断言(Firefox 通过其调试器协议和 Agent 桥接实现,不使用 CDP)。Safari 在 macOS 上支持开发和构建,但不支持 HMR 和检查;其支持功能的完整列表见 Safari。此外还支持 Vivaldi、Yandex、Waterfox、Zen 和 Floorp,以及通过路径指定的任何 Chromium 或 Gecko 二进制文件。
客户端
| Claude Code | Claude Desktop | Cursor | VS Code | Codex |
设置
Claude Code
claude mcp add extension-dev -- npx @extension.dev/mcp --features=local,platform
或者将其安装为插件,一步完成 MCP 服务以及 /extension、/extension-add、/extension-debug 和 /extension-publish 命令的安装:
/plugin marketplace add extensiondev/mcp
/plugin install extension-mcp@extensiondev-mcp
Cursor
或者将下面的 .mcp.json 代码块粘贴到 .cursor/mcp.json。
VS Code
code --add-mcp '{"name":"extension-dev","command":"npx","args":["@extension.dev/mcp","--features=local,platform"]}'
或者将其粘贴到 servers 下的 .vscode/mcp.json 中,并在条目中添加 "type": "stdio"。
Codex
codex mcp add extension-dev -- npx @extension.dev/mcp --features=local,platform
或者将其写入 ~/.codex/config.toml,作为 [mcp_servers.extension-dev] 表,并使用相同的 command 和 args。
其他客户端(Claude Desktop 和 .mcp.json)
.mcp.json:
{
"mcpServers": {
"extension-dev": {
"command": "npx",
"args": [
"@extension.dev/mcp",
"--features=local,platform"
]
}
}
}
标志
- 默认情况下,服务会公开其在这台机器上可用的 35 个工具中的 24 个(11 个平台工具处于关闭状态)。
--features=local,platform会启用平台工具组。环境变量:EXTENSION_DEV_FEATURES。 --no-ship会拒绝所有会将内容展示给他人的调用(发布、推广、正式提交、共享预览、撤销)。环境变量:EXTENSION_DEV_NO_SHIP=1。--project <workspace>/<project>会将服务固定到一个项目。环境变量:EXTENSION_DEV_PROJECT。- 当平台操作在桌面环境中返回
approval-required时(非无头环境、非 CI,且在 Linux 上有显示器),服务会在默认浏览器中打开一次审批页面。--no-ship或EXTENSION_DEV_NO_AUTO_OPEN=1会关闭此功能。
调用被拒绝时会返回 E_TOOL_DISABLED,并指出要更改的标志。商店提交和稳定版推广所需的人工审批、每个工具携带的 MCP 注释,以及围绕页面写入文本的 <untrusted-data-ID> 隔离标记,详见服务标志。
遥测
成功搭建脚手架后,extension_create 会向 us.i.posthog.com 发送一个 draft_seeded 事件(模板标识、来源和提交、每个进程随机生成的会话 ID;绝不包含路径或名称),平台工具则会在调用时发送一个每次安装的 ID 标头。设置 EXTENSION_DEV_NO_TELEMETRY=1 或 DO_NOT_TRACK=1 可同时停止这两项。完整载荷见遥测。
搭配技能使用
此服务为 Agent 提供操作能力;@extension.dev/skill 则为其提供判断力:跨浏览器规则、静默失败的注意事项、调试指南和商店检查清单,采用开放的 Agent Skills 格式。此软件包还附带 Claude Code 规则,以及 claude/ 下的四个斜杠命令。
npm i -D @extension.dev/skill
mkdir -p .claude/skills && cp -R node_modules/@extension.dev/skill/skills/extension-dev .claude/skills/
工具
默认启用、且在这台机器上可用的 24 个工具:
| 层级 | 工具 | 描述 |
|---|---|---|
| build | extension_create | 根据模板生成脚手架 |
| build | extension_templates | 浏览 50+ 个模板(list),并读取其中一个的源代码(source) |
| build | extension_docs_search | 按关键字搜索 Extension.js 和 extension.dev 文档 |
| build | extension_add_feature | 为现有项目规划选项页面、弹出窗口、侧边面板、内容脚本、开发者工具面板或新标签页 |
| build | extension_build | 构建生产版本 |
| run | extension_dev | 支持 HMR 的开发服务器 |
| run | extension_start | 构建并启动生产版本(build: false 会启动现有的 dist;outputPath 会启动任意预先构建的未打包目录) |
| run | extension_wait | 轮询开发服务器的就绪契约 |
| run | extension_stop | 停止 dev/start/preview 会话(服务器 + 浏览器) |
| see | extension_manifest_validate | 跨浏览器清单验证 |
| see | extension_analyze | 对磁盘上已构建的扩展进行静态分析 |
| see | extension_inspect | 对运行中的扩展进行深入实时检查(封闭的 shadow root、探针) |
| see | extension_dom_snapshot | 通过 Agent 桥接,对选定标签页或扩展界面进行浅层 DOM 快照 |
| see | extension_screenshot | 截取已打开的扩展界面或页面,并通过会话的调试端口保存为 .png |
| see | extension_list_extensions | 列出已加载的扩展(Chromium 和 Firefox) |
| see | extension_logs | 从所有上下文流式传输日志 |
| see | extension_doctor | 逐项诊断开发会话(就绪契约、端口、令牌、执行器、浏览器) |
| see | extension_theme_verify | 根据 Chrome 实际渲染的颜色验证 Chrome 主题清单 |
| test | extension_assert | 对运行中的扩展声明状态预期,并分别获得一个判定:通过、失败或无法确定 |
| act | extension_eval | 在某个上下文中执行求值(extension_dev 需要设置 allowEval: true) |
| act | extension_storage | 读取/写入 chrome.storage |
| act | extension_reload | 重新加载扩展或标签页 |
| act | extension_open | 打开界面(弹出窗口、选项、侧边栏、开发者工具面板、覆盖页面)/触发 action、command |
| browsers | extension_browsers | 检测、列出、安装和卸载浏览器 |
使用 --features=local,platform 时,其中有 11 个会访问 extension.dev 平台(私有 Alpha 版):
| 层级 | 工具 | 描述 |
|---|---|---|
| platform | extension_auth | 在 extension.dev 上通过设备登录单个项目或项目列表,并查看登录状态和退出登录 |
| platform | extension_workspace_create | 通过设备审批,以无头方式创建 extension.dev 工作区;审批者将成为其所有者 |
| platform | extension_project_create | 为已构建的扩展创建 extension.dev 项目,或通过一次设备审批以无头方式创建多个项目 |
| platform | extension_preview_web | 在网页模拟器中渲染构建产物,并生成可分享的链接 |
| platform | extension_shares | 列出你分享过的所有链接,将平台构建产物分享为链接,并永久撤销链接 |
| platform | extension_publish | 为 extension.dev 已持有的构建产物生成可分享的链接(不会上传任何内容) |
| platform | extension_release_promote | 以无头方式将构建产物推送到发布渠道 |
| platform | extension_submit | 通过 extension.dev 提交至商店审核:Chrome、Firefox、Edge 和 Safari |
| platform | extension_release_status | 查看发布渠道、发布历史、近期构建产物,以及商店配置、提交和审核状态 |
| platform | extension_builds | 查看平台上的构建产物(近期构建产物、单个构建产物的制品和完整性信息、其 CI 日志);根据完整性报告验证后将构建包保存到磁盘;启动重新构建;在所有者令牌下通过普通调用更改构建设置;以及添加发布渠道 |
| platform | extension_workspace | 使用任一项目登录信息查看工作区:套餐和限额、项目及其最近的构建产物、用量,以及项目设置 |
开发会话包含控制通道,extension_storage、extension_reload、extension_open 和 extension_dom_snapshot 都通过该通道运行:它仅限本地、同一台机器、同一用户,并且默认开启,除非调用 extension_dev 时设置 allowControl: false。extension_eval 是唯一默认关闭的入口,只有在调用 extension_dev 时传入 allowEval: true 才会开启(这也会启用控制通道)。再次调用不会更改会话的开关:如需更改,请使用所需参数再次调用 extension_dev 并传入 replace: true,这会停止第一个会话。
断言,而非猜测
其他每个工具都会返回一条读数。extension_assert 用于声明预期并返回判定结果。
{
"projectPath": "/path/to/extension",
"expect": [
{ "assert": "background-worker-booted" },
{ "assert": "surface-rendered", "surface": "popup", "selector": "[data-testid=root]" },
{ "assert": "storage-key-present", "key": "settings", "area": "local" },
{ "assert": "console-errors-empty", "context": ["background", "popup"] },
{ "assert": "content-script-injected", "url": "https://shop.example/cart" }
]
}
每项检查都会返回 pass、fail 或 inconclusive,只有所有检查都通过,整个运行才算通过。inconclusive 表示该平台目前无法验证这个问题;检查结果会附带 settledBy,指出哪些证据可以回答该问题:内容脚本只有在自己写入的行上才会通过;对于从未构建过的会话,“没有控制台错误”这一检查结果为 inconclusive;如果会话拒绝读取(在使用 allowControl: false 启动的会话中读取 chrome.storage),结果也会是 inconclusive,而非失败。
Safari
Safari 开发会话与其他引擎使用同一座桥:在 Extension.js 4.1.21 或更高版本上,使用 browser: "safari" 调用 extension_dev(需 macOS 和 Xcode),即可构建应用、打开应用、在每次保存时重新加载,并串流日志。Safari 的 MV3 后台 CSP 会阻止 eval;extension_inspect 没有 CDP 或 RDP 路径;打开标签页则需要 safaridriver 会话。相关限制列于 Safari。
Platform(私有 Alpha)
这 11 个平台工具可将 Agent 连接到 extension.dev。只有在启动服务时使用 --features=local,platform,这些工具才会启用;分享、发布、推广和提交都需要登录:
npx @extension.dev/mcp login --project <workspace>/<project>
你可以在 extension.dev/device 批准代码;GitHub 令牌不会传到你的机器上,项目级令牌会存储在本地,不会返回给 Agent,且最长有效期为 7 天。extension_preview_web 使用 share: true 时,会上传刚刚构建的内容,并返回一个链接,用于在网页模拟器中渲染这些字节,同时提供其 expiresAt 和 revokeUrl。extension_publish 会返回 extension.dev 已保存构建的可分享 URL;extension_submit 会通过 extension.dev 将已构建的扩展提交审核,extension.dev 会保管你的商店凭据,且该工具默认执行试运行。
![]() | ![]() | ||
|---|---|---|---|
| Chrome 网上应用店 | Firefox 附加组件 | Edge 附加组件 | App Store |
详情、审批流程以及多个项目的批量登录,请参阅分享进行中的构建、发布不等于提交和登录。
社区
- 加入 extension.dev 的 Discord,获取帮助并提供反馈
- 在 templates.extension.dev 浏览可用于生产环境的模板
- 在 GitHub 关注该平台的公开软件包
- 在 GitHub 报告 Extension.js 框架问题
许可证
Apache-2.0,版权所有 © 2026 Cezar Augusto 和 extension.dev 合作者。请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。



