cws-mcp

cws-mcp

MCP server for Chrome Web Store — upload, publish, status, metadata & Playwright-based UI automation

Category
Visit Server

README

cws-mcp

npm version

한국어

MCP Badge

MCP server for Chrome Web Store extension management. Upload, publish, and manage Chrome extensions directly from Claude Code or any MCP client.

When to Use

Use this MCP when you need to:

  • "Upload a new version of my Chrome extension" — build your ZIP and use the upload tool to push it as a draft
  • "Publish my extension to the Chrome Web Store" — use publish to submit for review and go live
  • "Check the review status of my extension" — use status to see review state, version, and deploy percentage
  • "Update my extension's metadata (description, screenshots)" — use update-metadata-ui to change store listing details
  • "Cancel a pending submission" — use cancel to withdraw a submission under review
  • "Set up staged rollout for my extension" — use publish with staged rollout, then deploy-percentage to ramp up

Tools

Tool Description
upload Upload a ZIP file to Chrome Web Store (update existing item draft)
publish Publish an extension with optional staged rollout, publish type, and skip-review
status Fetch the current status including review state, deploy percentage, and version
cancel Cancel a pending submission
deploy-percentage Set staged rollout percentage (0-100, must exceed current target)
get Read draft/published listing metadata (v1.1 API, deprecated Oct 2026)
update-metadata Update listing metadata via v1.1 API (deprecated Oct 2026)
update-metadata-ui Update listing metadata via dashboard UI automation (Playwright)

API Coverage

This MCP server covers all Chrome Web Store API v2 endpoints:

v2 Endpoint MCP Tool
media.upload upload
publishers.items.publish publish
publishers.items.fetchStatus status
publishers.items.cancelSubmission cancel
publishers.items.setPublishedDeployPercentage deploy-percentage

Additionally, v1.1 API endpoints are available for metadata operations (get, update-metadata), with dashboard UI automation (update-metadata-ui) as the recommended alternative since v1 is deprecated.

Setup

1. Create OAuth2 Credentials

  1. Go to Google Cloud Console
  2. Create a project (or select existing)
  3. Enable Chrome Web Store API
  4. Create OAuth2 credentials (Desktop app type)
  5. Note your Client ID and Client Secret

2. Get Refresh Token

# Open in browser to get authorization code
open "https://accounts.google.com/o/oauth2/auth?response_type=code&scope=https://www.googleapis.com/auth/chromewebstore&client_id=YOUR_CLIENT_ID&redirect_uri=urn:ietf:wg:oauth:2.0:oob"

# Exchange code for refresh token
curl -X POST https://oauth2.googleapis.com/token \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET" \
  -d "code=YOUR_AUTH_CODE" \
  -d "grant_type=authorization_code" \
  -d "redirect_uri=urn:ietf:wg:oauth:2.0:oob"

3. Configure MCP

Add to your Claude Code MCP settings (~/.claude/settings.local.json):

{
  "mcpServers": {
    "cws-mcp": {
      "command": "node",
      "args": ["/path/to/cws-mcp/dist/index.js"],
      "env": {
        "CWS_CLIENT_ID": "xxxxx.apps.googleusercontent.com",
        "CWS_CLIENT_SECRET": "GOCSPX-xxxxx",
        "CWS_REFRESH_TOKEN": "1//xxxxx",
        "CWS_PUBLISHER_ID": "me",
        "CWS_ITEM_ID": "your-extension-id"
      }
    }
  }
}

Or install globally via npm:

{
  "mcpServers": {
    "cws-mcp": {
      "command": "npx",
      "args": ["-y", "cws-mcp"],
      "env": { ... }
    }
  }
}

Environment Variables

Variable Required Description
CWS_CLIENT_ID Yes Google OAuth2 Client ID
CWS_CLIENT_SECRET Yes Google OAuth2 Client Secret
CWS_REFRESH_TOKEN Yes OAuth2 Refresh Token
CWS_PUBLISHER_ID No Publisher ID (default: me)
CWS_ITEM_ID No Default extension item ID
CWS_DASHBOARD_PROFILE_DIR No Browser profile path for UI automation (default: ~/.cws-mcp-profile)

Usage Examples

Check extension status

Use the cws-mcp status tool

Upload and publish

1. Use cws-mcp upload with zipPath="/path/to/extension.zip"
2. Use cws-mcp publish

Publish with staged rollout

Use cws-mcp publish with:
- publishType="STAGED_PUBLISH"
- deployPercentage=10

Publish with skip-review

Use cws-mcp publish with skipReview=true

Update listing title/description without publishing

Use cws-mcp update-metadata with:
- title="Pexus"
- summary="Official wallet for Plumise"
- description="..."
- category="productivity"
- defaultLocale="en"

Update advanced metadata fields

Use cws-mcp update-metadata with metadata={
  "homepageUrl": "https://plumise.com",
  "supportUrl": "https://plug.plumise.com/docs"
}

When API metadata updates don't reflect

Use cws-mcp update-metadata-ui with:
- title
- summary
- description
- category
- homepageUrl
- supportUrl

Notes:

  • This tool automates the Chrome Web Store dashboard UI.
  • First run with headless=false if login is required.
  • Browser profile path defaults to ~/.cws-mcp-profile (override with CWS_DASHBOARD_PROFILE_DIR).

Staged rollout

1. Use cws-mcp publish
2. Use cws-mcp deploy-percentage with percentage=10
3. Use cws-mcp deploy-percentage with percentage=50
4. Use cws-mcp deploy-percentage with percentage=100

Note: deploy-percentage is only available for extensions with 10,000+ seven-day active users. The new percentage must always be higher than the current target.

V1 API Deprecation

The get and update-metadata tools use the Chrome Web Store v1.1 API, which is deprecated and will be removed after October 15, 2026. The v2 API does not provide metadata read/write endpoints, so these tools remain available as a bridge. Use update-metadata-ui (Playwright dashboard automation) as the long-term alternative.

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured