应用发行商MCP
为以下目的构建的MCP(模型上下文协议)服务器 vibe编码器 -使用AI生成应用图标,为iOS/Android自动调整大小,并发布到应用商店,所有这些都可以通过您的AI编码助手完成。
不要浪费时间在Figma上寻找应用程序图标,也不要为每个屏幕密度手动调整图像大小。只需描述你想要什么,让AI来处理剩下的。
它的作用
| 工具 | 说明 |
|---|---|
generate_icon | 使用Google Gemini AI生成应用程序图标 |
resize_icons | 自动调整到所有iOS和Android所需的大小 |
generate_splash | 使用AI生成启动画面设计 |
generate_screenshot | 生成应用商店屏幕截图模型 |
setup_fastlane | 生成带有版权、审查信息和预检查设置的fastlane配置 |
populate_metadata | 将商店列表内容直接写入fastlane元数据文件 |
validate_metadata | 根据App Store要求验证元数据(长度限制、必填字段) |
publish_ios | 通过fastlane发布到App Store |
publish_android | 通过fastlane发布到Google Play |
generate_store_listing | 自动生成店铺元数据+iOS年龄分级指南+应用隐私指南(4种语言) |
get_publishing_guide | 分步发布指南(iOS 12步骤/Android 7步骤) |
configure_api_key | 设置Gemini API密钥 |
configure_model | 选择AI模型(速度与质量) |
get_status | 检查当前配置 |
Maestro UI测试和商店截图
| 工具 | 说明 |
|---|---|
setup_maestro | 安装并配置Maestro CLI以进行移动UI测试 |
maestro_screenshot | 从运行的iOS模拟器/Android模拟器中捕获屏幕截图 |
maestro_run_flow | 使用自然语言步骤运行UI测试流 |
maestro_run_yaml | 从原始YAML运行Maestro流 |
maestro_store_screenshot | 使用AI生成的标题+设备框架创建专业商店截图 |
maestro_status | 检查Maestro安装和运行设备 |
Google Play商店
| 工具 | 说明 |
|---|---|
configure_playstore | 使用服务帐户JSON密钥(文件路径或内联数据)配置Google Play API |
playstore_status | 检查Play Store API配置和服务帐户状态 |
playstore_setup_key | 完整的Android发布设置:复制密钥,创建Appfile/Fastfile,元数据结构 |
playstore_verify_access | 验证服务帐户是否具有对特定应用程序的API访问权限 |
playstore_get_app_info | 获取全面的应用程序信息:所有列表+所有发布轨迹 |
playstore_get_listing | 获取商店列表-所有语言或特定语言 |
playstore_update_listing | 更新语言的标题、简短描述和完整描述 |
playstore_get_tracks | 列出带有版本代码、状态和发行说明的发行轨迹 |
playstore_list_images | 列出某一语言和类型的已上传截图/图像 |
playstore_upload_image | 上传屏幕截图、图标或功能图形(PNG/JPEG/WebP) |
playstore_delete_images | 删除某一语言的特定类型的所有图像 |
AdMob集成
| 工具 | 说明 |
|---|---|
configure_admob | 设置Google AdMob OAuth凭据并获取授权URL |
admob_auth | 通过交换令牌的授权码来完成OAuth流程 |
admob_list_apps | 列出您AdMob帐户中注册的所有应用程序 |
admob_create_app | 在AdMob中创建新应用程序(链接到商店或手册)\* |
admob_list_ad_units | 列出现有广告单元(可选择按应用程序筛选) |
admob_create_ad_unit | 创建新的广告单元(横幅、插播、奖励、应用程序开放、原生)\* |
admob_integrate | 为您的项目生成React Native广告组件和配置 |
admob_status | 检查AdMob OAuth配置和身份验证状态 |
**\*访问受限:admob_create_app和admob_create_ad_unit使用AdMobneneneba API v1beta创建方法,这些方法具有 Google限制访问**。大多数帐户将收到403权限拒绝错误。要使用这些,您必须向您的Google帐户经理请求访问权限。作为替代方案,直接在 AdMob控制台,然后使用admob_list_apps,admob_list_ad_units,以及admob_integrate为您的项目生成集成代码。
快速开始
1.在Claude代码中安装
claude mcp add app-publisher -- npx @seungmanchoi/app-publisher-mcp或者使用环境变量:
claude mcp add app-publisher \
-e GEMINI_API_KEY=your_api_key_here \
-e GEMINI_MODEL=gemini-2.5-flash-image \
-- npx @seungmanchoi/app-publisher-mcp2.手动配置
添加到您的Claude Code MCP配置中(~/.claude.json):
{
"mcpServers": {
"app-publisher": {
"command": "npx",
"args": ["@seungmanchoi/app-publisher-mcp"],
"env": {
"GEMINI_API_KEY": "your_api_key_here",
"GEMINI_MODEL": "gemini-2.5-flash-image"
}
}
}
}3.重新启动克劳德代码
添加MCP服务器后,重新启动Claude Code进行连接。
获取API密钥
Google Gemini API密钥(必需)
Gemini API键是人工智能图像生成所必需的(图标、启动屏幕、屏幕截图)。
步进
- 首选 谷歌AI工作室
- 使用您的Google帐户登录
- 点击 “创建API密钥”
- 选择一个Google Cloud项目(或创建一个新项目)
- 复制生成的API密钥(以开头
AIza...)
设置API密钥
选项A:环境变量(推荐)
claude mcp add app-publisher \
-e GEMINI_API_KEY=AIzaSy... \
-- npx @seungmanchoi/app-publisher-mcp选项B:运行时配置 连接MCP后,使用 configure_api_key 工具:
“将我的Gemini API密钥设置为AIzaSy…”
选项C:配置文件 密钥存储在 ~/.app-publisher/config.json 并在会话中持续存在。
定价
| 型号 | 每张图片价格 | 速度 | 质量 |
|---|---|---|---|
gemini-2.5-flash-image | ~0.039美元 | 3-5秒 | 标准 |
gemini-3-pro-image-preview | 约0.035美元(4K:约0.24美元) | 10-15秒 | 最佳 |
谷歌提供了一个免费的开发限制。检查 谷歌人工智能定价 以目前的价格。
Google AdMob OAuth凭据(用于广告管理)
需要通过AdMob API创建和管理广告单元。
步进
- 首选 谷歌云控制台
- 创建新项目或选择现有项目
- 启用 AdMob API:
- 首选 API和服务 > 图书馆 - 搜索“AdMob API” - 点击 启用
- 创建OAuth 2.0凭据:
- 首选 API和服务 > 凭证 - 点击 “创建凭据” > “OAuth客户端ID” - 应用程序类型: 桌面应用 - 命名它(例如,“应用发行商mcp”) - 点击 创建
- 复制 客户端ID 和 客户端密钥
备注:如果系统提示,请先配置OAuth同意屏幕(外部类型适合个人使用)。添加范围admob.monetization和admob.readonly.
在MCP中设置AdMob
1. "Configure AdMob with client ID xxx and secret yyy"
→ Stores credentials and returns an authorization URL
2. Open the URL in your browser and sign in with your Google account
→ Grant access and copy the authorization code
3. "Authenticate AdMob with code xxxx"
→ Exchanges code for tokens (stored in ~/.app-publisher/config.json)
4. "List my AdMob apps"
→ Verify connection works在哪里获取AdMob帐户
- 首选 谷歌AdMob
- 使用您的Google帐户登录
- 接受服务条款
- 创建您的第一个应用程序或链接现有应用程序
重要:AdMob凭据存储在本地 ~/.app-publisher/config.json刷新令牌用于自动续订访问令牌。苹果应用商店连接(用于iOS发布)
仅当您想发布到App Store时才需要。
步进
- 首选 App Store Connect
- 使用您的Apple Developer帐户登录(需要99美元/年的会员资格)
- 首选 用户和访问 > 集成 > 应用商店连接API
- 点击 “生成API密钥”
- 给它起个名字(例如,“应用发行商mcp”)
- 选择 “管理员” 角色
- 下载
.p8私钥文件(您只能下载一次!) - 记下:
- 密钥ID (例如。, ABC1234567) - 发行方ID (显示在页面顶部)
在Fastlane中使用API密钥
放置 .p8 项目中的文件(例如。, fastlane/keys/)并将API密钥块添加到您的 Fastfile:
api_key = app_store_connect_api_key(
key_id: "ABC1234567",
issuer_id: "your-issuer-id-here",
key_filepath: File.join(Dir.pwd, "keys", "AuthKey_ABC1234567.p8"),
in_house: false
)
platform :ios do
lane :release do
deliver(
api_key: api_key,
# ... other options
)
end
end小贴士:添加fastlane/keys/*.p8到.gitignore以避免提交私钥。这.p8复制到项目后,可以从下载中删除该文件。
在哪里获取Apple开发者帐户
- 首选 Apple 开发者计划
- 点击 “注册”
- 使用您的Apple ID登录
- 支付99美元/年的会员费
- 等待批准(通常24-48小时)
Google Play控制台(用于Android发布)
仅当您想发布到Google Play时才需要。
步骤1:创建Google云服务帐户
- 首选 谷歌云控制台
- 创建新项目或选择现有项目
- 启用 Google Play Android开发人员API:
- 首选 API和服务 > 图书馆 - 搜索“Google Play Android开发者API” - 点击 启用
- 创建服务帐户:
- 首选 IAM和管理员 > 服务账户 - 点击 “创建服务帐户” - 姓名: Play Store Deploy (或任何名称) - 身份证件: play-store-deploy - 说明: Service account for Google Play Store publishing via fastlane - 跳过角色分配(不需要,权限在Play Console中设置)
- 创建JSON密钥:
- 点击服务帐户> 钥匙 选项卡> 添加关键点 > 创建新密钥 > JSON - 下载JSON密钥文件 - 注意 服务帐户电子邮件 (例如。, play-store-deploy@project-id.iam.gserviceaccount.com)
步骤2:在Google Play控制台中授予访问权限
重要:“API访问”菜单在某些帐户中可能不可见。请改用“用户和权限”方法。
方法A:通过API访问(如果可用)
- 首选 谷歌游戏控制台 > 设置 > API访问
- 链接您的Google Cloud项目
- 授予对服务帐户的访问权限
方法B:通过用户和权限(推荐)
- 首选 谷歌游戏控制台 > 用户和权限
- 点击 “邀请新用户”
- 进入 服务帐户电子邮件 从步骤1
- 设置权限:
- 发布管理 (管理生产、测试轨道) - 编辑店铺列表 (更新元数据、屏幕截图)
- 点击 “邀请用户”
备注:权限可能需要24小时才能完全传播。
步骤3:在MCP中配置
选项A:文件路径(密钥文件保留在磁盘上)
"Configure Play Store with JSON key at ~/Downloads/my-service-account.json for project ~/works/my-app"这将验证密钥,并将其复制到 fastlane/keys/,更新Appfile,并添加到.gitignore。
选项B:内联JSON(存储在配置中,删除原始文件)
"Configure Play Store with inline JSON key data: { ... }"JSON内容存储在 ~/.app-publisher/config.json。配置后,您可以安全地删除原始密钥文件。部署到项目时,密钥从config写入到 fastlane/keys/.
选项C:使用playstore_setup_key工具
"Set up Play Store publishing for ~/works/my-app with JSON key ~/Downloads/my-key.json and package name com.example.myapp"这将创建完整的fastlane Android设置,包括元数据目录结构。
选项C:手动设置
将JSON密钥文件放入您的项目中(例如。, fastlane/keys/)并引用它 Appfile:
# fastlane/Appfile
json_key_file("fastlane/keys/play-store-service-account.json")
package_name("com.example.myapp")然后使用快车道供应上传:
# Upload to production
fastlane android release aab:"path/to/app.aab"
# Upload to internal testing
fastlane android internal aab:"path/to/app.aab"
# Upload metadata only
fastlane android metadata小贴士:添加fastlane/keys/*.json到.gitignore以避免提交服务帐户密钥。
在哪里获取Google Play开发者帐户
- 首选 Google Play控制台注册
- 使用您的Google帐户登录
- 支付25美元的一次性注册费
- 完整的开发人员简介
- 验证身份(可能需要几天时间)
Fastlane(用于商店发布)
必需的 为了 setup_fastlane, publish_ios, publish_android, populate_metadata,以及 validate_metadata 工具。
# macOS (recommended)
brew install fastlane
# or via Ruby
gem install fastlane备注:年龄分级和应用程序隐私设置必须直接在中配置 App Store Connect --fastlane不支持上传这些内容。使用 generate_store_listing 工具获取这些设置的分步指南。用法示例
生成应用图标
“为冥想应用程序生成一个应用程序图标——一朵带有平静蓝色和紫色渐变的莲花”
AI将创建一个专业应用程序图标并将其保存到 ~/app-publisher-assets/.
为所有平台调整大小
“为iOS和Android调整~/app publisher assets/icon.xxx.png中的图标大小”
这将产生:
- iOS:15种尺寸(20px ~ 1024px)+Xcode
Contents.json - 安卓:6种尺寸(mdpi ~ xxxhdpi)+播放商店512x512
生成商店截图
“为健身应用程序生成屏幕截图模型,显示带有进度图的锻炼仪表板”
设置快车道
“使用bundle ID com.example.myapp在~/myapp为我的项目设置快车道”
您还可以提供评论联系信息和版权:
“为~/myapp设置快车道,捆绑包ID为com.example.myapp,应用程序名称为“我的应用程序”,版权为“2026 John Doe”,查看联系电子邮件john@example.com"
这将创建:
fastlane/Fastfile-通过以下方式构建和部署通道:
- 自动设置当年版权 - app_review_information 阻止(防止 No data 新应用程序崩溃) - precheck_include_in_app_purchases: false (用于API密钥验证) - skip_app_version_update: true 仅用于元数据上传
fastlane/Appfile-应用程序配置fastlane/metadata/-存储列表元数据结构(每个区域设置10个文件)
填充元数据
生成店铺列表内容后,将其直接写入fastlane元数据文件:
“使用en-US名称“My App”、描述“A great App…”和ko名称填充~/myapp的快车道元数据”내 앱'"
这将内容写入 fastlane/metadata/{locale}/{field}.txt 文件夹。支持的字段: name, subtitle, description, keywords, promotional_text, release_notes, privacy_url, support_url, marketing_url, copyright.
验证元数据
上传前,请根据App Store要求检查元数据:
“验证~/myapp的快车道元数据”
检查:
- 字幕:最多30个字符
- 关键词:最多100个字符
- 所需文件:
name.txt,description.txt,privacy_url.txt,support_url.txt - 版权:必须包括当前年份
生成商店列表元数据
“在~/myapp为我的项目生成商店列表元数据”
分析您的项目(package.json、app.json、README.md、CLAUDE.md、docs/)并生成:
iOS(应用商店连接):
- 应用程序名称、副标题、描述、关键字
- 类别推荐
- 隐私政策内容
- App Review团队的评审说明
- iOS年龄分级7步指南 -自动检测应用程序功能(广告、UGC、聊天、网络访问、赌博、健康内容、暴力等),并为app Store Connect年龄评级问卷的所有7个步骤生成完整答案
- 应用程序隐私数据指南 -自动根据依赖关系(AdMob、分析、认证、IAP等)检测数据收集,并为App Store Connect“信任与安全>应用隐私”问卷生成完整答案,包括数据类型、使用目的、身份链接和跟踪状态
安卓(谷歌游戏控制台):
- 应用程序标题、简短/完整描述
- 类别推荐
- 内容评级指南
- 隐私政策内容
支持4种语言:
- 韩语(ko)、英语(en)、日语(ja)、简体中文(zh)
您可以指定平台和语言:
“为~/myapp生成韩语版iOS商店列表” “为~/myapp生成日语商店列表” “为~/myapp生成中文店铺列表”
获取发布指南
“在~/myapp上显示我项目的iOS发布指南”
返回根据您的项目信息定制的详细分步指南:
- iOS:12个步骤(开发人员帐户→ 试飞)
- 安卓:7个步骤(游戏控制台→ 发布管理)
- 自动检测框架(Expo、React Native、Flutter、Native)
- 包括框架的实际构建命令
Maestro UI测试
Maestro是一个移动UI测试框架,可让您在模拟器和仿真器上自动与应用程序进行交互。
设置
“设置Maestro进行UI测试”
这将检查Java 17+并自动安装Maestro CLI。
拍摄屏幕截图
“截取我正在运行的应用程序的屏幕截图”
从正在运行的iOS模拟器或Android模拟器中捕获当前屏幕。
运行UI测试流
在com.myapp上运行UI流:启动应用程序,点击“登录”,输入test@email.com'进入电子邮件字段,截图”
将自然语言步骤转换为Maestro流并执行。可用操作: launchApp, tapOn, inputText, swipe, scroll, assertVisible, takeScreenshot, back, home以及更多。
创建店铺营销截图
“使用~/screenshot.png上的截图,为iOS和Android创建标题为“你的照片,完全受保护”的商店截图”
或者从跑步模拟器中自动捕捉:
“为iOS创建标题为“跟踪你的习惯”的商店截图”
这个:
- 从模拟器中捕获屏幕截图(或使用提供的图像)
- 使用Gemini AI将屏幕截图与标题和设备框架合成
- 根据每个平台的确切存储尺寸进行调整
iOS商店大小:
| 设备 | 尺寸 |
|---|---|
| iPhone 6.7英寸(必填) | 1284 x 2778 |
| iPhone 6.5英寸(必填) | 1242 x 2688 |
| iPhone 5.5英寸 | 1242 x 2208 |
| iPad 12.9英寸 | 2048 x 2732 |
Android应用商店大小:
| 设备 | 尺寸 |
|---|---|
| 电话(必填) | 1080 x 1920 |
| 平板电脑7英寸 | 1200 x 1920 |
| 平板电脑10英寸 | 1920 x 1200 |
您可以自定义背景颜色、文本颜色,并选择特定的设备尺寸:
“为iPhone 6.7和手机创建一个黑色背景、白色文本、标题为“美丽设计”的商店截图”
AdMob集成
设置AdMob
这将存储您的OAuth凭据并提供授权URL。访问该URL,登录并复制授权代码。
“使用代码4/0AY0e-xxx对AdMob进行身份验证”
创建广告单元
“列出我的AdMob应用程序”
“为应用程序ca-app-pub-xxxxx~yyyyy创建一个名为“主页横幅”的横幅广告单元”
“为应用程序ca-app-pub-xxxxx~yyyyy创建一个名为“Level Complete”的奖励广告单元”
支持的格式: BANNER, INTERSTITIAL, REWARDED, REWARDED_INTERSTITIAL, APP_OPEN, NATIVE
生成集成代码
“将AdMob与我刚刚创建的广告单元集成到我在~/myapp的项目中”
这将产生:
- 广告组件 在
src/features/ads/(横幅、插播、奖励、AppOpen) - 测试ID支持 --在中自动使用测试广告
__DEV__模式 - app.json配置 为了
react-native-google-mobile-ads - ATT(应用程序跟踪透明度) iOS的设置说明
每个生成的组件都可以使用:
import { AdHomeBanner } from '@features/ads';
// In your screen
完整的AdMob工作流程
1. "Configure AdMob with client ID and secret"
2. Visit auth URL → Copy code
3. "Authenticate AdMob with code xxxx"
4. "List my AdMob apps"
5. "Create a banner ad unit for my app"
6. "Integrate AdMob into my project at ~/myapp"
7. Import and use the generated components发布到商店
“将我的iOS应用发布到app Store。项目位于~/myapp”
“将我的Android应用程序发布到内部测试轨道”
生成的图标大小
iOS(15个图标+Contents.json)
| 用法 | 尺寸 |
|---|---|
| 通知 | 20@2x(40px),20@3x(60像素) |
| 设置 | 29@2x(58px),29@3x(87像素) |
| 聚光灯 | 40@2x(80px),40@3x(120像素) |
| 应用程序 | 60@2x(120px),60@3x(180像素) |
| iPad | 20、29、40、76,76@2x(152px),83.5@2x(167像素) |
| 应用商店 | 1024x1024 |
生成的 Contents.json 与Xcode完全兼容-只需拖动 AppIcon.appiconset 将文件夹添加到您的资产目录中。
安卓系统(6个图标)
| 密度 | 大小 | 文件夹 |
|---|---|---|
| mdpi | 48x48 | mipmap-mdpi |
| hdpi | 72x72 | mipmap-hdpi |
| xhdpi | 96x96 | mipmap-xhdpi |
| xxhdpi | 144x144 | mipmap xxhdpi |
| xxxhdpi | 192x192 | mipmap xxxhdpi |
| 游戏商店 | 512x512 | - |
AI模型选择
| 型号 | 最适合 | 速度 | 质量 |
|---|---|---|---|
gemini-2.5-flash-image | 快速原型制作,迭代 | 快速(3-5s) | 良好 |
gemini-3-pro-image-preview | 最终资产,4K输出 | 较慢(10-15s) | 最佳 |
设置您的首选型号:
“将模型设置为gemini3-pro-image-review”
或者使用环境变量:
GEMINI_MODEL=gemini-3-pro-image-preview配置优先
设置按以下顺序解决(最高优先级优先):
- 按请求参数 -
model工具调用中的参数 - 环境变量 -
GEMINI_API_KEY,GEMINI_MODEL - 配置文件 -
~/.app-publisher/config.json - 默认 -
gemini-2.5-flash-image
Vibe编码工作流程
此MCP专为vibe编码工作流程而设计-使用AI构建您的应用程序,然后发货:
1. Build your app with Claude Code
2. "Generate an icon for my app" → AI creates the icon
3. "Resize it for iOS and Android" → All sizes generated
4. "Set up AdMob and create ad units" → Monetization ready
5. "Integrate AdMob into my project" → Ad components generated
6. "Set up Maestro and take a screenshot of my app" → Live app capture
7. "Create store screenshots with headline 'Your App, Reimagined'" → Marketing-ready images
8. "Generate store listing for my project" → All metadata ready
9. "Set up fastlane for my project" → Fastlane configured with review info & copyright
10. "Populate fastlane metadata" → Store listing written to metadata files
11. "Validate metadata" → Check before uploading
12. "Show me the iOS publishing guide" → Step-by-step instructions
13. "Publish to App Store" → App goes to stores不需要设计技能。没有菲格玛。无需手动调整大小。只是感觉和船。
故障排除
“Gemini API密钥未配置”
使用中描述的方法之一设置API密钥 获取API密钥.
“此模型仅支持文本输出”
您使用的模型不支持图像生成。切换到 gemini-2.5-flash-image 或 gemini-3-pro-image-preview.
“未安装快车道”
安装快车道: brew install fastlane (macOS)或 gem install fastlane (Ruby)。
图标在小尺寸时看起来不对
尝试更简单的图标设计。复杂的设计在20x20或29x29像素下效果不佳。使用大胆的形状和最少的细节。
“Maestro不可用”
Maestro需要Java 17+。先安装Java,然后运行 setup_maestro 工具:
brew install openjdk@17“没有正在运行的模拟器或仿真器”
在使用Maestro工具之前,请先启动iOS模拟器或Android模拟器:
# iOS
open -a Simulator
# Android
emulator -avd “AdMob未通过身份验证”
跑 configure_admob 使用您的OAuth客户端ID和密钥,然后使用以下命令完成身份验证流程 admob_auth。凭据存储在 ~/.app-publisher/config.json.
创建操作出现“AdMob API错误(403)”
AdMob API v1beta 创建方法 (accounts.apps.create, accounts.adUnits.create)有 受限访问.根据谷歌的文件: *此方法的访问权限有限。如果您看到403权限被拒绝错误,请联系您的帐户经理以获取访问权限* 列表和读取操作正常工作。在中创建应用程序和广告单元 AdMob控制台 相反,然后使用MCP工具列出并集成它们。
读取操作出现“AdMob API错误(403)”
确保:
- AdMob API已在您的谷歌云项目中启用
- 您的OAuth同意屏幕具有所需的范围(
admob.monetization,admob.readonly) - 您的AdMob帐户在以下时间处于活动状态 admob.google.com
MCP未连接
- 添加MCP服务器后重新启动Claude Code
- 检查中的服务器配置
~/.claude.json - 验证是否安装了Node.js:
node --version
发展
git clone https://github.com/seungmanchoi/app-publisher-mcp.git
cd app-publisher-mcp
npm install
npm run build
npm run lint许可证
麻省理工学院
