Skip to main content
Glama
willan23

dev-publish

by willan23
README.md
# dev-publish-mcp

MCP para a IA **publicar** (internal) e **manter** apps já na Google Play, com permissões por scope. A IA não se dá permissões a si própria.

## O que a IA pode fazer (se o dono conceder)

| Scope | Tools |
|---|---|
| `read` | `play_status`, `maintenance_digest` |
| `listing.write` | `play_update_listing`, `play_upload_images` |
| `reviews.read` | `play_list_reviews` |
| `reviews.reply` | `play_reply_review` |
| `testers.write` | `play_invite_testers` |
| `releases.internal` | `play_publish` (só internal) |
| `releases.promote` | `play_promote` — produção ainda precisa de `allowProduction` + frase `PROMOTE_TO_PRODUCTION` |

Pedidos da IA vão para `config/permission-requests.json`. Só tu activas com `npm run grant`.

## Setup

```bash
cd dev-publish-mcp
cp config/permissions.example.json config/permissions.json
# edita package name + scopes
node src/selftest.js
```

Service account da Play (não dry-run):

```bash
export GOOGLE_PLAY_SERVICE_ACCOUNT_JSON=/abs/path/play-sa.json
export PLAY_PACKAGE_NAME=com.tua.app
```

Sem estas variáveis o servidor corre em **dry-run** (não fala com a Google).

Conceder manutenção à IA:

```bash
node src/grant.js com.tua.app read listing.write reviews.read reviews.reply testers.write releases.internal
```

Produção (opcional, à parte):

```bash
# em config/permissions.json
# "allowProduction": true
node src/grant.js com.tua.app releases.promote
```

## Cursor / Claude Desktop

Podes usar o pacote diretamente do NPM via `npx` (recomendado):

```json
{
  "mcpServers": {
    "dev-publish": {
      "command": "npx",
      "args": ["-y", "@gnegro/dev-publish-mcp"],
      "env": {
        "GOOGLE_PLAY_SERVICE_ACCOUNT_JSON": "/caminho/absoluto/play-sa.json",
        "PLAY_PACKAGE_NAME": "com.tua.app",
        "DEV_PUBLISH_PERMISSIONS": "/caminho/absoluto/permissions.json"
      }
    }
  }
}
```

## Prompt do agente

```
Usa o MCP dev-publish.
Primeiro permissions_whoami e maintenance_digest.
Trabalha só com os scopes que tens.
Se faltar scope, permissions_request — não inventes acesso.
Publicação nova: play_publish track=internal.
Produção: só play_promote se eu escrever PROMOTE_TO_PRODUCTION.
Responde em português com o que mudou (reviewId, versionCode, track).
```

## Manutenção típica

- “Que reviews más temos?” → digest + list_reviews  
- “Responde a esta a pedir desculpa e apontar o fix 1.0.4” → reply  
- “Actualiza a short description em pt-PT” → update_listing  
- “Sobe este AAB para testers internos” → play_publish  
- “Põe 10% em produção” → o dono escreve a frase; a IA chama promote

TDQS

B3.3/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct action: permission introspection vs. permission request, status vs. maintenance digest, listing text vs. image upload, publish vs. promote. There is no pair where an agent would struggle to choose based on the names and descriptions.

Naming Consistency4/5

Most tools follow a domain-prefix pattern (permissions_*, play_*) with verb/noun descriptors, but maintenance_digest breaks the play_ prefix and play_status/permissions_whoami use noun-style names. Minor inconsistency, still predictable.

Tool Count5/5

Eleven tools is well within the sweet spot for a publishing-focused server, covering permissions, listing, reviews, testing, and release promotion without unnecessary duplication. Each tool earns its place.

Completeness4/5

The set covers the core Google Play lifecycle: upload to internal, promote through tracks, manage listing, handle reviews, and invite testers. It deliberately omits direct production publishing, and minor gaps like release rollback or detailed review management are workable.

Maintenance

ActivityMaintained
ResponsivenessNo issues