{
  "markdown": "# cws-mcp\n\n[![npm version](https://img.shields.io/npm/v/cws-mcp)](https://www.npmjs.com/package/cws-mcp)\n\n[한국어](README.ko.md)\n\n[![MCP Badge](https://lobehub.com/badge/mcp/mikusnuz-cws-mcp)](https://lobehub.com/mcp/mikusnuz-cws-mcp)\n\nMCP server for Chrome Web Store extension management. Upload, publish, and manage Chrome extensions directly from Claude Code or any MCP client.\n\n## When to Use\n\nUse this MCP when you need to:\n\n- **\"Upload a new version of my Chrome extension\"** — build your ZIP and use the `upload` tool to push it as a draft\n- **\"Publish my extension to the Chrome Web Store\"** — use `publish` to submit for review and go live\n- **\"Check the review status of my extension\"** — use `status` to see review state, version, and deploy percentage\n- **\"Update my extension's metadata (description, screenshots)\"** — use `update-metadata-ui` to change store listing details\n- **\"Cancel a pending submission\"** — use `cancel` to withdraw a submission under review\n- **\"Set up staged rollout for my extension\"** — use `publish` with staged rollout, then `deploy-percentage` to ramp up\n\n## Tools\n\n| Tool | Description |\n|---|---|\n| `upload` | Upload a ZIP file to Chrome Web Store (update existing item draft) |\n| `publish` | Publish an extension with optional staged rollout, publish type, and skip-review |\n| `status` | Fetch the current status including review state, deploy percentage, and version |\n| `cancel` | Cancel a pending submission |\n| `deploy-percentage` | Set staged rollout percentage (0-100, must exceed current target) |\n| `get` | Read draft/published listing metadata (v1.1 API, deprecated Oct 2026) |\n| `update-metadata` | Update listing metadata via v1.1 API (deprecated Oct 2026) |\n| `update-metadata-ui` | Update listing metadata via dashboard UI automation (Playwright) |\n\n## API Coverage\n\nThis MCP server covers **all Chrome Web Store API v2 endpoints**:\n\n| v2 Endpoint | MCP Tool |\n|---|---|\n| `media.upload` | `upload` |\n| `publishers.items.publish` | `publish` |\n| `publishers.items.fetchStatus` | `status` |\n| `publishers.items.cancelSubmission` | `cancel` |\n| `publishers.items.setPublishedDeployPercentage` | `deploy-percentage` |\n\nAdditionally, 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.\n\n## Setup\n\n### 1. Create OAuth2 Credentials\n\n1. Go to [Google Cloud Console](https://console.cloud.google.com/)\n2. Create a project (or select existing)\n3. Enable **Chrome Web Store API**\n4. Create OAuth2 credentials (Desktop app type)\n5. Note your **Client ID** and **Client Secret**\n\n### 2. Get Refresh Token\n\n```bash\n# Open in browser to get authorization code\nopen \"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\"\n\n# Exchange code for refresh token\ncurl -X POST https://oauth2.googleapis.com/token \\\n  -d \"client_id=YOUR_CLIENT_ID\" \\\n  -d \"client_secret=YOUR_CLIENT_SECRET\" \\\n  -d \"code=YOUR_AUTH_CODE\" \\\n  -d \"grant_type=authorization_code\" \\\n  -d \"redirect_uri=urn:ietf:wg:oauth:2.0:oob\"\n```\n\n### 3. Configure MCP\n\nAdd to your Claude Code MCP settings (`~/.claude/settings.local.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"cws-mcp\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/cws-mcp/dist/index.js\"],\n      \"env\": {\n        \"CWS_CLIENT_ID\": \"xxxxx.apps.googleusercontent.com\",\n        \"CWS_CLIENT_SECRET\": \"GOCSPX-xxxxx\",\n        \"CWS_REFRESH_TOKEN\": \"1//xxxxx\",\n        \"CWS_PUBLISHER_ID\": \"me\",\n        \"CWS_ITEM_ID\": \"your-extension-id\"\n      }\n    }\n  }\n}\n```\n\nOr install globally via npm:\n\n```json\n{\n  \"mcpServers\": {\n    \"cws-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"cws-mcp\"],\n      \"env\": { ... }\n    }\n  }\n}\n```\n\n## Environment Variables\n\n| Variable | Required | Description |\n|---|---|---|\n| `CWS_CLIENT_ID` | Yes | Google OAuth2 Client ID |\n| `CWS_CLIENT_SECRET` | Yes | Google OAuth2 Client Secret |\n| `CWS_REFRESH_TOKEN` | Yes | OAuth2 Refresh Token |\n| `CWS_PUBLISHER_ID` | No | Publisher ID (default: `me`) |\n| `CWS_ITEM_ID` | No | Default extension item ID |\n| `CWS_DASHBOARD_PROFILE_DIR` | No | Browser profile path for UI automation (default: `~/.cws-mcp-profile`) |\n\n## Usage Examples\n\n### Check extension status\n```\nUse the cws-mcp status tool\n```\n\n### Upload and publish\n```\n1. Use cws-mcp upload with zipPath=\"/path/to/extension.zip\"\n2. Use cws-mcp publish\n```\n\n### Publish with staged rollout\n```\nUse cws-mcp publish with:\n- publishType=\"STAGED_PUBLISH\"\n- deployPercentage=10\n```\n\n### Publish with skip-review\n```\nUse cws-mcp publish with skipReview=true\n```\n\n### Update listing title/description without publishing\n```\nUse cws-mcp update-metadata with:\n- title=\"Pexus\"\n- summary=\"Official wallet for Plumise\"\n- description=\"...\"\n- category=\"productivity\"\n- defaultLocale=\"en\"\n```\n\n### Update advanced metadata fields\n```\nUse cws-mcp update-metadata with metadata={\n  \"homepageUrl\": \"https://plumise.com\",\n  \"supportUrl\": \"https://plug.plumise.com/docs\"\n}\n```\n\n### When API metadata updates don't reflect\n```\nUse cws-mcp update-metadata-ui with:\n- title\n- summary\n- description\n- category\n- homepageUrl\n- supportUrl\n```\n\nNotes:\n- This tool automates the Chrome Web Store dashboard UI.\n- First run with `headless=false` if login is required.\n- Browser profile path defaults to `~/.cws-mcp-profile` (override with `CWS_DASHBOARD_PROFILE_DIR`).\n\n### Staged rollout\n```\n1. Use cws-mcp publish\n2. Use cws-mcp deploy-percentage with percentage=10\n3. Use cws-mcp deploy-percentage with percentage=50\n4. Use cws-mcp deploy-percentage with percentage=100\n```\n\nNote: `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.\n\n## V1 API Deprecation\n\nThe `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.\n\n## License\n\nMIT\n",
  "bytes": 6246,
  "sha": "cb69d64e1be32f62a252c2f64c05035af611ffb1cb123074253cc442e869fb17",
  "repo_slug": "mikusnuz/cws-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_mikusnuz_cws_cfb3c906/readme"
}