Skip to main content
Glama
kommo

kommo

by santosadvo
README.md
# Kommo + Claude Code: o seu CRM dentro do Claude

Tutorial passo a passo para dar ao Claude Code **acesso de leitura e escrita ao seu Kommo CRM**: leads, contatos, empresas, tarefas, notas, funis e campos personalizados, pela API v4 oficial.

É exatamente o jeito que usamos no dia a dia. A integração é privada e usa um **token de longa duração**: sem login que expira a cada poucos meses e sem servidor de terceiros no meio. Não precisa saber programar. Leva uns 10 minutos.

## O que você vai conseguir pedir

- "Quantos leads entraram esta semana em cada funil?"
- "Liste os leads parados há mais de 7 dias na etapa Proposta enviada."
- "Crie uma tarefa de retorno para amanhã às 10h neste lead."
- "Registre uma nota neste contato com o resumo da ligação."
- "Mova o lead 12345 para a etapa Contrato assinado."

## Como funciona

```
Você ──► Claude Code ──► servidor MCP (esta pasta, no seu computador) ──► API v4 do Kommo
```

O servidor roda no seu próprio computador e fala direto com o Kommo. O token fica num arquivo local (`config.json`) que nunca vai para o git.

## O que você precisa

- [Claude Code](https://claude.com/claude-code) instalado.
- [uv](https://docs.astral.sh/uv/), que baixa o Python e as dependências sozinho. No Mac: `brew install uv`. No Windows: `winget install astral-sh.uv`.
- Uma conta Kommo com **permissão de administrador**, necessária para criar a integração.

## Passo a passo

### 1. Baixe este repositório

```bash
git clone https://github.com/santosadvo/kommo-mcp-Publico.git kommo-mcp
cd kommo-mcp
```

### 2. Crie a integração privada no Kommo

1. Entre no Kommo e vá em **Configurações → Integrações**.
2. Clique em **Criar integração** (canto superior direito).
3. Preencha:
   - **URL de redirecionamento:** `https://localhost`. Esse caminho não usa a URL, mas o Kommo exige o campo.
   - **Permitir acesso:** marque **Todas**.
   - **Nome:** algo como "Claude".
4. Salve.

### 3. Gere o token de longa duração

1. Abra a integração que você acabou de criar e vá na aba **Chaves e escopos**.
2. Clique para gerar um **token de longa duração** e escolha a validade. Nós escolhemos cerca de dois anos e meio.
3. Copie o token. Guarde-o como uma senha: quem tem o token acessa toda a conta.

### 4. Grave o token

Dentro da pasta `kommo-mcp`:

```bash
uv run python token_longo.py
```

O script faz três coisas:

1. Pede o **subdomínio**: se você entra no Kommo por `https://suaempresa.kommo.com`, o subdomínio é `suaempresa`.
2. Pede o **token**, que não aparece na tela enquanto você cola.
3. Grava os dois no `config.json`, mostra até quando o token vale e testa a conexão.

No fim tem que aparecer `Conexão OK: conta "..."` com o nome da sua conta.

### 5. Registre no Claude Code

Ainda dentro da pasta `kommo-mcp`:

```bash
claude mcp add --scope user kommo -- uv run --directory "$(pwd)" python server.py
```

O `--scope user` deixa o Kommo disponível em qualquer pasta em que você abrir o Claude Code. No Windows (PowerShell), troque `"$(pwd)"` pelo caminho completo da pasta.

### 6. Teste

Feche e abra o Claude Code. Digite `/mcp` e veja se o `kommo` aparece como conectado. Depois pergunte:

> Qual é o nome da minha conta no Kommo e quais são os meus funis?

## Ferramentas disponíveis

- **Conta:** `kommo_account_info`, `kommo_list_users`, `kommo_list_pipelines`, `kommo_list_custom_fields`
- **Leads:** `kommo_list_leads`, `kommo_get_lead`, `kommo_create_leads`, `kommo_update_lead`
- **Contatos e empresas:** `kommo_list_contacts`, `kommo_get_contact`, `kommo_create_contacts`, `kommo_update_contact`, `kommo_list_companies`, `kommo_create_companies`
- **Tarefas e notas:** `kommo_list_tasks`, `kommo_create_tasks`, `kommo_complete_task`, `kommo_list_notes`, `kommo_add_note`
- **Acesso total:** `kommo_request`, que chama qualquer endpoint da [API v4 do Kommo](https://developers.kommo.com/)

## Quando o token vencer

O Claude vai avisar com uma mensagem clara. Gere outro token na mesma aba **Chaves e escopos**, rode `uv run python token_longo.py` de novo e reinicie o Claude Code.

Para ver até quando o token atual vale:

```bash
python3 -c "import json,datetime;c=json.load(open('config.json'));print(f\"{datetime.datetime.fromtimestamp(c['expires_at']):%d/%m/%Y}\")"
```

## Alternativa: login OAuth (`auth.py`)

Serve para quem prefere tokens curtos renovados automaticamente em vez do token de longa duração:

1. Na aba **Chaves e escopos**, copie o **ID da integração** e a **chave secreta**.
2. Gere o **código de autorização**, que vale cerca de 20 minutos.
3. Copie o modelo do arquivo de configuração:

   ```bash
   cp config.example.json config.json
   ```

4. No `config.json`, preencha `subdomain`, `client_id` e `client_secret`.
5. Rode o login com o código:

   ```bash
   uv run python auth.py "COLE_O_CODIGO_AQUI"
   ```

Daí em diante o servidor renova o acesso sozinho. Se ficar uns 3 meses sem usar, o refresh vence e é preciso repetir o processo com um código novo.

## Arquivos

| Arquivo | Para que serve |
|---|---|
| `server.py` | As ferramentas que o Claude enxerga |
| `kommo_client.py` | Faz as chamadas à API, lê o token e trata o vencimento |
| `token_longo.py` | Grava o token de longa duração e testa a conexão |
| `auth.py` | Alternativa: login OAuth |
| `config.example.json` | Modelo do arquivo de configuração |
| `config.json` | Criado por você, com o token. **Nunca vai para o git.** |

## Segurança

- O `config.json` guarda o token e está no `.gitignore`. Nunca o envie para o git e não cole o conteúdo em conversas, prints ou planilhas. O `token_longo.py` deixa o arquivo legível só pelo seu usuário.
- O acesso é total (leitura e escrita). Deixe o Claude Code pedir confirmação antes de cada escrita, conforme o modo de permissão que você escolher.
- Se suspeitar de vazamento, revogue o token ou apague a integração no Kommo e gere outro.

## Limites

- A API do Kommo limita quantas requisições cabem por segundo. Em listas grandes, peça por partes ("os próximos 50").
- Este servidor não apaga leads nem contatos por conta própria. Para outras operações da API, existe a `kommo_request`.

## Licença

MIT. Use, adapte e compartilhe à vontade.