Kommo
БесплатноНе проверенSelf-hosted MCP server that connects AI assistants to Kommo CRM (API v4), enabling real-time CRM actions such as creating/managing leads, tasks, notes, and more
Описание
Self-hosted MCP server that connects AI assistants to Kommo CRM (API v4), enabling real-time CRM actions such as creating/managing leads, tasks, notes, and more through 29 tools.
README
Servidor MCP (Model Context Protocol) self-hosted para a Kommo CRM (antiga amoCRM, API v4).
Conecta o Claude — ou qualquer cliente MCP (Claude Code, Claude Desktop, Cursor, etc.) — direto na sua conta Kommo, usando um token de longa duração seu. Sem intermediários: as credenciais e os dados trafegam apenas entre a sua máquina/servidor e a API da Kommo.
Com ele, o assistente passa a agir no CRM em tempo real (criar/mover leads, escrever tarefas, trocar responsáveis, auditar o que os bots fizeram) em vez de depender só de dashboards e planilhas.
Sumário
- Recursos
- Pré-requisitos
- Instalação
- 1. Gerar o token da Kommo
- 2. Configurar o .env
- 3. Testar a conexão
- Usar no Claude Code
- Usar em outros clientes MCP
- Referência das tools
- Estrutura do projeto
- Segurança
- Limitações conhecidas
- Troubleshooting
- Deploy em servidor (VPS)
- Licença
Recursos
41 tools, 4 prompts e 8 resources MCP:
| Categoria | Tools |
|---|---|
| Leitura | kommo_account, kommo_pipelines, kommo_users (com is_active), kommo_custom_fields, kommo_search_leads, kommo_get_lead, kommo_list_tasks, kommo_search_contacts, kommo_search_companies, kommo_list_webhooks, kommo_tags, kommo_loss_reasons, kommo_catalog_elements |
| Auditoria | kommo_get_events (feed traduzido: etapas/autores por nome; created_by=0 = bot/automação) |
| Atendimento | kommo_talks (fila de conversas em tempo real), kommo_close_talk, kommo_unsorted (Inbox), kommo_unsorted_accept, kommo_unsorted_decline |
| Leads | kommo_create_lead, kommo_update_lead (com tags), kommo_change_responsible, kommo_bulk_update_leads (lote com fatiamento) |
| Tarefas & notas | kommo_create_task (tipos reais da conta na descrição), kommo_complete_task, kommo_add_note (common/call_in/call_out) |
| Contatos & empresas | kommo_create_contact, kommo_update_contact, kommo_create_company, kommo_update_company, kommo_link (inclui catalog_elements) |
| Funis/etapas | kommo_create_status, kommo_update_status |
| Webhooks | kommo_subscribe_webhook, kommo_delete_webhook |
| Campos custom | kommo_create_custom_field, kommo_update_custom_field (com add_enums) |
| Catálogo & arquivos | kommo_create_catalog_element, kommo_upload_file |
| Automação | kommo_run_salesbot (dispara bot num lead; sempre confirme antes) |
| Genérico | kommo_request (passthrough autenticado, restrito a hosts *.kommo.com da conta) |
Formato de resposta: listagens devolvem { items, page, has_more } com itens resumidos e legíveis
(funil/etapa/responsável por nome, telefone do contato principal, datas no fuso da conta); raw: true
devolve o payload cru da API. Todas as tools declaram MCP annotations (readOnlyHint/destructiveHint),
então clientes conseguem liberar leituras e travar escritas por protocolo.
Prompts (viram comandos no cliente MCP): auditoria-do-dia, fila-agora, leads-parados, relatorio-perdas.
Resources: kommo://account, kommo://pipelines, kommo://users, kommo://custom-fields/{leads,contacts,companies}, kommo://loss-reasons, kommo://task-types.
Pré-requisitos
- Node.js ≥ 18 (usa
fetchnativo; sem dependências de runtime além do SDK do MCP). - Uma conta Kommo com permissão de administrador (necessária para gerar o token).
- Um cliente MCP — este README foca no Claude Code.
Instalação
git clone https://github.com/RonaldoESantosRevOps/kommo-mcp.git
cd kommo-mcp
npm install
1. Gerar o token da Kommo
Use um token de longa duração (não expira por anos e não precisa de refresh):
- Na Kommo, vá em Configurações → Integrações.
- Clique para criar uma integração privada (não precisa preencher Redirect URL nem webhook).
- Abra a aba Chaves e escopos.
- Clique em Gerar token de longa duração, escolha a validade (até 5 anos) e copie o token.
- O escopo
crmjá é suficiente para todas as tools.
Guarde o token com cuidado — ele dá acesso total ao seu CRM com os seus direitos de admin.
Documentação oficial: https://pt-developers.kommo.com/docs/token-de-longa-duração
2. Configurar o .env
Copie o exemplo e preencha:
cp .env.example .env
KOMMO_SUBDOMAIN=seusubdominio # a parte antes de .kommo.com (ex.: "minhaempresa")
KOMMO_TOKEN=seu_token_de_longa_duracao
O .env já está no .gitignore — nunca o versione. O servidor lê esse arquivo
automaticamente (ele fica ao lado do index.mjs), então você não precisa exportar variáveis
de ambiente manualmente.
3. Testar a conexão
npm run smoke
Esse smoke test sobe o servidor via protocolo MCP e chama tools de leitura contra a API real. Saída esperada (resumida):
✓ tools expostas: 41
✓ annotations ok (16 tools read-only)
✓ allowlist bloqueia host externo no passthrough
✓ kommo_account -> <Nome da sua conta> (id ..., BRL)
✓ kommo_pipelines -> N funis; principal: ...
✓ kommo_users -> N usuários (M inativos: ...)
✓ kommo_search_leads -> resumo ok; ...
✓ kommo_get_events -> 5 eventos traduzidos (autor, etapas por nome, ISO)
✓ kommo_talks / kommo_unsorted / kommo_tags / kommo_loss_reasons ...
✓ SMOKE OK
O teste de escrita opcional (node smoke.mjs --write) faz um round-trip inofensivo de webhook
(assina, confere e remove), sem tocar em leads ou contatos.
Se aparecer HTTP 401 Invalid user name or password, veja Troubleshooting.
Usar no Claude Code
Registrar o servidor
claude mcp add kommo -s user -- node /caminho/absoluto/para/kommo-mcp/index.mjs
- Use o caminho absoluto até o
index.mjs(ex.:~/kommo-mcp/index.mjsresolvido para algo como/home/voce/kommo-mcp/index.mjs). - O servidor lê o
.envdele mesmo, então não é preciso passar variáveis no comando.
Escopos (-s):
| Escopo | Onde vale | Quando usar |
|---|---|---|
user |
Todos os seus projetos | Recomendado — você usa a mesma conta Kommo em qualquer lugar |
project |
Compartilhado no repositório (.mcp.json) |
Se um time inteiro vai usar |
local |
Só você, só neste projeto | Testes pontuais |
Verificar
claude mcp get kommo # deve mostrar "Status: ✔ Connected"
claude mcp list # lista todos os servidores MCP
Reinicie o Claude Code depois de registrar: as tools de um servidor MCP só entram quando a sessão inicia.
Permissões: leitura sem prompt, escrita sempre confirmando
Por padrão o Claude Code pede confirmação a cada chamada de tool. Você pode liberar apenas as
tools de leitura (consultas) e manter as de escrita sempre pedindo OK. No seu
~/.claude/settings.json:
{
"permissions": {
"allow": [
"mcp__kommo__kommo_account",
"mcp__kommo__kommo_pipelines",
"mcp__kommo__kommo_users",
"mcp__kommo__kommo_custom_fields",
"mcp__kommo__kommo_search_leads",
"mcp__kommo__kommo_get_lead",
"mcp__kommo__kommo_list_tasks",
"mcp__kommo__kommo_search_contacts",
"mcp__kommo__kommo_search_companies",
"mcp__kommo__kommo_list_webhooks",
"mcp__kommo__kommo_get_events",
"mcp__kommo__kommo_tags",
"mcp__kommo__kommo_loss_reasons",
"mcp__kommo__kommo_talks",
"mcp__kommo__kommo_unsorted",
"mcp__kommo__kommo_catalog_elements"
]
}
}
Todas as tools de escrita (criar/editar leads, contatos, empresas, tarefas, notas, etapas,
campos custom, vínculos, webhooks, lotes, Inbox accept/decline, Salesbot e upload) e o
passthrough kommo_request continuam pedindo confirmação — o comportamento seguro
recomendado. As 16 tools de leitura também declaram readOnlyHint: true via MCP annotations,
então clientes que respeitam annotations já as tratam como seguras.
Exemplos de uso (linguagem natural)
Depois de registrado, é só pedir ao Claude:
- "Liste os leads parados na etapa 'Interesse em Agendar' do funil principal."
- "O que os bots fizeram hoje? Puxe os eventos com
created_by=0das últimas 6 horas." - "Crie um lead 'João da Silva', telefone +55 11 99999-9999, no funil de qualificação."
- "Mova o lead #12345 para 'Pagamento' e troque o responsável para a Ana."
- "Crie uma tarefa de follow-up amanhã às 10h no lead #12345 para o Carlos."
Usar em outros clientes MCP
O servidor fala MCP por stdio, então funciona em qualquer cliente compatível. Exemplo de configuração genérica (Claude Desktop, Cursor, etc.):
{
"mcpServers": {
"kommo": {
"command": "node",
"args": ["/caminho/absoluto/para/kommo-mcp/index.mjs"]
}
}
}
Como o .env é lido a partir da pasta do servidor, não é necessário passar env no JSON
(mas você pode, se preferir injetar KOMMO_SUBDOMAIN/KOMMO_TOKEN por ali).
Referência das tools
Datas aceitam ISO (
2026-06-26T10:00) ou epoch. IDs de funil/etapa/usuário você descobre comkommo_pipelinesekommo_users. Listagens devolvem{ items, page, has_more }; onde houverraw,raw: truedevolve o payload cru da API.
Leitura
| Tool | Parâmetros principais | O que faz |
|---|---|---|
kommo_account |
— | Dados da conta (confirma a conexão). |
kommo_pipelines |
— | Lista funis e suas etapas (id, name, sort, type). |
kommo_users |
— | Lista usuários com is_active/is_admin (não atribua a inativos). |
kommo_custom_fields |
entity (leads/contacts/companies) |
Lista campos personalizados e seus id. |
kommo_search_leads |
query, pipeline_id, status_id (resolve o funil sozinho), responsible_user_id, created_from/to, updated_from/to, order_by, fields[], raw, limit, page |
Busca leads resumidos (funil/etapa/responsável por nome, telefone, tags, motivo de perda). |
kommo_get_lead |
lead_id*, note_limit |
Detalhe cru de um lead (contatos, catálogo, motivo de perda); anexa notas se note_limit>0. |
kommo_list_tasks |
responsible_user_id, entity_id, entity_type, is_completed, limit, page |
Lista tarefas resumidas. |
kommo_search_contacts |
query, raw, limit, page |
Busca contatos (telefone/email extraídos). |
kommo_search_companies |
query, raw, limit, page |
Busca empresas. |
kommo_list_webhooks |
— | Lista os webhooks configurados (destino e eventos). |
kommo_tags |
entity, query, limit, page |
Lista tags (id, nome, cor). |
kommo_loss_reasons |
— | Lista os motivos de perda configurados. |
kommo_catalog_elements |
catalog_id*, query, limit, page |
Lista elementos de um catálogo (produtos/serviços). |
Auditoria
| Tool | Parâmetros principais | O que faz |
|---|---|---|
kommo_get_events |
entity, entity_id, type[], created_by[], from, to, raw, limit, page |
Feed de eventos traduzido (etapas e autores por nome, datas no fuso da conta). created_by=0 = ações de bot/automação. |
Atendimento & Inbox
| Tool | Parâmetros principais | O que faz |
|---|---|---|
kommo_talks |
is_in_work, is_read, contact_id, limit, page |
Fila de conversas (chats) em tempo real. |
kommo_close_talk |
talk_id*, force_close |
Fecha uma conversa. |
kommo_unsorted |
category, pipeline_id, summary, limit, page |
Inbox de leads não distribuídos (summary: true = agregado). |
kommo_unsorted_accept |
uid*, user_id, status_id |
Aceita um item do Inbox (vira lead ativo). |
kommo_unsorted_decline |
uid*, user_id |
Rejeita um item do Inbox (difícil de desfazer). |
Escrita em leads
| Tool | Parâmetros principais | O que faz |
|---|---|---|
kommo_create_lead |
name*, price, pipeline_id, status_id, responsible_user_id, contact_name, contact_phone, tags[], custom_fields_values |
Cria lead; vincula contato se informado. |
kommo_update_lead |
lead_id*, name, price, status_id, pipeline_id, responsible_user_id, loss_reason_id, tags_to_add[], tags_to_remove[], custom_fields_values |
Atualiza lead; tags são mescladas preservando as existentes. |
kommo_change_responsible |
lead_ids[], responsible_user_id |
Troca o responsável em lote (fatiamento automático). |
kommo_bulk_update_leads |
lead_ids[]*, status_id, pipeline_id, responsible_user_id, price, loss_reason_id, tags_to_add[] |
Atualização em massa com blocos de 200 e relatório de sucesso/falha. |
kommo_add_note |
entity_id, text, entity, note_type (common/call_in/call_out), params_extra |
Adiciona nota ou registro de ligação. |
kommo_create_task |
text*, entity_id, entity, complete_till, responsible_user_id, task_type_id (tipos reais da conta na descrição) |
Cria tarefa (prazo padrão: +1 dia). |
kommo_complete_task |
task_id*, result |
Conclui uma tarefa com resultado opcional. |
Contatos & empresas
| Tool | Parâmetros principais | O que faz |
|---|---|---|
kommo_create_contact |
name/first_name/last_name, phone, email, responsible_user_id, custom_fields_values |
Cria contato (telefone/email viram campos PHONE/EMAIL). |
kommo_update_contact |
contact_id*, name, responsible_user_id, custom_fields_values |
Atualiza um contato. |
kommo_create_company |
name*, responsible_user_id, custom_fields_values |
Cria empresa. |
kommo_update_company |
company_id*, name, responsible_user_id, custom_fields_values |
Atualiza uma empresa. |
kommo_link |
entity, entity_id, to_entity_type* (inclui catalog_elements), to_entity_id*, catalog_id, quantity |
Vincula entidades, inclusive produto/procedimento a lead. |
Funis/etapas
| Tool | Parâmetros principais | O que faz |
|---|---|---|
kommo_create_status |
pipeline_id, name, sort, color |
Cria uma etapa num funil. |
kommo_update_status |
pipeline_id, status_id, name, sort, color |
Renomeia/reordena/recolore uma etapa. |
Webhooks
| Tool | Parâmetros principais | O que faz |
|---|---|---|
kommo_subscribe_webhook |
destination* (URL), settings* (eventos) |
Assina eventos da Kommo numa URL. |
kommo_delete_webhook |
destination* |
Cancela um webhook pela URL. |
Campos personalizados
| Tool | Parâmetros principais | O que faz |
|---|---|---|
kommo_create_custom_field |
entity, name*, type, enums |
Cria campo custom (use enums para select/multiselect). |
kommo_update_custom_field |
entity, field_id*, name, add_enums[] |
Renomeia e/ou acrescenta opções a um select preservando as existentes. |
Catálogo, arquivos e automação
| Tool | Parâmetros principais | O que faz |
|---|---|---|
kommo_create_catalog_element |
catalog_id, name, custom_fields_values |
Cria um elemento (ex.: procedimento com preço). |
kommo_upload_file |
file_path*, file_name, entity, entity_id |
Sobe arquivo ao drive e anexa à entidade, se informada. |
kommo_run_salesbot |
bot_id, entity_id, entity_type |
Dispara um Salesbot num lead (envia mensagens reais). Confirme sempre. |
Genérico
| Tool | Parâmetros principais | O que faz |
|---|---|---|
kommo_request |
method, path*, query, body |
Chamada autenticada a qualquer endpoint; restrita a hosts *.kommo.com da conta. |
* = obrigatório.
Estrutura do projeto
kommo-mcp/
├── index.mjs # Servidor MCP: 41 tools, 4 prompts, 8 resources, transporte stdio
├── kommo.mjs # Cliente HTTP (allowlist de hosts, retry/backoff, timeout, cache) + .env
├── smoke.mjs # Teste end-to-end: sobe o server e valida contra a API real
├── package.json
├── .env.example # Modelo das variáveis (copie para .env)
├── .gitignore # Ignora .env e node_modules
├── LICENSE
└── README.md
Segurança
- Allowlist de hosts: o cliente HTTP só envia o token para
{seu-subdomínio}.kommo.comedrive*.kommo.com. Mesmo que alguém induza o assistente a chamarkommo_requestcom uma URL externa (prompt injection via dados do CRM), o token não sai da infraestrutura da Kommo. - Annotations MCP: leituras declaram
readOnlyHint, escritas declaramdestructiveHint, permitindo que o cliente aplique permissões distintas por protocolo. - Nunca versione o
.env(já protegido pelo.gitignore). Para compartilhar configuração, use o.env.example. - O token tem os direitos de admin de quem o gerou — trate como senha.
- Se um token vazar, gere outro na Kommo: isso invalida o anterior imediatamente.
- Prefira o escopo mínimo (
crm) ao criar a integração privada. - Rode o servidor numa máquina/servidor sob seu controle.
Limitações conhecidas
- Salesbot nativo da Kommo: o fluxo/cenário do bot é editável apenas pela interface da
Kommo. Pela API dá para ler tudo o que o bot fez (via
kommo_get_events/ notas) e dispará-lo num lead (kommo_run_salesbot) — mas não redesenhar o fluxo. - Mensagens de chat (amojo): ler/enviar o conteúdo das conversas exige registrar um canal próprio na Chats API (credencial separada); está fora do escopo deste servidor.
- Módulo Customers: só funciona em contas com o módulo habilitado no plano
(
customers_modediferente dedisabled); alcançável viakommo_requestse for o caso. - v2.x muda o formato das listagens para
{ items, page, has_more }com itens resumidos (v1.x devolvia o array cru). Useraw: trueonde precisar do payload original.
Troubleshooting
HTTP 401 Invalid user name or password
O token foi rejeitado. Causas comuns:
- O subdomínio (
KOMMO_SUBDOMAIN) e o token são de contas diferentes. Confirme o subdomínio na URL ao logar na Kommo (a parte antes de.kommo.com). - A integração privada está desativada/em rascunho, ou você gerou um token novo depois
(o que invalida o anterior). Gere um token novo e atualize o
.env. - O usuário que criou a integração não é mais admin ou foi desativado.
As tools não aparecem no Claude Code
Reinicie o Claude Code após claude mcp add — servidores MCP só carregam no início da sessão.
Confira com claude mcp get kommo.
Faltam KOMMO_SUBDOMAIN e/ou KOMMO_TOKEN
O .env não foi encontrado ou está incompleto. Confirme que ele existe na raiz do projeto e
tem as duas variáveis.
Deploy em servidor (VPS)
Como o transporte é stdio, o servidor roda sob demanda quando o cliente MCP o invoca — não precisa ficar de pé como serviço de rede. Para usar numa VPS:
git clone https://github.com/RonaldoESantosRevOps/kommo-mcp.git
cd kommo-mcp && npm install
cp .env.example .env # preencha com seu subdomínio e token
E aponte o cliente MCP para o caminho do index.mjs nesse servidor.
Licença
MIT © Ronaldo E. Santos
Установка Kommo
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/RonaldoESantosRevOps/kommo-mcpFAQ
Kommo MCP бесплатный?
Да, Kommo MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Kommo?
Нет, Kommo работает без API-ключей и переменных окружения.
Kommo — hosted или self-hosted?
Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.
Как установить Kommo в Claude Desktop, Claude Code или Cursor?
Открой Kommo на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
автор: modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
автор: xuzexin-hzCompare Kommo with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории ai
