SkillAgentSearch skills...

mcp

MCP server that lets AI agents build, run, inspect, and publish browser extensions. 30 tools for scaffolding, live DOM inspection, log streaming, and store-ready builds across Chrome, Edge, Firefox, Safari, and every Chromium- or Gecko-based browser.

Install / Use

claude mcp add extensiondev -- npx -y github:extensiondev/mcp

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

75/100

Supported Platforms

Claude Code
Claude Desktop
Cursor

Tags

Our assessment of mcp

mcp scores 75/100 on our quality scale, 3726th of 4,624 Development & Engineering skills we index.

Its MCP Server is 22 KB long, well organised into 23 sections with 14 code examples: a thorough specification that gives an agent plenty to work with.

It has 3 GitHub stars, so there is little community track record yet; judge it on its content.

Substance
30/30
Structure
20/20
Description
15/15
Adoption
3/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated today, so mcp is actively maintained.
  • It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

mcp compared with similar skills

All 4 of these similar skills score higher than mcp; compare them before choosing.

SkillScoreStarsUpdatedFormat
mcp (this skill)by extensiondev753todayMCP Server
Agent-Reachby Panniantong10091.8k20d agoCLAUDE.md
headroomby headroomlabs-ai10074.5ktodayCLAUDE.md
CowAgentby zhayujie10047.2ktodayCLAUDE.md
ai-job-searchby MadsLorentzen10045.0ktodayCLAUDE.md

Frequently asked questions

How do I install mcp?
Run claude mcp add extensiondev -- npx -y github:extensiondev/mcp. The install tabs above show the steps for each supported agent.
Which AI agents does mcp work with?
It is written for Claude Code, Claude Desktop and Cursor, as a MCP Server file. Other agents that read the same format can often use it too.
Is mcp safe to use?
It is Apache-2.0-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is mcp still maintained?
The repository was last updated today, so mcp is actively maintained.

@extension.dev/mcp Version Downloads Discord

Give your AI agent hands for browser extension development. 32 MCP tools that scaffold, run, inspect, debug, and publish cross-browser extensions.

<img alt="Logo" align="right" src="https://media.extension.land/brand/extension-dev/logo-dock.png" width="20.7%" />
claude mcp add extension-dev npx @extension.dev/mcp

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

extension.dev · Extension.js · Templates · Examples · 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. An agent editing files blind will happily "fix" all of them without noticing none of them work.

These tools give agents eyes on the live browser, so they debug from evidence instead of guessing:

  • Scaffold from the 50+ template catalog behind templates.extension.dev, or add a popup, sidebar, or content script to an existing project
  • Run the dev server with HMR in Chrome, Edge, Firefox, Brave, Opera, Vivaldi, Yandex, Waterfox, LibreWolf, Zen, Floorp, or any Chromium- or Gecko-based binary, plus Safari on macOS (no HMR yet), no build config
  • See the live DOM, unified logs from every extension context, chrome.storage contents, and the loaded-extension list
  • Act: evaluate code in any context, trigger the action button and commands, reload the extension, replay events
  • Ship: validate the manifest cross-browser, build for production, publish a shareable preview, and promote builds to release channels (a stable promotion asks for a human approval first)

Built on Extension.js, the open-source cross-browser extension framework.

Clients

<div align="center">

| <img alt="Claude Code" src="https://media.extension.land/logos/devtools/claude-code.svg" width="70"> | <img alt="Claude Desktop" src="https://media.extension.land/logos/ai/claude.svg" width="70"> | <picture><source media="(prefers-color-scheme: dark)" srcset="https://media.extension.land/logos/devtools/cursor-dark.svg"><img alt="Cursor" src="https://media.extension.land/logos/devtools/cursor.svg" width="70"></picture> | | :-: | :-: | :-: | | Claude Code | Claude Desktop | Cursor |

</div>

Setup

<!-- setup:start (generated from src/clients, run pnpm readme:clients) -->

Claude Code

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

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

.cursor/mcp.json:

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

VS Code (Also GitHub Copilot)

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

.vscode/mcp.json:

{
  "servers": {
    "extension-dev": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "@extension.dev/mcp"
      ]
    }
  }
}

Codex

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

~/.codex/config.toml:

[mcp_servers.extension-dev]
command = "npx"
args = ["@extension.dev/mcp"]

Other clients (Claude Desktop and .mcp.json)

.mcp.json:

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

Signing in and pinning a project

The platform tools need a login. Sign in once per project, then add --project <workspace>/<project> to the server's arguments (or set EXTENSION_DEV_PROJECT) so that server only ever acts on that project, however many logins this machine holds. The console's Connect dialog fills both in for your project.

npx @extension.dev/mcp login --project <workspace>/<project>
<!-- setup:end -->

Choosing what the agent can reach

Two flags (or environment variables) narrow the server before an agent sees it:

  • --features=local exposes the tools that work on this machine (create, run, inspect, build, plus docs search), which leaves 23 of the 32 tools (the 9 platform tools are off). --features=platform exposes only the extension.dev account, share, release and store tools. Both are on by default. Env: EXTENSION_DEV_FEATURES.
  • --no-ship refuses the calls that put something in front of other people: extension_publish, extension_release_promote, extension_submit with dryRun: false, extension_preview_web with share: true, and a share revoke. Dry runs, share listing, login and project or workspace creation still work. Env: EXTENSION_DEV_NO_SHIP=1.

