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/mcpIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
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.
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.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| mcp (this skill)by extensiondev | 75 | 3 | today | MCP Server |
| Agent-Reachby Panniantong | 100 | 91.8k | 20d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.5k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.2k | today | CLAUDE.md |
| ai-job-searchby MadsLorentzen | 100 | 45.0k | today | CLAUDE.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.
Skill content
View source on GitHub@extension.dev/mcp

<img alt="Logo" align="right" src="https://media.extension.land/brand/extension-dev/logo-dock.png" width="20.7%" />Give your AI agent hands for browser extension development. 32 MCP tools that scaffold, run, inspect, debug, and publish cross-browser extensions.
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.storagecontents, 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
.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=localexposes 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=platformexposes only the extension.dev account, share, release and store tools. Both are on by default. Env:EXTENSION_DEV_FEATURES.--no-shiprefuses the calls that put something in front of other people:extension_publish,extension_release_promote,extension_submitwithdryRun: false,extension_preview_webwithshare: 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
Agent-Reach
91.8kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.5kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.2kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
ai-job-search
45.0kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
