Kalodata MCP Server
README.md
# Kalodata MCP Server (TikTok Shop Analytics)
Servidor MCP (**Model Context Protocol**) construído em Python com o SDK oficial (`FastMCP` v1.x). Funciona como um wrapper completo para a **Kalodata Open API**, permitindo que assistentes e agentes de IA (como **Perplexity AI**, Claude, Cursor e outros) realizem pesquisas aprofundadas de mercado, análise de nichos, produtos vencedores, criadores e vídeos virais do TikTok Shop.
---
## 📌 O que é este projeto?
Este servidor expõe 8 ferramentas MCP para consulta de dados do TikTok Shop:
1. `category_rank` — Ranking de categorias por receita.
2. `category_detail` — Detalhes completos de uma categoria.
3. `product_rank` — Ranking dos produtos mais vendidos.
4. `product_detail` — Detalhes e métricas de um produto.
5. `creator_rank` — Ranking de criadores/influenciadores.
6. `creator_detail` — Detalhes e performance de um criador.
7. `video_rank` — Ranking de vídeos virais de vendas.
8. `video_detail` — Métricas de um vídeo específico.
Transporte nativo: **Streamable HTTP** na rota `/mcp`, compatível com Perplexity AI Custom Remote Connectors.
---
## 🚀 Setup Local
### 1. Pré-requisitos
- Python 3.10 ou superior.
- Chave de API Kalodata (`KALODATA_SECRET_KEY`).
### 2. Ambiente Virtual e Dependências
```bash
python -m venv .venv
# Ativar (Windows PowerShell):
.venv\Scripts\Activate.ps1
# Ativar (Linux/macOS):
source .venv/bin/activate
pip install -r requirements.txt
```
### 3. Configurar `.env`
```bash
cp .env.example .env
```
Edite `.env`:
```env
KALODATA_SECRET_KEY=sua_chave_aqui
KALODATA_BASE_URL=https://staging.kalodata.com
PORT=8000
HOST=0.0.0.0
```
> **Nota**: Se sua chave for de **produção**, altere `KALODATA_BASE_URL` para o host fornecido no e-mail de ativação da Kalodata.
---
## 🧪 Testes e Validação Local
### 1. Testar conexão direta com a API Kalodata (sem MCP)
```bash
python test_local.py
```
### 2. Iniciar o servidor MCP
```bash
python server.py
```
Saída esperada nos logs:
```
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
[kalodata-mcp] Servidor iniciando em http://0.0.0.0:8000/mcp
[kalodata-mcp] Transporte: streamable-http | 8 ferramentas registradas
```
### 3. Testar o endpoint `/mcp` via linha de comando
O endpoint correto é **`/mcp`** (testado e confirmado localmente com HTTP 200).
**Windows (PowerShell):**
```powershell
Invoke-WebRequest -Uri http://localhost:8000/mcp `
-Method POST `
-Headers @{"Accept"="application/json, text/event-stream"; "Content-Type"="application/json"} `
-Body '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' `
-UseBasicParsing | Select-Object -ExpandProperty Content
```
**Linux/macOS (curl):**
```bash
curl -s -N \
-H "Accept: application/json, text/event-stream" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' \
http://localhost:8000/mcp
```
Resposta esperada:
```
event: message
data: {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","serverInfo":{"name":"kalodata","version":"1.29.1"},...}}
```
> **Importante**: O Streamable HTTP exige os dois headers `Accept: application/json, text/event-stream`. Sem eles, o servidor retorna 406 Not Acceptable (comportamento correto do protocolo).
### 4. Testar com MCP Inspector (interface visual)
```bash
npx @modelcontextprotocol/inspector python server.py
```
---
## 🌐 Deploy Remoto (Render.com)
O projeto já inclui o arquivo `render.yaml` na raiz, permitindo deploy via **Blueprint** no Render.
### Passo a Passo:
1. **Criar repositório no GitHub** e fazer push:
```bash
git remote add origin https://github.com/seu-usuario/kalodata-mcp.git
git push -u origin master
```
2. Acesse [dashboard.render.com](https://dashboard.render.com) → **New +** → **Blueprint**.
3. Conecte o repositório. O Render detecta o `render.yaml` automaticamente.
4. Configure as variáveis de ambiente manualmente no painel do Render:
- `KALODATA_SECRET_KEY`: sua chave da Kalodata (rotacionada/nova)
- `KALODATA_BASE_URL`: `https://staging.kalodata.com` (ou URL de produção)
5. Clique em **Apply**. O Render fará o build e gerará a URL pública (ex: `https://kalodata-mcp.onrender.com`).
6. Teste o deploy:
```bash
curl -s -N \
-H "Accept: application/json, text/event-stream" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' \
https://kalodata-mcp.onrender.com/mcp
```
---
## 🔗 Registrando no Perplexity AI
1. Acesse **Perplexity AI** → **Configurações da Conta** → **Conectores**.
2. Clique em **"+ Conector personalizado"**.
3. Preencha:
- **Nome**: `Kalodata TikTok Shop Analytics`
- **Tipo**: `Remoto`
- **URL**: `https://kalodata-mcp.onrender.com/mcp`
- **Transporte**: `Streamable HTTP`
- **Autenticação**: `Nenhuma`
4. Salve. O Perplexity descobrirá automaticamente as 8 ferramentas.
> **Por que "Nenhuma" autenticação?** A chave da Kalodata fica no servidor (variável de ambiente), nunca exposta ao Perplexity.
---
## ✅ Checklist de Deploy Manual (Tarefas Fora do Agente)
Estas etapas dependem de contas externas e devem ser executadas por você manualmente:
- [ ] **1. GitHub** — Criar repositório `kalodata-mcp` no GitHub (pode ser privado).
- [ ] **2. Git Push** — Rodar `git remote add origin <URL>` e `git push -u origin master`.
- [ ] **3. Render** — Criar conta em [render.com](https://render.com) se ainda não tiver.
- [ ] **4. Blueprint** — No Render: **New +** → **Blueprint** → conectar repositório → detecta `render.yaml` automaticamente.
- [ ] **5. Variáveis secretas** — No painel do Render, preencher `KALODATA_SECRET_KEY` e `KALODATA_BASE_URL` manualmente (nunca commite esses valores).
- [ ] **6. Aguardar deploy** — O Render executa `pip install -r requirements.txt` e `python server.py`. Aguardar status "Live".
- [ ] **7. Testar endpoint público** — Copiar a URL gerada (ex: `https://kalodata-mcp.onrender.com`) e testar o endpoint `/mcp` com curl.
- [ ] **8. Perplexity** — Ir em **Configurações → Conectores → + Conector personalizado → Remoto** → colar `https://<url>/mcp` → Streamable HTTP → Autenticação: Nenhuma.
---
## 🔒 Aviso de Segurança
- **NUNCA comite o arquivo `.env`** com chave real. O `.gitignore` já o ignora.
- **NUNCA adicione a chave dentro do `render.yaml`** — as variáveis `sync: false` são inseridas manualmente no dashboard do Render.
- A chave da Kalodata vive apenas na variável de ambiente do servidor, nunca exposta ao cliente MCP.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues