orbit-mcp-server
by brunojmd1
README.md
# orbit-mcp-server
Servidor MCP remoto que conecta o app **Orbit** (o painel de tarefas que você vai gerar no Lovable) ao Claude. Com ele publicado e conectado, eu passo a poder criar, listar, atualizar, mudar o status e concluir suas tarefas diretamente, em qualquer conversa.
## Como as peças se encaixam
```
Você ──(pede no chat)──▶ Claude
│
│ chama ferramentas MCP (create_task, list_tasks, ...)
▼
orbit-mcp-server (este projeto)
│
│ chama a API REST do Orbit (Bearer token)
▼
App Orbit no Lovable + Supabase
(Edge Functions /tasks, /categories)
│
▼
Banco de tarefas + Web Push
(notificações no Chrome desktop/mobile)
```
## Passo a passo
### 1. Gerar o app Orbit no Lovable
1. Acesse lovable.dev e crie um novo projeto.
2. Cole o conteúdo de `prompt-lovable-orbit.md` (arquivo enviado junto) na caixa de prompt.
3. Deixe o Lovable gerar o projeto e conectar o Supabase (ele guia esse passo).
4. Depois de gerado, confira se o arquivo `API.md` foi criado no projeto com os endpoints `/tasks` e `/categories` — é a documentação que você vai usar no passo 3.
5. No painel do Supabase do projeto, defina o secret `API_TOKEN` (ou nome equivalente que o Lovable tiver usado) — essa é a string que a API vai exigir no header `Authorization: Bearer <token>`. Guarde esse valor.
6. Anote a URL base das Edge Functions do seu projeto Supabase (algo como `https://SEU-PROJETO.functions.supabase.co`).
### 2. Rodar este servidor localmente (opcional, para testar)
```bash
cd orbit-mcp-server
cp .env.example .env
# preencha ORBIT_API_BASE_URL, ORBIT_API_TOKEN e MCP_SHARED_SECRET no .env
npm install
npm run dev
```
O servidor sobe em `http://localhost:3000`, com o endpoint MCP em `POST /mcp` e um health-check em `GET /health`.
### 3. Publicar o servidor (para o Claude conseguir acessá-lo pela internet)
Este é um servidor Node/Express comum — qualquer host que rode Node serve. Sugestões simples e com plano gratuito:
- **Railway** (railway.app): "New Project" → "Deploy from GitHub repo" (suba esta pasta para um repositório) → configure as 3 variáveis de ambiente (`ORBIT_API_BASE_URL`, `ORBIT_API_TOKEN`, `MCP_SHARED_SECRET`) em Settings → Variables → deploy.
- **Render** (render.com): "New Web Service" apontando para o repositório, build command `npm install && npm run build`, start command `npm start`, e as mesmas variáveis de ambiente.
- **Fly.io**: `fly launch` na pasta do projeto e `fly secrets set ORBIT_API_BASE_URL=... ORBIT_API_TOKEN=... MCP_SHARED_SECRET=...`.
Depois do deploy, você terá uma URL pública, por exemplo `https://orbit-mcp-server.up.railway.app`. O endpoint MCP completo é essa URL + `/mcp`, ex: `https://orbit-mcp-server.up.railway.app/mcp`.
### 4. Conectar este servidor ao Claude
No Claude (claude.ai → Configurações → Connectors, ou no Claude Desktop/Cowork em Conectores personalizados):
1. Adicione um **Custom Connector** (MCP remoto via HTTP).
2. URL: `https://SEU-DEPLOY/mcp`
3. Header de autenticação: `Authorization: Bearer <o mesmo valor de MCP_SHARED_SECRET>`
4. Salve e ative o conector.
A partir daí, basta me pedir no chat: *"crie uma tarefa no Aviva para revisar o contrato até sexta"*, *"marca a tarefa X como concluída"*, *"lista minhas tarefas urgentes do BETS"* — e eu uso as ferramentas `create_task`, `list_tasks`, `change_task_status`, `complete_task`, `update_task` e `delete_task` deste servidor.
## Ferramentas MCP expostas
| Ferramenta | O que faz |
|---|---|
| `list_tasks` | Lista tarefas, com filtro opcional por categoria/status/prioridade |
| `list_categories` | Lista as 6 categorias (artiq, aviva, upunity, pessoal, dyconceito, bets) |
| `create_task` | Cria uma tarefa nova |
| `update_task` | Atualiza título, descrição, categoria, prioridade ou vencimento |
| `change_task_status` | Move a tarefa entre A Fazer / Em Andamento / Aguardando / Concluída |
| `complete_task` | Atalho para marcar como concluída |
| `delete_task` | Remove uma tarefa |
## Segurança
- O endpoint `/mcp` exige o header `Authorization: Bearer <MCP_SHARED_SECRET>` — sem isso, os pedidos são recusados com 401.
- O servidor nunca guarda suas tarefas — ele só repassa chamadas para a API do seu próprio projeto Supabase, autenticado com `ORBIT_API_TOKEN`.
- Troque `MCP_SHARED_SECRET` e `ORBIT_API_TOKEN` por strings longas e aleatórias (ex: `openssl rand -hex 32`).
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues