Skip to main content
Glama
README.md
# 📱 Servidor MCP "celular"

Um servidor [MCP (Model Context Protocol)](https://modelcontextprotocol.io) que dá a um assistente de IA,
como o **Claude Desktop**, ferramentas para:

- ver se há um **celular Android** conectado por USB e abrir um app nele (via `adb`);
- **tocar no VLC** as músicas e vídeos de pastas que você escolheu;
- abrir as suas **curtidas do SoundCloud** no navegador;
- apertar as **teclas de mídia do Windows** (tocar/pausar, próxima, anterior, volume, mudo).

Na prática, você diz *"abre meu app de estudos no celular e toca a pasta Treino em modo aleatório"* e o
assistente faz.

**Sem dependências:** é um único arquivo em Node.js puro, sem `npm install`.

## Ferramentas expostas

| Ferramenta | O que faz | Altera algo? |
|---|---|---|
| `status` | Diz se há celular conectado e se o app está instalado | Não |
| `abrir_ypt` | Abre o app YPT (cronômetro de estudos) no celular | Só abre o app |
| `midia_status` | Lista as pastas configuradas, com quantas músicas e vídeos cada uma tem | Não |
| `tocar_pasta` | Toca uma pasta no VLC, em ordem ou aleatório, em loop | Abre o VLC |
| `abrir_soundcloud` | Abre `soundcloud.com/you/likes` no navegador padrão | Abre o navegador |
| `controle_midia` | Aperta uma tecla de mídia do Windows | Controla o player |

Cada ferramenta declara as *annotations* do MCP (`readOnlyHint`, `destructiveHint`…), para o assistente saber
o que é só leitura e o que tem efeito.

## Instalação

**Requisitos:** Windows, [Node.js](https://nodejs.org) 16 ou mais novo,
[adb](https://developer.android.com/tools/releases/platform-tools) no PATH (só para as ferramentas do celular)
e [VLC](https://www.videolan.org/vlc/) (opcional: sem ele, a playlist abre no player padrão).

1. Copie `midia.exemplo.json` para `midia.json` e coloque as suas pastas:
   ```json
   {
     "pastas": [
       {"nome": "Treino", "caminho": "C:/Users/SEU_USUARIO/Music/Treino"}
     ]
   }
   ```
2. Registre o servidor no `claude_desktop_config.json` do Claude Desktop:
   ```json
   {
     "mcpServers": {
       "celular": {
         "command": "node",
         "args": ["C:/caminho/para/servidor-mcp-celular/celular-mcp.js"]
       }
     }
   }
   ```
3. Reinicie o Claude Desktop. As ferramentas aparecem com o nome `celular`.

### Variáveis de ambiente (opcionais)

| Variável | Para quê | Padrão |
|---|---|---|
| `ADB_PATH` | Caminho do `adb` | `adb` (do PATH) |
| `VLC_PATH` | Caminho do `vlc.exe` | `C:\Program Files\VideoLAN\VLC\vlc.exe` |
| `MIDIA_CONFIG` | Outro arquivo de pastas | `midia.json` ao lado do script |

## Testar sem o Claude

O protocolo é JSON-RPC, uma mensagem por linha, pela entrada padrão:

```bash
echo {"jsonrpc":"2.0","id":1,"method":"tools/list"} | node celular-mcp.js
```

## 🔒 Segurança

- **Só toca pastas que você listou** em `midia.json`. O assistente não consegue abrir caminhos arbitrários.
- `midia.json` (com os caminhos do seu PC) está no `.gitignore` e não vai para o Git.
- No celular, ele **só abre o app**: não toca na tela, não instala nada, não lê arquivos.
- Tudo roda localmente: nenhuma porta de rede é aberta e nada é enviado para fora.

## Como funciona

- Implementa à mão o mínimo do MCP sobre stdio (`initialize`, `ping`, `tools/list`, `tools/call`), sem SDK.
- As teclas de mídia usam `keybd_event` da `user32.dll`, chamada via PowerShell.
- A playlist é gerada como `.m3u8` na pasta temporária e aberta no VLC com `--one-instance`.

## Licença
MIT — veja [LICENSE](LICENSE).

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation4/5

The tools mostly target distinct actions: phone status vs. media folder status, opening YPT vs. opening SoundCloud, and starting folder playback vs. sending media keys. The only mild overlap is between tocar_pasta and controle_midia, but their descriptions make the boundary clear enough.

Naming Consistency3/5

All names are snake_case and in Portuguese, but the set mixes verb-first names (abrir_ypt, tocar_pasta, abrir_soundcloud) with noun-first names (status, midia_status, controle_midia). The convention is readable but not predictable.

Tool Count5/5

Six tools is a well-scoped size for this small personal automation server. Each tool covers a distinct operation without obvious filler.

Completeness4/5

The surface covers checking the phone, opening YPT, inspecting media folders, playing a folder, opening SoundCloud, and controlling playback. Minor gaps exist, such as no dedicated stop/next/previous or configuration tool, but core workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues