PubShip 是一个面向 Google Play 开发者工作流的开源 MCP(Model Context Protocol)服务器,运行在开发者自己的计算机或自有基础设施上,使用开发者自己的 Google 服务账号凭据。它并非 Google 官方产品,也不是托管服务,项目本身不会接收用户凭据。
主要能力:
- 读取应用版本发布(releases)、用户评论(reviews)、Android vitals 以及按范围划分的批量报告(scoped bulk reports)。
- 检查应用目录、订阅、产品与账号资源,其中敏感数据的读取需要单独授权。
- 准备并审查写操作,写操作需要明确的应用/方法权限,且为单次执行(single-use execution)。
- 本地文件传输受边界限制,并将发布(publication)与编辑暂存(edit staging)分离。
方法清单:内置固定清单包含 172 个方法定义,其中 170 个已有实现;一个订阅归档方法 Google 不支持;voided-purchases 访问被项目策略有意禁用。被禁用的操作无法通过本地或自托管工具调用。
安全与权限原则:
- 默认只读;可选的写操作和敏感读取需要显式配置。
- 使用自己的服务账号,并仅授予预期操作所需的最小权限。
- 私钥 JSON 文件应保存在本仓库之外,切勿将凭据粘贴到助手对话中。
- 提供方返回的文本视为不可信数据。
- 数据缺失不等于零;提交的变更不一定会立即发布;操作数量并不代表已通过 Google 实际验证。
使用方式:
- 通过 PyPI 安装已发布的包(命令见官方仓库)。
- 可用 uv sync 后执行 uv run pubship --check 检查本地版本。
- 该命令启动 stdio 服务器,等待 MCP 客户端连接。
- 在启动客户端的 shell 中设置所需环境变量,修改环境后需重启客户端。
- 仓库中的客户端清单声明本地服务账号密钥路径与包名;Gemini CLI 安装命令与配置详见客户端设置文档。
- 通用 MCP harness 配置为:可执行文件 uvx,参数 pubship,并配置本地环境。
- 对需要显式配置的客户端,可使用相应配置方式。
- 如需代理辅助安装,可阅读 llms-install.md,仅提供服务账号密钥文件路径,绝不提供其内容。
自托管: pubship-server 保留 HTTP 实现,供开发者自行控制的基础设施使用。缺少 PUBSHIP_SERVER_ALLOWED_EMAILS 时服务器拒绝启动。登录需要签名的 Google ID token、经过验证的精确邮箱匹配以及 nonce 绑定,之后才会持久化 Google 凭据。将某账号从允许列表移除后,其已存储的授权将在下次使用时失效。没有经过验证身份的旧授权必须重新连接。在操作者显式启用之前,注册保持关闭。
适用场景: 希望自动化自己或所在组织的 Google Play 发布与检查工作的开发者,且能够自行管理服务账号、权限和本地运行环境。
限制与说明:
- 仅用于你或你所在组织拥有的应用和开发者账号。
- 需遵守 Google 的 Play Developer API 条款。
- 由他人运行的 PubShip 托管实例不由 PubShip 项目提供或背书。
- 测试使用模拟提供方;浏览器测试需要安装 Playwright 引擎;备份集成测试需要 age。无法进行的平台检查会被如实记录。
- 离线 lint 不是模型评分等级。
- 源码版本可能先于包发布。
- 关于许可证:PubShip 是自由软件,采用 GNU Affero General Public License v3.0 only(AGPL-3.0-only)。版权所有 (C) 2026 Denys Vorobyov。其他许可条款可联系 legal@pubship.dev。
- 项目名称、商标与第三方声明详见仓库说明。