ShipKit——统一应用发布MCP服务器
](https://badge.fury.io/js/@readmigo%2Fshipkit-mcp)  ](https://nodejs.org/)
AI Agent友好的统一应用发布,适用于Google Play、Apple app Store、华为AppGallery和10多个中国Android商店。
ShipKit是一个 模型上下文协议(MCP) 该服务器允许AI代理(Claude Code、Cursor、Windsurf)使用单个自然语言命令将应用程序发布到多个应用程序商店。它通过提供跨不同平台需求的统一API消除了手动发布工作流。
______________________________________________________________________
什么是ShipKit?
ShipKit弥合了“Vibe Coding”(人工智能辅助开发)和“Vibe Shipping”(人工智慧辅助出版)之间的差距。使用ShipKit,您可以询问您的AI代理:
"Help me publish v2.1.0 to all stores"ShipKit处理复杂性:身份验证、构建工件上传、元数据转换、合规性检查和多平台发布编排。
为什么选择ShipKit?
- 统一接口:一个MCP服务器,适用于10多个API差异巨大的应用商店
- AI原生设计:专为AI代理理解、使用和自动化而构建
- 多区域:全球商店(Google Play、App Store)+中国特定分销(小米、OPPO、vivo等)
- 内置合规性:ICP、隐私政策和平台特定要求的提交前检查
- 安全可靠:所有操作都支持幂等性密钥,并提供详细的错误恢复建议
______________________________________________________________________
支持的商店
| 存储 | 平台 | 区域 | 身份验证 | 上传格式 | 状态 |
|---|---|---|---|---|---|
| Google Play | 安卓 | 全球 | OAuth 2.0服务帐户 | APK/AAB | ✅ 可用 |
| 苹果应用商店 | iOS | 全球 | 智威汤逊(ES256) | IPA | ✅ 可用 |
| 华为AppGallery | 安卓 | 全球/中国 | OAuth 2.0 | APK/AAB | ✅ 可用 |
| 小米商店 | 安卓 | 中国 | RSA签名 | APK/AAB | ✅ 可用 |
| OPPO商店 | 安卓 | 中国 | OAuth令牌 | APK/AAB | ✅ 可用 |
| 荣誉应用市场 | 安卓 | 中国 | OAuth 2.0 | APK/AAB | ✅ 可用 |
| Pgyer | 安卓/iOS | 中国 | API密钥 | APK/IPA | ✅ 可用 |
| vivo商店 | 安卓 | 中国 | API密钥+RPA | APK/AAB | 🚧 发展中 |
| 腾讯MyApp | 安卓 | 中国 | 应用密钥+HMAC-MD5 | APK | 🚧 发展中 |
| 三星Galaxy Store | 安卓 | 全球 | 智威汤逊服务帐户 | APK/AAB | 📋 计划中 |
| HarmonyOS | HarmonyOS | 中国 | OAuth 2.0(通过华为) | HAP | 📋 计划中 |
| 魅族商店 | 安卓 | 中国 | 定制 | APK/AAB | 📋 计划中 |
______________________________________________________________________
快速开始
Claude Code的安装
claude mcp add shipkit -- npx -y @readmigo/shipkit-mcp克劳德桌面/光标/风帆的安装
添加到MCP配置文件中:
克劳德桌面版 (~/Library/Application Support/Claude/claude_desktop_config.json 或 %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"shipkit": {
"command": "npx",
"args": ["-y", "@readmigo/shipkit-mcp"],
"env": {
"SHIPKIT_API_KEY": "sk-your-api-key-here"
}
}
}
}光标 (.cursor/mcp.json 在您的项目中):
{
"mcpServers": {
"shipkit": {
"command": "npx",
"args": ["-y", "@readmigo/shipkit-mcp"],
"env": {
"SHIPKIT_API_KEY": "sk-your-api-key-here"
}
}
}
}首次设置:连接您的商店
您需要在每家商店进行身份验证。ShipKit安全地存储凭据并自动处理令牌刷新。
Google Play设置
在中创建服务帐户 谷歌云控制台 并下载JSON密钥:
$ claude
> Connect me to Google Play
> I'll need your service account key...以JSON格式提供凭据:
{
"type": "service_account",
"project_id": "your-project-id",
"private_key_id": "key-id",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
"client_email": "your-sa@your-project.iam.gserviceaccount.com",
"client_id": "123456789",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token"
}苹果应用商店设置
使用App Store Connect API凭据(基于JWT):
{
"issuerId": "your-issuer-id",
"keyId": "your-key-id",
"privateKey": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----"
}华为AppGallery设置
来自的OAuth 2.0凭据 华为AppGallery Connect:
{
"clientId": "your-client-id",
"clientSecret": "your-client-secret"
}______________________________________________________________________
用法示例
示例1:首次连接到Google Play
User: I want to set up Google Play publishing. Where do I start?
Claude: I'll help you connect ShipKit to Google Play. First, let me check what
stores you have configured.
> store.list()
Connected stores: []
No stores connected yet. Let me guide you through setting up Google Play:
1. Go to Google Cloud Console (https://console.cloud.google.com/)
2. Create a new service account
3. Download the JSON key file
4. Paste the key contents when ready
User: [pastes JSON key]
Claude: Great! Let me configure this...
> store.connect({
"store": "google_play",
"credentials": { ... }
})
✓ Google Play connected successfully!
Let me verify by listing your apps:
> store.list()
Connected stores:
- google_play (3 apps: com.example.app, ...)示例2:检查所有平台的状态
User: What's the status of v2.0.0 across all stores?
Claude: Let me check the review status for version 2.0.0...
> app.status({
"app_id": "com.example.app",
"version": "2.0.0"
})
Status Report:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Store Status Days in Review Notes
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Google Play IN_REVIEW 2 Automated review
Apple App Store APPROVED 4 Live on App Store
Huawei AppGallery APPROVED 5 Live in China
Xiaomi REJECTED - Icon dimensions incorrect
OPPO IN_REVIEW 1 Manual review queue
vivo IN_QUEUE 0 Awaiting review
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Xiaomi rejected due to icon requirements. Let me get specific feedback...
> compliance.check({
"app_id": "com.example.app",
"stores": ["xiaomi"]
})
Compliance Issues:
- Icon: Must be square with 18px rounded corners (you have 16px)
- Privacy Policy: Link must be in Settings > About > Privacy Policy menu
Suggested fix: Update icon and resubmit to Xiaomi.示例3:将新版本发布到所有商店
User: Release v2.1.0 to all stores
Claude: I'll help you release v2.1.0. Let me start by running compliance
checks across all platforms...
> compliance.check({
"app_id": "com.example.app",
"version": "2.1.0",
"stores": "all"
})
✓ All platforms passed compliance checks!
Now uploading builds...
> app.upload({
"app_id": "com.example.app",
"version": "2.1.0",
"builds": [
{ "format": "aab", "path": "./build/app-release.aab" },
{ "format": "ipa", "path": "./build/app.ipa" }
]
})
Upload Progress:
Google Play ████████████████████ 100%
Apple App Store ████████████████████ 100%
Huawei AppGallery ████████████████████ 100%
Xiaomi ████████████████████ 100%
OPPO ████████████████████ 100%
All builds uploaded successfully!
Now publishing to all platforms...
> app.publish({
"app_id": "com.example.app",
"version": "2.1.0",
"stores": "all",
"rollout_percentage": 100
})
Publishing Status:
✓ Google Play - Submitted for review
✓ Apple App Store - Awaiting manual review
✓ Huawei AppGallery - Live immediately
✓ Xiaomi - Submitted for review
✓ OPPO - Submitted for review
⏳ vivo - Queued for review
Release v2.1.0 submitted to all stores! I'll monitor progress and notify
you when reviews complete.______________________________________________________________________
MCP工具参考
ShipKit为应用程序发布操作提供了8个核心MCP工具:
| 工具 | 类别 | 描述 | 参数 | 状态 |
|---|---|---|---|---|
store.list | 发现 | 列出所有已配置的存储及其连接状态 | app_id? | ✅ 可用 |
store.connect | 配置 | 配置应用商店并进行身份验证 | store, credentials, app_id? | ✅ 可用 |
app.upload | 发布 | 将APK/AAB/IPA/HAP构建工件上传到商店 | app_id, version, builds[], stores? | ✅ 可用 |
app.listing | 元数据 | 查看和更新商店列表(标题、描述、屏幕截图等) | app_id, action (获取/更新), store, locale?, content? | ✅ 可用 |
app.release | 发布 | 管理发布轨迹、阶段和推出百分比 | app_id, version, stores, action (创建/更新), rollout_percentage? | ✅ 可用 |
app.status | 监控 | 跨平台查询审核状态、审批状态和分析 | app_id, version?, stores? | ✅ 可用 |
app.publish | 发布 | 提交应用程序以供审核或立即发布到指定商店 | app_id, version, stores[], release_track?, auto_publish? | ✅ 可用 |
compliance.check | 验证 | 提交前合规性检查(ICP、隐私政策、图标规格等) | app_id, version?, stores[] | ✅ 可用 |
______________________________________________________________________
建筑
ShipKit使用模块化适配器模式来处理截然不同的商店API:
┌─────────────────────────────────────┐
│ AI Tools & CI/CD Integration │
│ (Claude Code, Cursor, Windsurf) │
│ GitHub Actions, etc. │
└──────────────┬──────────────────────┘
│
│ MCP Protocol (JSON-RPC)
│ REST API, CLI
▼
┌─────────────────────────────────────┐
│ ShipKit Core Orchestrator │
│ • Authentication Manager (unified) │
│ • Metadata Transformer │
│ • Job Queue (async/idempotent) │
│ • Compliance Engine │
└──────────────┬──────────────────────┘
│
┌──────────┼──────────┬─────────┬─────────┐
▼ ▼ ▼ ▼ ▼
┌────────┐ ┌───────┐ ┌──────┐ ┌──────┐ ┌──────┐
│ Google │ │Apple │ │Huawei│ │Xiaomi│ │OPPO │
│ Play │ │App │ │ AGC │ │Store │ │Store │
│Adapter │ │Store │ └──────┘ └──────┘ └──────┘
└────────┘ │Adapter│
└───────┘
⋮ (vivo, Samsung, HarmonyOS, etc.)
Plus RPA fallback for incomplete APIs关键设计原则:
- 统一接口:所有商店都执行相同的操作
StoreAdapter与以下方法接口authenticate(),uploadBuild(),publishRelease(),getStatus()等等。
- 店铺特定处理:每个存储适配器封装特定于平台的详细信息(API版本、身份验证策略、元数据要求)。
- 异步作业队列:长时间运行的操作(上传、评论)排队等待指数重试、进度跟踪和死信处理。
- 临时运营:每个写入操作都接受一个
idempotency_key以防止重复提交。
- 凭据管理:所有存储凭据都是加密的,并存储在服务器端。AI代理永远看不到原始凭证。
- RPA回退:对于没有完整API的商店,Playwright浏览器自动化提供了具有反检测措施的回退。
______________________________________________________________________
路线图
✅ 已完成(当前MVP)
- \[x\] Google Play适配器(完全支持API)
- \[x\] Apple App Store适配器(完全支持API)
- \[x\] 华为AppGallery适配器(完全支持API)
- \[x\] 小米商店适配器(支持API)
- \[x\] OPPO商店适配器(支持API)
- \[x\] 荣誉应用程序市场适配器(API支持)
- \[x\] Pgyer适配器(测试分布)
- \[x\] 配备8个核心工具的MCP服务器
- \[x\] CLI工具(shipkit命令)
- \[x\] 基本合规检查(ICP、隐私政策)
- \[x\] TypeScript SDK
🚧 开发中(下季度)
- \[\]vivo Store适配器(API+RPA混合型)
- \[\]腾讯MyApp适配器(API+RPA混合)
- \[\]增强的合规引擎(应用程序权限、内容评级)
- \[\]用于监控和手动干预的Web仪表板
- \[\]对CI/CD集成的Webhook支持
- \[\]多账户管理(团队协作)
📋 计划(后期)
- \[\]三星Galaxy Store适配器
- \[\]HarmonyOS适配器(HarmonyOS NEXT)
- \[\]魅族商店适配器
- \[\]构建注册表集成(工件存储/版本控制)
- \[\]分析聚合(跨商店的下载、评级、评论)
- \[\]Python SDK
- \[\]REST API v1.0(稳定版本)
- \[\]商业托管/SaaS选项
______________________________________________________________________
贡献
添加新商店适配器
ShipKit的设计是可扩展的。以下是如何添加对新店的支持:
- 创建适配器文件:
src/adapters/[store-name]-adapter.ts
- 实施
StoreAdapter接口:
export class NewStoreAdapter implements StoreAdapter {
async authenticate(credentials: StoreCredentials): Promise
async uploadBuild(build: BuildArtifact): Promise
async createRelease(release: ReleaseConfig): Promise
async updateListing(listing: ListingUpdate): Promise
async submitForReview(version: string): Promise
async getStatus(version: string): Promise
async getAnalytics(version: string): Promise
}- 注册适配器:添加到
src/adapters/index.ts并更新store.list()工具
- 添加测试:在中创建测试套件
src/adapters/__tests__/[store-name].test.ts
- 文件:更新此README并将特定于商店的文档添加到
docs/stores/
有关适配器开发的详细指南,请参阅 贡献部分 或者打开一个问题。
______________________________________________________________________
许可证
麻省理工学院——见 许可证 详情
______________________________________________________________________
文档
- 完整的架构和设计: docs.readmigo.app/03-architecture/shipkit-design
- 存储适配器架构: docs.readmigo.app/03-architecture/store-adapter架构
- MCP协议规范: docs.readmigo.app/03-architecture/mcp-server协议规范
- API设计与人工智能代理集成: docs.readmigo.app/03-architecture/ai-agent-api-design
______________________________________________________________________
支持
- 问题和Bug报告:
- 讨论和问题:
- 文档网站: docs.readmigo.app/03-architecture/shipkit-design
______________________________________________________________________
内置于❤️ 用于AI原生应用发布
