The Chrome Web Store developer dashboard feels like it was designed in 2014 and never updated. Because it was.
If you've ever shipped a Chrome extension, you know the drill. You zip up your build output, navigate to chrome.google.com/webstore/devconsole, drag in the file, re-fill half the metadata fields that didn't stick from last time, click through three confirmation dialogs, and then wait. And wait. Sometimes for days. And if you have more than one extension? Multiply that misery.
I've been maintaining four extensions across two accounts for the past two years. Every release cycle, I lose about 30 minutes to the dashboard. That doesn't sound like a lot until you realize it's 30 minutes of the most soul-crushing, context-switching work imaginable. You're ripped out of your terminal, thrown into a web UI that loads like it's running on a Chromebook from 2013, and forced to click buttons that could easily be API calls.
The API Exists. It's Just... Not Great.
Google does provide the Chrome Web Store API. Version 2, even. On paper, it handles uploads, publishing, and metadata updates. In practice, you'll spend more time wrangling OAuth tokens and reading outdated documentation than actually publishing anything. The API covers maybe 70% of what the dashboard does. The remaining 30% -- things like managing screenshots, configuring visibility settings, or dealing with certain review states -- require you to go back to the dashboard anyway.
So you end up with this awkward hybrid workflow: script what you can, manually handle the rest. It's the worst of both worlds.
Enter cws-mcp
I stumbled across cws-mcp last month while looking for a way to automate extension deploys in a CI pipeline. It's an MCP server -- meaning any AI agent that speaks the Model Context Protocol can use it as a tool -- that wraps the Chrome Web Store API v2 and, crucially, fills in the gaps with Playwright-based dashboard automation.
The setup is dead simple. Drop this into your MCP config:
{
"mcpServers": {
"cws": {
"command": "npx",
"args": ["-y", "cws-mcp"],
"env": {
"CWS_CLIENT_ID": "your-client-id",
"CWS_CLIENT_SECRET": "your-client-secret",
"CWS_REFRESH_TOKEN": "your-refresh-token"
}
}
}
}
Three environment variables. That's it. You need the same OAuth credentials you'd use for the raw API -- a client ID, client secret, and refresh token from the Google Cloud Console. If you've set up the CWS API before, you already have these. If you haven't, the repo README walks you through it in about five minutes.
What You Can Actually Do With It
Once the server is running, your AI agent gets access to a full set of extension management tools. Here's the kind of thing I now do from my terminal instead of the dashboard.
Deploying an update:
"Upload the new build at ./dist/extension.zip to my extension abc123
and publish it to production."
The agent calls the upload tool, waits for processing, then triggers publish. No browser involved. No drag-and-drop. No confirmation dialogs.
Checking review status is just as straightforward. Instead of refreshing the dashboard every few hours like a maniac, I just ask:
"What's the review status of extension abc123?"
It comes back with the current state -- whether it's pending review, approved, rejected, or if there's an action required. If it got rejected, the agent can pull the rejection reason too, so you know what to fix without ever opening a browser tab.
Staged Rollouts Without the Headache
One of my favorite features is staged rollout support. If you've ever tried to do a gradual rollout through the dashboard, you know it's buried three clicks deep and the UI gives you zero confidence that you set the percentage correctly.
With cws-mcp, it's a single tool call. Tell your agent to publish to 10% of users, monitor crash reports for a day, then bump to 50%, then 100%. You can script the whole thing. Or, if you're feeling brave, let the agent manage the rollout schedule autonomously based on error rates.
I've been running a pattern where the agent publishes at 5%, checks the extension's error dashboard after 24 hours, and only proceeds if the error rate hasn't spiked. It's the kind of deployment pipeline that would take a full afternoon to set up with custom scripts but takes about ten minutes to describe to an agent with the right tools.
The Playwright Angle
Here's where cws-mcp gets genuinely interesting. The Chrome Web Store API has blind spots. Updating screenshots, managing certain listing details, handling specific review workflows -- these operations simply aren't available through the API. Google's answer is "use the dashboard."
cws-mcp's answer is Playwright. When the API can't do something, the server falls back to browser automation. It logs into the developer dashboard headlessly and performs the actions the same way you would -- except without you having to be there. It's a pragmatic solution to a genuinely annoying problem.
Is it a little hacky? Sure. But so is every good developer tool that works around platform limitations. Google could fix this by making their API comprehensive. Until they do, Playwright gets the job done.
Fitting It Into CI/CD
The real payoff is CI/CD integration. I have a GitHub Actions workflow that builds my extension, runs tests, and then -- if it's a tagged release -- tells the agent to upload and publish through cws-mcp. The whole pipeline looks something like:
You could even wire it into a post-build hook. Build your extension, run your tests, then tell the agent to handle the rest. The whole cycle from git push to "live on Chrome Web Store" becomes something you can describe in a sentence instead of clicking through five screens.
The point isn't to build a complex CI/CD pipeline around it. The point is that the mundane parts of extension publishing become a conversation instead of a checklist.
The Bottom Line
cws-mcp doesn't reinvent anything. It just takes the pain out of a workflow that Google has neglected for years. If you maintain Chrome extensions and you're already using MCP-compatible tools, there's no reason to keep suffering through the dashboard.
The Chrome Web Store publishing experience is one of those things that's just bad enough to be annoying but not bad enough that most people bother to fix it. They just absorb the friction. cws-mcp is for the people who got tired of absorbing it.
Top comments (0)