app-publish-mcp 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.ja.md CHANGED
@@ -2,15 +2,18 @@
2
2
 
3
3
  # app-publish-mcp
4
4
 
5
+ [![npm version](https://img.shields.io/npm/v/app-publish-mcp)](https://www.npmjs.com/package/app-publish-mcp)
6
+
5
7
  **App Store Connect**と**Google Play Console**のための統合[MCP (Model Context Protocol)](https://modelcontextprotocol.io)サーバー。アプリのリスティング、スクリーンショット、リリース、レビュー、申請をAIアシスタントから管理できます。
6
8
 
7
9
  ## 機能
8
10
 
9
- ### Apple App Store Connect (29ツール)
11
+ ### Apple App Store Connect (56ツール)
10
12
  | カテゴリ | ツール |
11
13
  |----------|-------|
12
14
  | アプリ管理 | `apple_list_apps`, `apple_get_app`, `apple_get_app_info`, `apple_update_category` |
13
15
  | Bundle ID | `apple_list_bundle_ids`, `apple_create_bundle_id` |
16
+ | Bundle ID 機能 | `apple_list_bundle_id_capabilities`, `apple_enable_capability`, `apple_disable_capability` |
14
17
  | バージョン | `apple_list_versions`, `apple_create_version` |
15
18
  | バージョンローカライゼーション | `apple_list_version_localizations`, `apple_create_version_localization`, `apple_update_version_localization` |
16
19
  | アプリ情報ローカライゼーション | `apple_list_app_info_localizations`, `apple_update_app_info_localization` |
@@ -21,16 +24,28 @@
21
24
  | 申請 | `apple_submit_for_review`, `apple_cancel_submission` |
22
25
  | 価格設定 | `apple_get_pricing`, `apple_set_price`, `apple_list_availability` |
23
26
  | カスタマーレビュー | `apple_list_reviews`, `apple_respond_to_review` |
24
-
25
- ### Google Play Console (20ツール)
27
+ | 証明書 | `apple_list_certificates`, `apple_create_certificate`, `apple_revoke_certificate` |
28
+ | プロビジョニングプロファイル | `apple_list_profiles`, `apple_create_profile`, `apple_delete_profile` |
29
+ | デバイス | `apple_list_devices`, `apple_register_device`, `apple_update_device` |
30
+ | TestFlight ベータグループ | `apple_list_beta_groups`, `apple_create_beta_group`, `apple_delete_beta_group`, `apple_add_beta_testers_to_group`, `apple_remove_beta_testers_from_group` |
31
+ | TestFlight ベータテスター | `apple_list_beta_testers`, `apple_invite_beta_tester`, `apple_delete_beta_tester` |
32
+ | アプリ内課金 | `apple_list_iap`, `apple_create_iap`, `apple_get_iap`, `apple_delete_iap` |
33
+ | サブスクリプショングループ | `apple_list_subscription_groups`, `apple_create_subscription_group`, `apple_delete_subscription_group` |
34
+
35
+ ### Google Play Console (35ツール)
26
36
  | カテゴリ | ツール |
27
37
  |----------|-------|
28
- | 編集ライフサイクル | `google_create_edit`, `google_commit_edit`, `google_delete_edit` |
29
- | ストアリスティング | `google_list_listings`, `google_get_listing`, `google_update_listing` |
38
+ | 編集ライフサイクル | `google_create_edit`, `google_commit_edit`, `google_validate_edit`, `google_delete_edit` |
39
+ | アプリ詳細 | `google_get_details`, `google_update_details` |
40
+ | ストアリスティング | `google_list_listings`, `google_get_listing`, `google_update_listing`, `google_delete_listing` |
41
+ | 国別利用可否 | `google_get_country_availability` |
42
+ | テスター | `google_get_testers`, `google_update_testers` |
30
43
  | 画像 | `google_list_images`, `google_upload_image`, `google_delete_image`, `google_delete_all_images` |
31
44
  | トラックとリリース | `google_list_tracks`, `google_get_track`, `google_create_release`, `google_promote_release`, `google_halt_release` |
32
45
  | Bundle / APK | `google_upload_bundle`, `google_upload_apk` |
33
46
  | レビュー | `google_list_reviews`, `google_get_review`, `google_reply_to_review` |
47
+ | アプリ内商品 | `google_list_iap`, `google_get_iap`, `google_create_iap`, `google_update_iap`, `google_delete_iap` |
48
+ | サブスクリプション | `google_list_subscriptions`, `google_get_subscription`, `google_archive_subscription` |
34
49
 
35
50
  ## セットアップ
36
51
 
@@ -109,10 +124,21 @@ GOOGLE_SERVICE_ACCOUNT_PATH=/path/to/service-account.json
109
124
 
110
125
  ```
111
126
  1. google_create_edit → 編集セッションを開始
112
- 2. google_update_listingストアリスティングを更新
113
- 3. google_upload_bundle.aabファイルをアップロード
114
- 4. google_create_release本番トラックでリリースを作成
115
- 5. google_commit_edit変更を公開
127
+ 2. google_update_details連絡先情報を更新
128
+ 3. google_update_listingストアリスティングを更新
129
+ 4. google_upload_bundle.aabファイルをアップロード
130
+ 5. google_create_release本番トラックでリリースを作成
131
+ 6. google_validate_edit → エラーチェック
132
+ 7. google_commit_edit → 変更を公開
133
+ ```
134
+
135
+ ### Google Playアプリ内商品の管理
136
+
137
+ ```
138
+ 1. google_list_iap → 全商品を一覧
139
+ 2. google_create_iap → 新しい管理商品を作成
140
+ 3. google_update_iap → 価格や説明を更新
141
+ 4. google_delete_iap → 商品を削除
116
142
  ```
117
143
 
118
144
  ## ライセンス
package/README.ko.md CHANGED
@@ -2,15 +2,18 @@
2
2
 
3
3
  # app-publish-mcp
4
4
 
5
+ [![npm version](https://img.shields.io/npm/v/app-publish-mcp)](https://www.npmjs.com/package/app-publish-mcp)
6
+
5
7
  **App Store Connect**와 **Google Play Console**을 위한 통합 [MCP (Model Context Protocol)](https://modelcontextprotocol.io) 서버입니다. AI 어시스턴트에서 앱 리스팅, 스크린샷, 릴리스, 리뷰, 제출을 관리할 수 있습니다.
6
8
 
7
9
  ## 기능
8
10
 
9
- ### Apple App Store Connect (29개 도구)
11
+ ### Apple App Store Connect (56개 도구)
10
12
  | 카테고리 | 도구 |
11
13
  |----------|-------|
12
14
  | 앱 관리 | `apple_list_apps`, `apple_get_app`, `apple_get_app_info`, `apple_update_category` |
13
15
  | Bundle ID | `apple_list_bundle_ids`, `apple_create_bundle_id` |
16
+ | Bundle ID 기능 | `apple_list_bundle_id_capabilities`, `apple_enable_capability`, `apple_disable_capability` |
14
17
  | 버전 | `apple_list_versions`, `apple_create_version` |
15
18
  | 버전 로컬라이제이션 | `apple_list_version_localizations`, `apple_create_version_localization`, `apple_update_version_localization` |
16
19
  | 앱 정보 로컬라이제이션 | `apple_list_app_info_localizations`, `apple_update_app_info_localization` |
@@ -21,16 +24,28 @@
21
24
  | 제출 | `apple_submit_for_review`, `apple_cancel_submission` |
22
25
  | 가격 | `apple_get_pricing`, `apple_set_price`, `apple_list_availability` |
23
26
  | 고객 리뷰 | `apple_list_reviews`, `apple_respond_to_review` |
24
-
25
- ### Google Play Console (20개 도구)
27
+ | 인증서 | `apple_list_certificates`, `apple_create_certificate`, `apple_revoke_certificate` |
28
+ | 프로비저닝 프로파일 | `apple_list_profiles`, `apple_create_profile`, `apple_delete_profile` |
29
+ | 디바이스 | `apple_list_devices`, `apple_register_device`, `apple_update_device` |
30
+ | TestFlight 베타 그룹 | `apple_list_beta_groups`, `apple_create_beta_group`, `apple_delete_beta_group`, `apple_add_beta_testers_to_group`, `apple_remove_beta_testers_from_group` |
31
+ | TestFlight 베타 테스터 | `apple_list_beta_testers`, `apple_invite_beta_tester`, `apple_delete_beta_tester` |
32
+ | 인앱 구매 | `apple_list_iap`, `apple_create_iap`, `apple_get_iap`, `apple_delete_iap` |
33
+ | 구독 그룹 | `apple_list_subscription_groups`, `apple_create_subscription_group`, `apple_delete_subscription_group` |
34
+
35
+ ### Google Play Console (35개 도구)
26
36
  | 카테고리 | 도구 |
27
37
  |----------|-------|
28
- | 편집 생명주기 | `google_create_edit`, `google_commit_edit`, `google_delete_edit` |
29
- | 스토어 리스팅 | `google_list_listings`, `google_get_listing`, `google_update_listing` |
38
+ | 편집 생명주기 | `google_create_edit`, `google_commit_edit`, `google_validate_edit`, `google_delete_edit` |
39
+ | 상세 정보 | `google_get_details`, `google_update_details` |
40
+ | 스토어 리스팅 | `google_list_listings`, `google_get_listing`, `google_update_listing`, `google_delete_listing` |
41
+ | 국가 가용성 | `google_get_country_availability` |
42
+ | 테스터 | `google_get_testers`, `google_update_testers` |
30
43
  | 이미지 | `google_list_images`, `google_upload_image`, `google_delete_image`, `google_delete_all_images` |
31
44
  | 트랙 & 릴리스 | `google_list_tracks`, `google_get_track`, `google_create_release`, `google_promote_release`, `google_halt_release` |
32
45
  | Bundle / APK | `google_upload_bundle`, `google_upload_apk` |
33
46
  | 리뷰 | `google_list_reviews`, `google_get_review`, `google_reply_to_review` |
47
+ | 인앱 상품 | `google_list_iap`, `google_get_iap`, `google_create_iap`, `google_update_iap`, `google_delete_iap` |
48
+ | 구독 | `google_list_subscriptions`, `google_get_subscription`, `google_archive_subscription` |
34
49
 
35
50
  ## 설정
36
51
 
@@ -109,10 +124,21 @@ GOOGLE_SERVICE_ACCOUNT_PATH=/path/to/service-account.json
109
124
 
110
125
  ```
111
126
  1. google_create_edit → 편집 세션 시작
112
- 2. google_update_listing스토어 리스팅 업데이트
113
- 3. google_upload_bundle.aab 파일 업로드
114
- 4. google_create_releaseproduction 트랙에 릴리스 생성
115
- 5. google_commit_edit변경사항 게시
127
+ 2. google_update_details연락처 정보 업데이트
128
+ 3. google_update_listing스토어 리스팅 업데이트
129
+ 4. google_upload_bundle.aab 파일 업로드
130
+ 5. google_create_releaseproduction 트랙에 릴리스 생성
131
+ 6. google_validate_edit → 오류 확인
132
+ 7. google_commit_edit → 변경사항 게시
133
+ ```
134
+
135
+ ### Google Play 인앱 상품 관리
136
+
137
+ ```
138
+ 1. google_list_iap → 전체 상품 목록
139
+ 2. google_create_iap → 새 관리형 상품 생성
140
+ 3. google_update_iap → 가격 또는 설명 업데이트
141
+ 4. google_delete_iap → 상품 삭제
116
142
  ```
117
143
 
118
144
  ## 라이선스
package/README.md CHANGED
@@ -2,15 +2,18 @@
2
2
 
3
3
  # app-publish-mcp
4
4
 
5
+ [![npm version](https://img.shields.io/npm/v/app-publish-mcp)](https://www.npmjs.com/package/app-publish-mcp)
6
+
5
7
  A unified [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server for **App Store Connect** and **Google Play Console**. Manage app listings, screenshots, releases, reviews and submissions — all from your AI assistant.
6
8
 
7
9
  ## Features
8
10
 
9
- ### Apple App Store Connect (29 tools)
11
+ ### Apple App Store Connect (56 tools)
10
12
  | Category | Tools |
11
13
  |----------|-------|
12
14
  | App Management | `apple_list_apps`, `apple_get_app`, `apple_get_app_info`, `apple_update_category` |
13
15
  | Bundle IDs | `apple_list_bundle_ids`, `apple_create_bundle_id` |
16
+ | Bundle ID Capabilities | `apple_list_bundle_id_capabilities`, `apple_enable_capability`, `apple_disable_capability` |
14
17
  | Versions | `apple_list_versions`, `apple_create_version` |
15
18
  | Version Localizations | `apple_list_version_localizations`, `apple_create_version_localization`, `apple_update_version_localization` |
16
19
  | App Info Localizations | `apple_list_app_info_localizations`, `apple_update_app_info_localization` |
@@ -21,16 +24,28 @@ A unified [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server
21
24
  | Submission | `apple_submit_for_review`, `apple_cancel_submission` |
22
25
  | Pricing | `apple_get_pricing`, `apple_set_price`, `apple_list_availability` |
23
26
  | Customer Reviews | `apple_list_reviews`, `apple_respond_to_review` |
24
-
25
- ### Google Play Console (20 tools)
27
+ | Certificates | `apple_list_certificates`, `apple_create_certificate`, `apple_revoke_certificate` |
28
+ | Provisioning Profiles | `apple_list_profiles`, `apple_create_profile`, `apple_delete_profile` |
29
+ | Devices | `apple_list_devices`, `apple_register_device`, `apple_update_device` |
30
+ | TestFlight Beta Groups | `apple_list_beta_groups`, `apple_create_beta_group`, `apple_delete_beta_group`, `apple_add_beta_testers_to_group`, `apple_remove_beta_testers_from_group` |
31
+ | TestFlight Beta Testers | `apple_list_beta_testers`, `apple_invite_beta_tester`, `apple_delete_beta_tester` |
32
+ | In-App Purchases | `apple_list_iap`, `apple_create_iap`, `apple_get_iap`, `apple_delete_iap` |
33
+ | Subscription Groups | `apple_list_subscription_groups`, `apple_create_subscription_group`, `apple_delete_subscription_group` |
34
+
35
+ ### Google Play Console (35 tools)
26
36
  | Category | Tools |
27
37
  |----------|-------|
28
- | Edit Lifecycle | `google_create_edit`, `google_commit_edit`, `google_delete_edit` |
29
- | Store Listing | `google_list_listings`, `google_get_listing`, `google_update_listing` |
38
+ | Edit Lifecycle | `google_create_edit`, `google_commit_edit`, `google_validate_edit`, `google_delete_edit` |
39
+ | App Details | `google_get_details`, `google_update_details` |
40
+ | Store Listing | `google_list_listings`, `google_get_listing`, `google_update_listing`, `google_delete_listing` |
41
+ | Country Availability | `google_get_country_availability` |
42
+ | Testers | `google_get_testers`, `google_update_testers` |
30
43
  | Images | `google_list_images`, `google_upload_image`, `google_delete_image`, `google_delete_all_images` |
31
44
  | Tracks & Releases | `google_list_tracks`, `google_get_track`, `google_create_release`, `google_promote_release`, `google_halt_release` |
32
45
  | Bundle / APK | `google_upload_bundle`, `google_upload_apk` |
33
46
  | Reviews | `google_list_reviews`, `google_get_review`, `google_reply_to_review` |
47
+ | In-App Products | `google_list_iap`, `google_get_iap`, `google_create_iap`, `google_update_iap`, `google_delete_iap` |
48
+ | Subscriptions | `google_list_subscriptions`, `google_get_subscription`, `google_archive_subscription` |
34
49
 
35
50
  ## Setup
36
51
 
@@ -109,10 +124,21 @@ Add to `~/.claude/settings.local.json`:
109
124
 
110
125
  ```
111
126
  1. google_create_edit → start edit session
112
- 2. google_update_listing → update store listing
113
- 3. google_upload_bundleupload .aab file
114
- 4. google_create_releasecreate release on production track
115
- 5. google_commit_editpublish changes
127
+ 2. google_update_details → update contact info
128
+ 3. google_update_listingupdate store listing
129
+ 4. google_upload_bundleupload .aab file
130
+ 5. google_create_releasecreate release on production track
131
+ 6. google_validate_edit → check for errors
132
+ 7. google_commit_edit → publish changes
133
+ ```
134
+
135
+ ### Manage Google Play in-app products
136
+
137
+ ```
138
+ 1. google_list_iap → list all products
139
+ 2. google_create_iap → create a new managed product
140
+ 3. google_update_iap → update price or description
141
+ 4. google_delete_iap → remove a product
116
142
  ```
117
143
 
118
144
  ## License
package/README.zh.md CHANGED
@@ -2,15 +2,18 @@
2
2
 
3
3
  # app-publish-mcp
4
4
 
5
+ [![npm version](https://img.shields.io/npm/v/app-publish-mcp)](https://www.npmjs.com/package/app-publish-mcp)
6
+
5
7
  统一的 [MCP(模型上下文协议)](https://modelcontextprotocol.io)服务器,支持 **App Store Connect** 和 **Google Play Console**。从 AI 助手管理应用列表、截图、发布、评论和提交。
6
8
 
7
9
  ## 功能特性
8
10
 
9
- ### Apple App Store Connect(29个工具)
11
+ ### Apple App Store Connect(56个工具)
10
12
  | 类别 | 工具 |
11
13
  |----------|-------|
12
14
  | 应用管理 | `apple_list_apps`, `apple_get_app`, `apple_get_app_info`, `apple_update_category` |
13
15
  | Bundle ID | `apple_list_bundle_ids`, `apple_create_bundle_id` |
16
+ | Bundle ID 功能 | `apple_list_bundle_id_capabilities`, `apple_enable_capability`, `apple_disable_capability` |
14
17
  | 版本管理 | `apple_list_versions`, `apple_create_version` |
15
18
  | 版本本地化 | `apple_list_version_localizations`, `apple_create_version_localization`, `apple_update_version_localization` |
16
19
  | 应用信息本地化 | `apple_list_app_info_localizations`, `apple_update_app_info_localization` |
@@ -21,16 +24,28 @@
21
24
  | 提交 | `apple_submit_for_review`, `apple_cancel_submission` |
22
25
  | 价格 | `apple_get_pricing`, `apple_set_price`, `apple_list_availability` |
23
26
  | 用户评论 | `apple_list_reviews`, `apple_respond_to_review` |
24
-
25
- ### Google Play Console(20个工具)
27
+ | 证书 | `apple_list_certificates`, `apple_create_certificate`, `apple_revoke_certificate` |
28
+ | 描述文件 | `apple_list_profiles`, `apple_create_profile`, `apple_delete_profile` |
29
+ | 设备 | `apple_list_devices`, `apple_register_device`, `apple_update_device` |
30
+ | TestFlight 测试组 | `apple_list_beta_groups`, `apple_create_beta_group`, `apple_delete_beta_group`, `apple_add_beta_testers_to_group`, `apple_remove_beta_testers_from_group` |
31
+ | TestFlight 测试员 | `apple_list_beta_testers`, `apple_invite_beta_tester`, `apple_delete_beta_tester` |
32
+ | 应用内购买 | `apple_list_iap`, `apple_create_iap`, `apple_get_iap`, `apple_delete_iap` |
33
+ | 订阅组 | `apple_list_subscription_groups`, `apple_create_subscription_group`, `apple_delete_subscription_group` |
34
+
35
+ ### Google Play Console(35个工具)
26
36
  | 类别 | 工具 |
27
37
  |----------|-------|
28
- | 编辑生命周期 | `google_create_edit`, `google_commit_edit`, `google_delete_edit` |
29
- | 商店列表 | `google_list_listings`, `google_get_listing`, `google_update_listing` |
38
+ | 编辑生命周期 | `google_create_edit`, `google_commit_edit`, `google_validate_edit`, `google_delete_edit` |
39
+ | 应用详情 | `google_get_details`, `google_update_details` |
40
+ | 商店列表 | `google_list_listings`, `google_get_listing`, `google_update_listing`, `google_delete_listing` |
41
+ | 国家可用性 | `google_get_country_availability` |
42
+ | 测试员 | `google_get_testers`, `google_update_testers` |
30
43
  | 图片 | `google_list_images`, `google_upload_image`, `google_delete_image`, `google_delete_all_images` |
31
44
  | 轨道和发布 | `google_list_tracks`, `google_get_track`, `google_create_release`, `google_promote_release`, `google_halt_release` |
32
45
  | Bundle / APK | `google_upload_bundle`, `google_upload_apk` |
33
46
  | 评论 | `google_list_reviews`, `google_get_review`, `google_reply_to_review` |
47
+ | 应用内商品 | `google_list_iap`, `google_get_iap`, `google_create_iap`, `google_update_iap`, `google_delete_iap` |
48
+ | 订阅 | `google_list_subscriptions`, `google_get_subscription`, `google_archive_subscription` |
34
49
 
35
50
  ## 配置
36
51
 
@@ -109,10 +124,21 @@ GOOGLE_SERVICE_ACCOUNT_PATH=/path/to/service-account.json
109
124
 
110
125
  ```
111
126
  1. google_create_edit → 启动编辑会话
112
- 2. google_update_listing更新商店列表
113
- 3. google_upload_bundle上传 .aab 文件
114
- 4. google_create_release在生产轨道上创建发布
115
- 5. google_commit_edit发布更改
127
+ 2. google_update_details更新联系信息
128
+ 3. google_update_listing更新商店列表
129
+ 4. google_upload_bundle上传 .aab 文件
130
+ 5. google_create_release在生产轨道上创建发布
131
+ 6. google_validate_edit → 检查错误
132
+ 7. google_commit_edit → 发布更改
133
+ ```
134
+
135
+ ### 管理 Google Play 应用内商品
136
+
137
+ ```
138
+ 1. google_list_iap → 列出所有商品
139
+ 2. google_create_iap → 创建新的托管商品
140
+ 3. google_update_iap → 更新价格或描述
141
+ 4. google_delete_iap → 删除商品
116
142
  ```
117
143
 
118
144
  ## 许可证
package/dist/auth.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Interactive OAuth flow for Google Play Console.
4
+ *
5
+ * Usage:
6
+ * npx app-publish-mcp auth google
7
+ *
8
+ * Opens browser → user logs in → tokens saved to ~/.app-publish-mcp/google.json
9
+ * The MCP server auto-loads this file on startup.
10
+ */
11
+ interface TokenStore {
12
+ clientId: string;
13
+ clientSecret: string;
14
+ refreshToken: string;
15
+ savedAt: string;
16
+ }
17
+ export declare function getGoogleTokenPath(): string;
18
+ export declare function loadSavedGoogleToken(): TokenStore | null;
19
+ declare function main(): Promise<void>;
20
+ export { main as runAuthCli };
21
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAeH,UAAU,UAAU;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,oBAAoB,IAAI,UAAU,GAAG,IAAI,CAOxD;AA8FD,iBAAe,IAAI,kBAyClB;AAGD,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,CAAC"}
package/dist/auth.js ADDED
@@ -0,0 +1,153 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Interactive OAuth flow for Google Play Console.
4
+ *
5
+ * Usage:
6
+ * npx app-publish-mcp auth google
7
+ *
8
+ * Opens browser → user logs in → tokens saved to ~/.app-publish-mcp/google.json
9
+ * The MCP server auto-loads this file on startup.
10
+ */
11
+ import { OAuth2Client } from 'google-auth-library';
12
+ import { createServer } from 'http';
13
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
14
+ import { join } from 'path';
15
+ import { homedir } from 'os';
16
+ const CONFIG_DIR = join(homedir(), '.app-publish-mcp');
17
+ const GOOGLE_TOKEN_PATH = join(CONFIG_DIR, 'google.json');
18
+ // Embedded OAuth client — registered as "Desktop app" type so no client secret leak risk
19
+ const EMBEDDED_CLIENT_ID = ''; // will be set by user or embedded
20
+ const SCOPES = ['https://www.googleapis.com/auth/androidpublisher'];
21
+ export function getGoogleTokenPath() {
22
+ return GOOGLE_TOKEN_PATH;
23
+ }
24
+ export function loadSavedGoogleToken() {
25
+ if (!existsSync(GOOGLE_TOKEN_PATH))
26
+ return null;
27
+ try {
28
+ return JSON.parse(readFileSync(GOOGLE_TOKEN_PATH, 'utf-8'));
29
+ }
30
+ catch {
31
+ return null;
32
+ }
33
+ }
34
+ function saveToken(token) {
35
+ mkdirSync(CONFIG_DIR, { recursive: true });
36
+ writeFileSync(GOOGLE_TOKEN_PATH, JSON.stringify(token, null, 2));
37
+ }
38
+ async function authGoogle(clientId, clientSecret) {
39
+ const oauth2 = new OAuth2Client(clientId, clientSecret, 'http://localhost:19847/callback');
40
+ const authUrl = oauth2.generateAuthUrl({
41
+ access_type: 'offline',
42
+ scope: SCOPES,
43
+ prompt: 'consent',
44
+ });
45
+ // Start local callback server
46
+ const code = await new Promise((resolve, reject) => {
47
+ const server = createServer(async (req, res) => {
48
+ const url = new URL(req.url, `http://localhost:19847`);
49
+ if (url.pathname !== '/callback') {
50
+ res.writeHead(404);
51
+ res.end();
52
+ return;
53
+ }
54
+ const code = url.searchParams.get('code');
55
+ const error = url.searchParams.get('error');
56
+ if (error) {
57
+ res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
58
+ res.end(`<h1>Authentication failed</h1><p>${error}</p><p>You can close this tab.</p>`);
59
+ server.close();
60
+ reject(new Error(`Auth failed: ${error}`));
61
+ return;
62
+ }
63
+ if (!code) {
64
+ res.writeHead(400);
65
+ res.end('Missing code');
66
+ return;
67
+ }
68
+ res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
69
+ res.end(`
70
+ <html><body style="font-family:system-ui;display:flex;justify-content:center;align-items:center;height:100vh;margin:0;background:#0a0a0a;color:#fff">
71
+ <div style="text-align:center">
72
+ <h1 style="font-size:48px;margin-bottom:8px">✓</h1>
73
+ <h2>Authentication successful</h2>
74
+ <p style="color:#888">You can close this tab.</p>
75
+ </div>
76
+ </body></html>
77
+ `);
78
+ server.close();
79
+ resolve(code);
80
+ });
81
+ server.listen(19847, () => {
82
+ console.log('\n🔐 Opening browser for Google authentication...\n');
83
+ console.log(`If the browser doesn't open, visit:\n${authUrl}\n`);
84
+ // Open browser
85
+ const { exec } = require('child_process');
86
+ const cmd = process.platform === 'darwin' ? 'open' :
87
+ process.platform === 'win32' ? 'start' : 'xdg-open';
88
+ exec(`${cmd} "${authUrl}"`);
89
+ });
90
+ // Timeout after 2 minutes
91
+ setTimeout(() => {
92
+ server.close();
93
+ reject(new Error('Authentication timed out (2 min)'));
94
+ }, 120_000);
95
+ });
96
+ // Exchange code for tokens
97
+ const { tokens } = await oauth2.getToken(code);
98
+ if (!tokens.refresh_token) {
99
+ throw new Error('No refresh token received. Try revoking app access at https://myaccount.google.com/permissions and retry.');
100
+ }
101
+ saveToken({
102
+ clientId,
103
+ clientSecret,
104
+ refreshToken: tokens.refresh_token,
105
+ savedAt: new Date().toISOString(),
106
+ });
107
+ console.log(`✅ Google credentials saved to ${GOOGLE_TOKEN_PATH}`);
108
+ console.log(' The MCP server will auto-load these on next startup.');
109
+ }
110
+ // ── CLI entry ──
111
+ async function main() {
112
+ const args = process.argv.slice(2);
113
+ if (args[0] !== 'auth') {
114
+ // Not an auth command — this file should not be the entry point for MCP server
115
+ console.error('Usage: app-publish-mcp auth google');
116
+ console.error(' app-publish-mcp auth google --client-id=XXX --client-secret=YYY');
117
+ process.exit(1);
118
+ }
119
+ const target = args[1];
120
+ if (target === 'google') {
121
+ let clientId = '';
122
+ let clientSecret = '';
123
+ // Parse --client-id and --client-secret from args
124
+ for (const arg of args) {
125
+ if (arg.startsWith('--client-id='))
126
+ clientId = arg.split('=')[1];
127
+ if (arg.startsWith('--client-secret='))
128
+ clientSecret = arg.split('=')[1];
129
+ }
130
+ // Check env vars as fallback
131
+ if (!clientId)
132
+ clientId = process.env.GOOGLE_CLIENT_ID || '';
133
+ if (!clientSecret)
134
+ clientSecret = process.env.GOOGLE_CLIENT_SECRET || '';
135
+ if (!clientId || !clientSecret) {
136
+ console.error('❌ OAuth Client ID and Secret required.\n');
137
+ console.error('Get them from: Google Cloud Console → APIs & Services → Credentials → Create OAuth Client ID (Desktop app)\n');
138
+ console.error('Then run:');
139
+ console.error(' app-publish-mcp auth google --client-id=YOUR_ID --client-secret=YOUR_SECRET\n');
140
+ console.error('Or set env vars: GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET');
141
+ process.exit(1);
142
+ }
143
+ await authGoogle(clientId, clientSecret);
144
+ }
145
+ else {
146
+ console.error(`Unknown auth target: ${target}`);
147
+ console.error('Available: google');
148
+ process.exit(1);
149
+ }
150
+ }
151
+ // Export for CLI usage (called from cli.ts)
152
+ export { main as runAuthCli };
153
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI entry point.
4
+ * app-publish-mcp → starts MCP server (stdio)
5
+ * app-publish-mcp auth google → interactive OAuth flow
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
package/dist/cli.js ADDED
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI entry point.
4
+ * app-publish-mcp → starts MCP server (stdio)
5
+ * app-publish-mcp auth google → interactive OAuth flow
6
+ */
7
+ const args = process.argv.slice(2);
8
+ if (args[0] === 'auth') {
9
+ import('./auth.js').then((m) => {
10
+ m.runAuthCli().catch((err) => {
11
+ console.error('Error:', err.message);
12
+ process.exit(1);
13
+ });
14
+ });
15
+ }
16
+ else {
17
+ import('./index.js');
18
+ }
19
+ export {};
20
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7B,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;YAClC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,MAAM,CAAC,YAAY,CAAC,CAAC;AACvB,CAAC"}
@@ -1,11 +1,25 @@
1
1
  import { androidpublisher_v3 } from 'googleapis';
2
+ export interface GoogleClientOptions {
3
+ serviceAccountPath?: string;
4
+ clientId?: string;
5
+ clientSecret?: string;
6
+ refreshToken?: string;
7
+ }
2
8
  export declare class GoogleClient {
3
9
  private publisher;
4
- constructor(serviceAccountPath: string);
10
+ constructor(opts: GoogleClientOptions);
5
11
  get api(): androidpublisher_v3.Androidpublisher;
6
12
  createEdit(packageName: string): Promise<string>;
7
13
  commitEdit(packageName: string, editId: string): Promise<void>;
14
+ validateEdit(packageName: string, editId: string): Promise<void>;
8
15
  deleteEdit(packageName: string, editId: string): Promise<void>;
16
+ getDetails(packageName: string, editId: string): Promise<androidpublisher_v3.Schema$AppDetails>;
17
+ updateDetails(packageName: string, editId: string, details: {
18
+ defaultLanguage?: string;
19
+ contactWebsite?: string;
20
+ contactEmail?: string;
21
+ contactPhone?: string;
22
+ }): Promise<androidpublisher_v3.Schema$AppDetails>;
9
23
  getListing(packageName: string, editId: string, language: string): Promise<androidpublisher_v3.Schema$Listing>;
10
24
  updateListing(packageName: string, editId: string, language: string, listing: {
11
25
  title?: string;
@@ -13,6 +27,12 @@ export declare class GoogleClient {
13
27
  fullDescription?: string;
14
28
  }): Promise<androidpublisher_v3.Schema$Listing>;
15
29
  listListings(packageName: string, editId: string): Promise<androidpublisher_v3.Schema$Listing[]>;
30
+ deleteListing(packageName: string, editId: string, language: string): Promise<void>;
31
+ getCountryAvailability(packageName: string, editId: string, track: string): Promise<androidpublisher_v3.Schema$TrackCountryAvailability>;
32
+ getTesters(packageName: string, editId: string, track: string): Promise<androidpublisher_v3.Schema$Testers>;
33
+ updateTesters(packageName: string, editId: string, track: string, testers: {
34
+ googleGroups?: string[];
35
+ }): Promise<androidpublisher_v3.Schema$Testers>;
16
36
  uploadImage(packageName: string, editId: string, language: string, imageType: string, imagePath: string): Promise<androidpublisher_v3.Schema$ImagesUploadResponse>;
17
37
  listImages(packageName: string, editId: string, language: string, imageType: string): Promise<androidpublisher_v3.Schema$Image[]>;
18
38
  deleteImage(packageName: string, editId: string, language: string, imageType: string, imageId: string): Promise<void>;
@@ -22,6 +42,15 @@ export declare class GoogleClient {
22
42
  updateTrack(packageName: string, editId: string, track: string, releases: androidpublisher_v3.Schema$TrackRelease[]): Promise<androidpublisher_v3.Schema$Track>;
23
43
  uploadBundle(packageName: string, editId: string, bundlePath: string): Promise<androidpublisher_v3.Schema$Bundle>;
24
44
  uploadApk(packageName: string, editId: string, apkPath: string): Promise<androidpublisher_v3.Schema$Apk>;
45
+ listInAppProducts(packageName: string): Promise<androidpublisher_v3.Schema$InAppProduct[]>;
46
+ getInAppProduct(packageName: string, sku: string): Promise<androidpublisher_v3.Schema$InAppProduct>;
47
+ createInAppProduct(packageName: string, product: androidpublisher_v3.Schema$InAppProduct): Promise<androidpublisher_v3.Schema$InAppProduct>;
48
+ updateInAppProduct(packageName: string, sku: string, product: androidpublisher_v3.Schema$InAppProduct): Promise<androidpublisher_v3.Schema$InAppProduct>;
49
+ deleteInAppProduct(packageName: string, sku: string): Promise<void>;
50
+ listSubscriptions(packageName: string): Promise<androidpublisher_v3.Schema$Subscription[]>;
51
+ getSubscription(packageName: string, productId: string): Promise<androidpublisher_v3.Schema$Subscription>;
52
+ createSubscription(packageName: string, productId: string, subscription: androidpublisher_v3.Schema$Subscription): Promise<androidpublisher_v3.Schema$Subscription>;
53
+ archiveSubscription(packageName: string, productId: string): Promise<androidpublisher_v3.Schema$Subscription>;
25
54
  listReviews(packageName: string): Promise<androidpublisher_v3.Schema$Review[]>;
26
55
  getReview(packageName: string, reviewId: string): Promise<androidpublisher_v3.Schema$Review>;
27
56
  replyToReview(packageName: string, reviewId: string, replyText: string): Promise<androidpublisher_v3.Schema$ReviewsReplyResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/google/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAIzD,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAuC;gBAE5C,kBAAkB,EAAE,MAAM;IAYtC,IAAI,GAAG,yCAEN;IAGK,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKhD,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAOhE,aAAa,CACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE;IAS5E,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAQhD,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM;IAUb,UAAU,CACd,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM;IAQb,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM;IAOX,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM;IAQb,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAO9C,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAO3D,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,mBAAmB,CAAC,mBAAmB,EAAE;IAU/C,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAYpE,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAa9D,WAAW,CAAC,WAAW,EAAE,MAAM;IAK/B,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAK/C,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAO7E"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/google/client.ts"],"names":[],"mappings":"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"}