Back to Browse

Mcp MCP Server

Developer ToolsModerate6.1MCP RegistryLocal
Free

Server data from the Official MCP Registry

Build, run, inspect, and publish browser extensions from any MCP client. 34 tools, 13 browsers.

About

Build, run, inspect, and publish browser extensions from any MCP client. 34 tools, 13 browsers.

Security Report

6.1
Moderate6.1Moderate Risk

This is a local developer tool for scaffolding, running, and debugging browser extensions, and its permissions broadly match that purpose. The main points to be aware of are a local control channel that is enabled by default, opt-out PostHog telemetry, and a partial review because the open.ts file was truncated. No malicious patterns, hardcoded secrets, or unsanitized shell execution were found in the visible code. Supply chain analysis found 2 known vulnerabilities in dependencies (0 critical, 1 high severity). Package verification found 1 issue.

3 files analyzed · 8 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

network_websocket

Check that this permission is expected for this type of plugin.

process_spawn

Check that this permission is expected for this type of plugin.

File System Read

Reads files on your machine. Normal for tools that analyze or process local data.

File System Write

Writes or modifies files on your machine. Check that this is expected for the tool.

env_vars

Check that this permission is expected for this type of plugin.

system_info

Check that this permission is expected for this type of plugin.

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-extensiondev-mcp": {
      "args": [
        "-y",
        "@extension.dev/mcp"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

@extension.dev/mcp Version Downloads Discord

Give your AI agent hands for browser extension development. 34 MCP tools that scaffold, run, inspect, debug, test, and build cross-browser extensions on your machine, plus a platform lane (private alpha) to share and publish them.

claude mcp add extension-dev npx @extension.dev/mcp

Works with Claude Code, Claude Desktop, Cursor, and any MCP client.

extension.dev · Docs · Templates · Discord

Why an MCP server for extensions

Extensions fail silently: content scripts that never inject, panels that never open, permissions that return undefined with no error. These tools give the agent eyes on the live browser, so it debugs from evidence instead of guessing.

  • Scaffold from the 50+ templates behind templates.extension.dev, or add a popup, sidebar, or content script to an existing project
  • Run the dev server with HMR in Chrome, Firefox, Edge and every browser below, plus Safari on macOS (no HMR yet)
  • See the live DOM, logs from every extension context, chrome.storage, and the loaded-extension list
  • Act: evaluate code in any context, trigger the action button and commands, reload the extension
  • Test: state expectations about the running extension and get one verdict each
  • Ship: validate the manifest cross-browser and build for production. On the platform lane: share a preview link, promote a build, and submit to the stores

Built on Extension.js, the open source framework extension.dev sponsors.

Watch it work

Asked to run the extension, the agent starts the dev session, Chrome opens with it loaded, and the agent reports the session, from a real Claude Code session

Browsers

extension_dev opens the extension in the browser you name.

Google ChromeChromiumMicrosoft EdgeBraveOperaMozilla FirefoxApple Safari

The Chromium family and Firefox get HMR, control, eval, inspect and assert (Firefox over its debugger protocol and the agent bridge, no CDP). Safari gets dev and build on macOS, no HMR and no inspect; the full list of what works there is under Safari. Plus Vivaldi, Yandex, Waterfox, Zen and Floorp, and any Chromium or Gecko binary by path.

Clients

Claude CodeClaude DesktopCursorVS CodeCodex

Setup

Claude Code

claude mcp add extension-dev -- npx @extension.dev/mcp --features=local,platform

Or install it as a plugin, the MCP server plus the /extension, /extension-add, /extension-debug, and /extension-publish commands in one step:

/plugin marketplace add extensiondev/mcp
/plugin install extension-mcp@extensiondev-mcp

Cursor

Install MCP Server

Or paste the .mcp.json block below into .cursor/mcp.json.

VS Code

code --add-mcp '{"name":"extension-dev","command":"npx","args":["@extension.dev/mcp","--features=local,platform"]}'

Or paste it into .vscode/mcp.json under servers, with "type": "stdio" on the entry.

Codex

codex mcp add extension-dev -- npx @extension.dev/mcp --features=local,platform

Or write it into ~/.codex/config.toml as a [mcp_servers.extension-dev] table with the same command and args.

Other clients (Claude Desktop and .mcp.json)

.mcp.json:

{
  "mcpServers": {
    "extension-dev": {
      "command": "npx",
      "args": [
        "@extension.dev/mcp",
        "--features=local,platform"
      ]
    }
  }
}

Flags

  • By default the server exposes the 23 of its 34 tools that work on this machine (the 11 platform tools are off). --features=local,platform adds the platform group. Env: EXTENSION_DEV_FEATURES.
  • --no-ship refuses every call that puts something in front of other people (publish, promote, a real submit, a shared preview, a revoke). Env: EXTENSION_DEV_NO_SHIP=1.
  • --project <workspace>/<project> pins the server to one project. Env: EXTENSION_DEV_PROJECT.

A refused call answers E_TOOL_DISABLED with the flag to change. Human approval for store submissions and stable promotions, the MCP annotations every tool carries, and the <untrusted-data-ID> fence around page-written text are described under Server flags.

Telemetry

extension_create sends one draft_seeded event to PostHog at us.i.posthog.com after a successful scaffold (template slug, source and commit, a random per-process session id, never a path or a name), and the platform tools send a per-install id header with their calls. EXTENSION_DEV_NO_TELEMETRY=1 or DO_NOT_TRACK=1 stops both. The full payload is listed under Telemetry.

Pair with the skill

This server gives agents hands; @extension.dev/skill gives them judgment: the cross-browser rules, silent-failure gotchas, debugging playbooks, and store checklist, in the open Agent Skills format. The package also ships Claude Code rules and the four slash commands under claude/.

npm i -D @extension.dev/skill
mkdir -p .claude/skills && cp -R node_modules/@extension.dev/skill/skills/extension-dev .claude/skills/

Tools

On by default, the 23 that work on this machine:

TierToolDescription
buildextension_createScaffold from a template
buildextension_templatesBrowse 50+ templates (list) and read one's source (source)
buildextension_docs_searchSearch the Extension.js and extension.dev docs by keyword
buildextension_add_featurePlan an options page, popup, side panel, content script, devtools panel or new tab page for an existing project
buildextension_buildBuild for production
runextension_devDev server with HMR
runextension_startBuild + launch the production build (build: false launches the existing dist; outputPath launches any prebuilt unpacked directory)
runextension_waitPoll the dev-server ready contract
runextension_stopStop a dev/start/preview session (server + browser)
seeextension_manifest_validateCross-browser manifest validation
seeextension_analyzeStatic analysis of the built extension on disk
seeextension_inspectDeep live inspection of a running extension (closed shadow roots, probes)
seeextension_dom_snapshotShallow DOM snapshot of a chosen tab or extension surface over the agent bridge
seeextension_list_extensionsList loaded extensions (Chromium and Firefox)
seeextension_logsStream logs from every context
seeextension_doctorDiagnose the dev session leg by leg (ready contract, ports, token, executor, browser)
seeextension_theme_verifyVerify a Chrome theme manifest against the colors Chrome actually paints
testextension_assertState expectations about a running extension and get one verdict each: pass, fail, or inconclusive
actextension_evalEvaluate in a context (needs allowEval: true on extension_dev)
actextension_storageRead/write chrome.storage
actextension_reloadReload extension or tab
actextension_openOpen a surface (popup, options, sidebar, devtools panel, override pages) / trigger action, command
browsersextension_browsersDetect, list, install, and uninstall browsers

On with --features=local,platform, the 11 that reach the extension.dev platform (private alpha):

TierToolDescription
platformextension_authDevice login at extension.dev for one project or a list of them, plus login status and logout
platformextension_workspace_createCreate an extension.dev workspace, headless, via device approval; the approver becomes its owner
platformextension_project_createCreate the extension.dev project for a built extension, or several under one approval, headless, via device approval
platformextension_preview_webRender a build in the web emulator, and share it as a link
platformextension_sharesList every link you have shared, share a platform build as a link, and revoke one permanently
platformextension_publishMint a shareable link for a build extension.dev already holds (nothing is uploaded)
platformextension_release_promotePromote a build to a release channel, headless
platformextension_submitSubmit for store review: Chrome, Firefox, Edge and Safari, through extension.dev
platformextension_release_statusRead release channels, release history, recent builds, and store configuration, submission and review state
platformextension_buildsRead the platform's builds (recent builds, one build's artifacts and integrity, its CI logs), start a rebuild, change build settings with an owner's approval, and add a release channel
platformextension_workspaceRead a workspace with any of its project logins: plan and limits, projects and last builds, usage, and a project's settings

