cws について
cwsは、Chrome Web Storeの拡張機能を公開する担当者向けのMCPサーバーです。アップロードや公開、審査状況、段階的な配信に加え、一部の下書き情報をAPI v2とダッシュボード操作で管理します。
主な機能
- 01拡張機能の ZIP アップロード
- 02申請の公開と取り消し
- 03審査状況とバージョンの確認
- 04段階的な配信率の管理
- 05下書き情報の読み取りと保存
活用シーン
- 01ビルド済み拡張機能のアップロード
- 02拡張機能の審査申請
- 03審査状況と配信状況の監視
- 04下書きの説明やカテゴリの変更
MCP 対応
MCP クライアントに Chrome Web Store の拡張機能管理ツールを提供します。API v2とダッシュボード操作を使い、対応する掲載情報を扱います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
9掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| itemId | string | いいえ | 拡張機能のアイテム ID(デフォルトは CWS_ITEM_ID 環境変数) |
| zipPath | string | はい | アップロードする ZIP ファイルの絶対パス |
| publisherId | string | いいえ | 公開者 ID(デフォルトは CWS_PUBLISHER_ID 環境変数、または 'me') |
詳細
cws-mcp
Chrome ウェブストアの拡張機能を管理するための MCP サーバーです。Claude Code や任意の MCP クライアントから直接、Chrome 拡張機能をアップロード、公開、管理できます。
使用する場面
次のような場合にこの MCP を使用します。
- 「Chrome 拡張機能の新しいバージョンをアップロードする」 — ZIP をビルドし、
uploadツールを使ってドラフトとしてアップロードします - 「拡張機能を Chrome ウェブストアで公開する」 —
publishを使って審査に提出し、公開します - 「拡張機能の審査状況を確認する」 —
statusを使って審査状況、バージョン、デプロイ率を確認します - 「拡張機能の説明やカテゴリを更新する」 —
update-metadataを使ってドラフトの掲載情報を保存し、確認します - 「保留中の提出をキャンセルする」 —
cancelを使って審査中の提出を取り下げます - 「拡張機能の段階的ロールアウトを設定する」 — 段階的ロールアウトを指定して
publishを実行し、その後deploy-percentageで割合を引き上げます
ツール
| ツール | 説明 |
|---|---|
upload | ZIP ファイルを Chrome ウェブストアにアップロードします(既存アイテムのドラフトを更新) |
publish | 公開タイプ、ロールアウト率、審査のスキップ、blockOnWarnings を指定して提出/公開します |
status | 審査状況、デプロイ率、バージョンを含む現在のステータスを取得します |
cancel | 保留中の提出をキャンセルします |
deploy-percentage | 段階的ロールアウト率を設定します(0~100。現在の目標値を超える必要があります) |
get | status のエイリアスです。v2 の公開ステータスを取得し、掲載テキストは取得しません |
get-metadata-ui | ダッシュボードから現在のドラフトの説明、カテゴリ、ホームページ URL、サポート URL を読み取ります |
update-metadata | ダッシュボードで、対応するこれら4つのドラフト項目を保存し、再読み込み後に確認します |
update-metadata-ui | update-metadata のエイリアスです |
API の対応範囲
IN_PROGRESS を返すアップロードは保留中です。公開する前に、lastAsyncUploadState が SUCCEEDED になるまで status をポーリングしてください。FAILED はツールエラーです。公開がブロックされた場合、対応が必要な警告を含む error.details が保持されます。
この MCP サーバーは、Chrome ウェブストア API v2 のすべてのエンドポイントに対応しています。
| v2 エンドポイント | MCP ツール |
|---|---|
media.upload | upload |
publishers.items.publish | publish |
publishers.items.fetchStatus | status |
publishers.items.cancelSubmission | cancel |
publishers.items.setPublishedDeployPercentage | deploy-percentage |
すべての API リクエストで v2 を使用します。公開 API には掲載テキストを読み書きするエンドポイントがありません。ダッシュボードツールは Playwright と、サインイン済みの別の Chrome プロファイルを使用します。掲載項目を保存しても審査には提出されません。項目の不足、カテゴリの不一致、保存の未確認は、成功として扱わずエラーを返します。
セットアップ
Playwright のランタイム要件に合わせ、Node.js 20 以降が必要です。
1. OAuth2 認証情報を作成する
- Google Cloud Console にアクセスします
- プロジェクトを作成します(または既存のプロジェクトを選択します)
- Chrome Web Store API を有効にします
- OAuth2 認証情報を作成します(アプリケーションの種類は Desktop app)
- Client ID と Client Secret を控えます
2. リフレッシュトークンを取得する
ローカルのループバック リダイレクト URI、PKCE、スコープ https://www.googleapis.com/auth/chromewebstore を使用して、Google のデスクトップアプリ向け OAuth フローに従ってください。オフラインアクセスをリクエストします(access_type=offline。新しいリフレッシュトークンが必要な場合は prompt=consent を使用します)。同じリダイレクト URI を使って認証コードを交換し、リフレッシュトークンは MCP クライアントのシークレット/環境設定に保管してください。以前のコピー&ペースト方式の OOB リダイレクトは、Google ではサポートされなくなりました。
3. MCP を設定する
Claude Code の MCP 設定(~/.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"
}
}
}
}
または、npm でグローバルにインストールします。
{
"mcpServers": {
"cws-mcp": {
"command": "npx",
"args": ["-y", "cws-mcp"],
"env": { ... }
}
}
}
環境変数
| 変数 | 必須 | 説明 |
|---|---|---|
CWS_CLIENT_ID | はい | Google OAuth2 クライアント ID |
CWS_CLIENT_SECRET | はい | Google OAuth2 クライアントシークレット |
CWS_REFRESH_TOKEN | はい | OAuth2 リフレッシュトークン |
CWS_PUBLISHER_ID | いいえ | パブリッシャー ID(デフォルト:me) |
CWS_ITEM_ID | いいえ | デフォルトの拡張機能アイテム ID |
CWS_DASHBOARD_PROFILE_DIR | いいえ | UI 自動化用のブラウザープロファイルのパス(デフォルト:~/.cws-mcp-profile) |
使用例
拡張機能のステータスを確認する
Use the cws-mcp status tool
アップロードして公開する
1. Use cws-mcp upload with zipPath="/path/to/extension.zip"
2. Use cws-mcp publish
承認後まで公開を保留する
Use cws-mcp publish with:
- publishType="STAGED_PUBLISH"
skip-review を指定して公開する
Use cws-mcp publish with skipReview=true
STAGED_PUBLISH は、承認済みの提出物を後で公開するために保留します。ロールアウト率ではありません。対象となる拡張機能を段階的にロールアウトするには、別途 deployPercentage を使用してください。
検証の警告がある場合に公開を停止する
Use cws-mcp publish with blockOnWarnings=true
デフォルトは API と同じ false です。公開が成功した場合でも、返された warningInfo.warnings を確認してください。
審査に提出せずに掲載情報のフィールドを読み取る、または保存する
Use cws-mcp get-metadata-ui with headless=false
Use cws-mcp update-metadata with:
- description="..."
- category="Developer Tools"
- homepageUrl="https://example.com"
- supportUrl="https://example.com/support"
注意:
categoryは、現在のダッシュボードの言語で表示される選択肢のラベルと完全に一致する必要があります。英語と韓国語のフィールドラベルに対応しています。- これらのツールが読み取り・保存するのは現在のダッシュボードの下書きであり、公開済みの掲載情報や任意のロケールではありません。先にダッシュボードで目的のローカライズを選択してください。フィールドを特定できない場合は、安全のため処理に失敗します。
- タイトル、概要、デフォルトのロケールを
manifest.json/ローカライズされたメッセージで変更し、再ビルドして ZIP をuploadしてください。アイコンとスクリーンショットは、ダッシュボードで直接操作してください。 - ログインが必要な場合は、最初に
headless=falseで実行してください。 - ブラウザープロファイルのパスはデフォルトで
~/.cws-mcp-profileです(CWS_DASHBOARD_PROFILE_DIRで上書きできます)。 - Google Chrome がインストールされている必要があります。ダッシュボード UI の変更に伴い、セレクターの更新が必要になることがあります。検証できない保存操作はエラーになります。失敗の原因が特定できない場合は、再試行する前にダッシュボードを確認してください。
段階的なロールアウト
1. Use cws-mcp publish with deployPercentage=10
2. Monitor approval/publication with status
3. Use cws-mcp deploy-percentage with percentage=50
4. Use cws-mcp deploy-percentage with percentage=100
注意:deploy-percentage は、過去 7 日間のアクティブユーザー数が 10,000 人以上の拡張機能でのみ利用できます。新しいパーセンテージは、必ず現在の目標値より高くする必要があります。
1.x から 2.0 への移行
Google は 2026 年 10 月 15 日に API v1 を終了します。バージョン 2.0 では API v1 を呼び出しません。
getは v2 のステータスを返すようになりました。以前のprojection引数は拒否されます。下書きの掲載情報テキストにはget-metadata-uiを使用してください。公開済みの掲載情報テキストは v2 では公開されません。update-metadataはupdate-metadata-uiと同じダッシュボードのワークフローを使用するようになったため、API トークンだけでなく、Chrome へのログインが必要です。metadata、title、summary、defaultLocaleの直接指定は、案内メッセージとともに拒否されます。サポートされていない入力が黙って無視されることはありません。storeIconPathは、アップロード方法として受け付けられなくなりました。以前の汎用ファイル入力方式では、どのアセットが変更されたかを検証できなかったため、代わりに Developer Dashboard でアイコンをアップロードしてください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。