npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

crx-mcp

v0.3.1

Published

MCP server for Chrome extension testing — access chrome.storage, Service Workers, declarativeNetRequest and more from AI coding agents

Downloads

455

Readme

crx-mcp

MCP server for Chrome extension testing. Access chrome.storage, Service Workers, declarativeNetRequest, and more directly from AI coding agents like Claude Code.

Why?

Existing browser MCP servers (like Playwright MCP) can't access Chrome extension internals. crx-mcp fills this gap with 15 purpose-built tools for extension development and testing.

Quick Start

With Claude Code

Add to your .mcp.json:

{
  "mcpServers": {
    "crx-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "crx-mcp"]
    }
  }
}

Then in Claude Code:

> Load my extension from ./my-extension and check if storage is working

Claude will use extension_load, then storage_get to inspect chrome.storage

CLI

npx crx-mcp --extension-path ./my-extension --verbose

Tools (15)

Core

| Tool | Description | |------|-------------| | extension_load | Load an unpacked extension and launch Chrome. Returns extension ID. | | navigate | Navigate to a URL. Returns title and status code. | | snapshot | Accessibility tree snapshot of page, popup, or side panel. | | storage_get | Read from chrome.storage (local/sync/session). | | storage_set | Write to chrome.storage (local/sync/session). | | eval_service_worker | Execute JavaScript in the Service Worker context. | | console_logs | Get console logs from all contexts (page, SW, popup, sidepanel). |

Extension-Specific

| Tool | Description | |------|-------------| | manifest_validate | Validate manifest.json against MV3 requirements (no browser needed). | | open_popup | Open the extension popup and return accessibility snapshot. | | open_sidepanel | Open the side panel and return accessibility snapshot. | | dnr_rules | List declarativeNetRequest rules (dynamic/session/static). | | permissions_check | Compare declared vs granted permissions. |

Advanced

| Tool | Description | |------|-------------| | screenshot | Take a PNG screenshot (base64). | | network_requests | List captured network requests with URL filter. | | content_script_eval | Execute JS in page context (ISOLATED or MAIN world). | | reload_extension | Hot-reload the extension and re-attach to Service Worker. |

CLI Options

crx-mcp [options]
  --extension-path <path>   Pre-load extension at startup
  --chrome-path <path>      Path to Chrome executable
  --user-data-dir <path>    Chrome user data directory
  --no-sandbox              Disable sandbox (for CI/Docker)
  --verbose                 Debug logging to stderr

Requirements

  • Node.js >= 18
  • Google Chrome installed (detected automatically on Windows, macOS, Linux)
  • Extensions require headed mode (no headless)

How It Works

  1. extension_load launches Chrome with --load-extension and detects the extension ID
  2. Service Worker communication uses Chrome DevTools Protocol (CDP) sessions
  3. chrome.storage, declarativeNetRequest, and permissions are accessed via JS evaluation in the SW context
  4. Console logs are collected from all contexts (page, SW, popup, sidepanel) into a ring buffer
  5. Network requests are monitored via CDP Network.enable
  6. Popup and side panel are opened in new tabs (actual popup/sidepanel UI requires user gestures)

Use Cases

  • Automated testing of Chrome extensions during development
  • AI-assisted debugging — let Claude inspect storage, logs, and network traffic
  • CI/CD validation — validate manifests and permissions without manual testing
  • Extension factory workflows — quickly test multiple extensions in sequence

License

MIT