A refused call answers E_TOOL_DISABLED with the flag to change.

A real store submission, a promotion to stable and a share revoke also wait for a person by default: the first call answers approval-required with a link on extension.dev, a workspace member approves exactly that action, and the same call with the returned approvalId runs it once. EXTENSION_DEV_APPROVAL_GATE=1 extends this to every promotion; EXTENSION_DEV_APPROVAL_GATE=0 turns it off.

Every tool also carries MCP annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint), so clients can auto-approve reads and ask before the rest.

Answers that can carry text a web page or an extension wrote (logs, DOM, eval results, storage, titles, runtime errors) fence it between <untrusted-data-ID> and </untrusted-data-ID>, with a fresh random ID per call in untrusted.boundary. The page cannot predict the ID or close the fence early, and the JSON still parses to the same fields. A fence is a signal to the model, not a gate: pair it with --no-ship when the agent reads pages you do not trust.

{
  "mcpServers": {
    "extension-dev": {
      "command": "npx",
      "args": ["@extension.dev/mcp", "--no-ship"]
    }
  }
}

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, packaged in the open Agent Skills format. With both installed, agents know to verify against the live browser instead of guessing, and these tools make that a one-call operation.

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

Claude Code project integration

The package ships drop-in instructions, slash commands, and rules for extension projects:

# Rules (how Claude understands your project)
cp node_modules/@extension.dev/mcp/claude/CLAUDE.md ~/my-extension/.claude/CLAUDE.md

# Slash commands (/extension, /extension-add, /extension-debug, /extension-publish)
mkdir -p ~/my-extension/.claude/commands
cp node_modules/@extension.dev/mcp/claude/commands/*.md ~/my-extension/.claude/commands/

Tools

| Tier | Tool | Description | | ---- | ---- | ----------- | | build | extension_create | Scaffold from a template | | build | extension_templates | Browse 50+ templates (list) and read one's source (source) | | build | extension_docs_search | Search the Extension.js and extension.dev docs by keyword | | build | extension_add_feature | Add sidebar/popup/content script | | build | extension_build | Build for production | | run | extension_dev | Dev server with HMR | | run | extension_start | Build + launch the production build (build: false launches the existing dist; outputPath launches any prebuilt unpacked directory) | | run | extension_wait | Poll the dev-server ready contract | | run | extension_stop | Stop a dev/start/preview session (server + browser) | | see | extension_manifest_validate | Cross-browser manifest validation | | see | extension_analyze | Static analysis of the built extension on disk | | see | extension_inspect | Deep live inspection of a running extension (closed shadow roots, probes) | | see | extension_dom_snapshot | Shallow DOM snapshot of a chosen tab or extension surface over the agent bridge | | see | extension_list_extensions | List loaded extensions (Chromium and Firefox) | | see | extension_logs | Stream logs from every context | | see | extension_doctor | Diagnose the dev session leg by leg (ready contract, ports, token, executor, browser) | | see | extension_theme_verify | Verify a Chrome theme manifest against the colors Chrome actually paints | | test | extension_assert | State expectations about a running extension and get one verdict each: pass, fail, or inconclusive | | act | extension_eval | Evaluate in a context (needs allowEval: true on extension_dev) | | act | extension_storage | Read/write chrome.storage | | act | extension_reload | Reload extension or tab | | act | extension_open | Open a surface (popup, options, sidebar, devtools panel, override pages) / trigger action, command | | browsers | extension_browsers | Detect, list, install, and uninstall browsers | | platform | extension_auth | Device login at extension.dev for one project or a list of them, plus login status and logout | | platform | extension_workspace_create | Create an extension.dev workspace, headless, via device approval; the approver becomes its owner | | platform | extension_project_create | Create the extension.dev project for a built extension, or several under one approval, headless, via device approval | | platform | extension_preview_web | Render a build in the web emulator, and share it as a link | | platform | extension_shares | List every link you have shared, and revoke one permanently | | platform | extension_publish | Mint a shareable link for a build extension.dev already holds (nothing is uploaded) | | platform | extension_release_promote | Promote a build to a release channel, headless | | platform | extension_submit | Submit for store review: Chrome, Firefox, Edge and Safari, through extension.dev | | platform | extension_release_status | Read release channels, recent builds, and store submission and review state |

Browser-launching tools (dev, start) shell out to the extension CLI, the project's own node_modules/.bin/extension when present, otherwise npx extension@<pinned> at the version this package is verified against; build, doctor, eval, storage, reload, open, dom_snapshot and assert spawn that CLI too, and the rest runs in-process.

Asserting instead of guessing

Every other tool here hands back a reading: a DOM, a log window, an evaluated expression. Turning a reading into "the popup works" was left to the agent, as a string of JavaScript it wrote on the spot, which is the guesswork the paired

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars3
CategoryDevelopment
Updated5h ago
Forks0

Languages

TypeScript

Trust signals

92/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 low