A dev session carries the control channel that extension_storage, extension_reload, extension_open and extension_dom_snapshot ride: it is local, same machine, same user, and on unless extension_dev is called with allowControl: false. extension_eval is the one gate that stays off until allowEval: true is passed on extension_dev (it implies control). A session does not change its gates on a second call: call extension_dev again with what you need plus replace: true, which stops the first session.

Asserting instead of guessing

Every other tool hands back a reading. extension_assert states the expectation and returns the verdict.

Asked whether the extension works, the agent runs it, states expectations and reads one verdict each, from a real Claude Code session

{
  "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" }
  ]
}

Each check comes back pass, fail or inconclusive, and the run passes only when every check passed. inconclusive means this platform cannot cover the question today, and the check carries settledBy naming the evidence that would answer it: a content script passes only on a line it wrote itself, "no console errors" over a session that never built is inconclusive, and a read the session refuses (chrome.storage on a session started with allowControl: false) is inconclusive rather than a failure.

Safari

A Safari dev session runs on the same bridge as every other engine: on Extension.js 4.1.21 or newer, extension_dev with browser: "safari" (macOS with Xcode) builds the app, opens it, reloads it on every save and streams its logs. Safari's MV3 background CSP blocks eval, there is no CDP or RDP path for extension_inspect, and opening a tab needs a safaridriver session; the limits are listed under Safari.

Platform (private alpha)

The eleven platform tools connect agents to extension.dev. They stay off until the server is started with --features=local,platform, and sharing, publishing, promoting and submitting need a login:

npx @extension.dev/mcp login --project <workspace>/<project>

You approve a code at extension.dev/device; no GitHub token reaches your machine, and the project-scoped token is stored locally, never returned to the agent, and lives at most 7 days. extension_preview_web with share: true uploads the build it just made and returns a link that renders those bytes in the web emulator, with its expiresAt and a revokeUrl. extension_publish returns the shareable URL of a build extension.dev already holds; extension_submit sends a built extension into store review through extension.dev, which holds your store credentials, and defaults to a dry run.

Chrome Web StoreFirefox Add-onsEdge Add-onsApp Store

The details, the approval flow and the batch login for several projects are under Share a build in progress, Publish is not submit and Login.

Community

  • Join the extension.dev Discord for help and feedback
  • Browse production-ready templates at templates.extension.dev
  • Follow the platform's public packages on GitHub
  • Report Extension.js framework issues on GitHub

License

Apache-2.0 (c) 2026 Cezar Augusto and the extension.dev collaborators. See LICENSE.

Reviews

No reviews yet

Be the first to review this server!