
miguelgbastos/kommo-mcp
Developer toolsServidor MCP open source para integrar Cursor, Claude e outros clientes ao Kommo CRM.
Overview
Servidor MCP (Model Context Protocol) para integração com o Kommo CRM. Expõe , e para clientes MCP (Cursor, Claude Desktop, etc.). - : revisão 2026-07-28 pelo SDK oficial, com compatibilidade stateless para clientes da família 2025 - : Streamable HTTP para serviços remotos e stdio para clientes locais - : leads, contatos, empresas, tarefas, pipelines, notas, relatórios, dashboard, Salesbot, motivos de perda - : relatório de vendas, pipelines, motivos de perda, dashboard, conta - : templates para análise de vendas, leads, pipelines e motivos de perda - : interface conversacional em linguagem natural - : código organizado em módulos (kommo-api, mcp/, ask-kommo) - : validação de Origin, validação dos argumentos das tools e autenticação obrigatória fora de localhost - Node.js - Docker (opcional) - Token de acesso do Kommo (integração privada ou OAuth2) — ver documentação do Kommo O servidor sobe em http://127.0.0.1:3001/mcp. 1. Copie o arquivo de exemplo: 2. Configure no .
README
Kommo MCP Server
Servidor MCP (Model Context Protocol) para integração com o Kommo CRM. Expõe tools, resources e prompts para clientes MCP (Cursor, Claude Desktop, etc.).
Sumário
- Funcionalidades
- Pré-requisitos
- Início rápido
- Configuração
- Execução
- Integração com clientes MCP
- Endpoints
- Ferramentas MCP
- Resources
- Prompts
- Estrutura do projeto
- Exemplos de uso
- Troubleshooting
- Documentação
- Compatibilidade e suporte
- Contribuindo
- Segurança
- Licença
Funcionalidades
- MCP moderno e compatível: revisão
2026-07-28pelo SDK oficial, com compatibilidade stateless para clientes da família 2025 - Dois transportes oficiais: Streamable HTTP para serviços remotos e
stdiopara clientes locais - 23 tools: leads, contatos, empresas, tarefas, pipelines, notas, relatórios, dashboard, Salesbot, motivos de perda
- 5 resources: relatório de vendas, pipelines, motivos de perda, dashboard, conta
- 4 prompts: templates para análise de vendas, leads, pipelines e motivos de perda
ask_kommo: interface conversacional em linguagem natural- Arquitetura modular: código organizado em módulos (
kommo-api,mcp/,ask-kommo) - Segurança: validação de Origin, validação dos argumentos das tools e autenticação obrigatória fora de localhost
Pré-requisitos
- Node.js 22.13+
- Docker (opcional)
- Token de acesso do Kommo (integração privada ou OAuth2) — ver documentação do Kommo
Início rápido
git clone https://github.com/Miguelgbastos/Kommo-MCP.git
cd Kommo-MCP
npm install
cp env.example .env
# edite .env com KOMMO_BASE_URL e KOMMO_ACCESS_TOKEN
npm run build
npm start
O servidor sobe em http://127.0.0.1:3001/mcp.
Configuração
- Copie o arquivo de exemplo:
cp env.example .env - Configure no
.env:KOMMO_BASE_URL=https://seu-dominio.kommo.com KOMMO_ACCESS_TOKEN=seu-token-aqui
Variáveis de ambiente
| Variável | Descrição | Default |
|---|---|---|
KOMMO_BASE_URL |
URL da conta Kommo (https://.kommo.com) |
— |
KOMMO_ACCESS_TOKEN |
Token de acesso (integração privada ou OAuth2) | — |
KOMMO_TIMEOUT_MS |
Timeout de cada requisição ao Kommo | 15000 |
KOMMO_MAX_RETRIES |
Retentativas de leituras em 429/5xx |
3 |
KOMMO_REQUESTS_PER_SECOND |
Limite coordenado de chamadas por processo (máximo 6) | 6 |
KOMMO_TIMEZONE |
Fuso IANA dos relatórios; por padrão usa o fuso da conta | conta Kommo |
PORT |
Porta HTTP do servidor MCP | 3001 |
MCP_HOST |
Host de binding | 127.0.0.1 |
MCP_ALLOWED_ORIGINS |
Origens permitidas (separadas por vírgula) | — |
MCP_AUTH_TOKEN |
Protege /mcp; obrigatório quando MCP_HOST não é loopback |
— |
MCP_RATE_LIMIT_PER_MINUTE |
Limite de requisições ao /mcp por endereço e por processo |
120 |
MCP_CONFIRM_WRITES |
Exige confirm=true; somente false desativa a proteção |
true |
LOG_LEVEL |
Nível de log | info |
Execução
Desenvolvimento:
npm install
npm run dev # ts-node
# ou
npm run build && npm start
Cliente local via stdio:
npm run build
npm run start:stdio
Docker:
docker build -t kommo-mcp-server .
docker run -d -p 3001:3001 \
-e KOMMO_BASE_URL=https://seu-dominio.kommo.com \
-e KOMMO_ACCESS_TOKEN=seu-token \
-e MCP_HOST=0.0.0.0 \
-e MCP_AUTH_TOKEN=gere-um-segredo-longo \
--name kommo-mcp-server kommo-mcp-server
Em produção, coloque o servidor atrás de um reverse proxy com TLS e defina
MCP_AUTH_TOKEN+MCP_ALLOWED_ORIGINS. O servidor se recusa a iniciar em um endereço não local semMCP_AUTH_TOKEN, inclusive quandocreateApp()é usado diretamente. A imagem Docker usa127.0.0.1por padrão; para publicar a porta, configure conscientementeMCP_HOST=0.0.0.0junto com um token longo.
A confirmação explícita é obrigatória por padrão nas tools de escrita. Use
MCP_CONFIRM_WRITES=falsesomente em automações controladas que assumam esse risco; o servidor registra um aviso operacional quando essa proteção é desativada. As tools de escrita anunciamdestructiveHint; as consultas anunciamreadOnlyHintpelo protocolo MCP.
Integração com clientes MCP
Cursor
O pacote npm ainda não foi publicado. Até a release v3, compile o projeto e
adicione ao ~/.cursor/mcp.json o caminho absoluto do arquivo gerado:
{
"mcpServers": {
"kommo": {
"command": "node",
"args": ["/caminho/absoluto/Kommo-MCP/dist/stdio.js"],
"env": {
"KOMMO_BASE_URL": "https://seu-dominio.kommo.com",
"KOMMO_ACCESS_TOKEN": "seu-token-aqui"
}
}
}
}
Para o servidor HTTP:
Adicione ao arquivo ~/.cursor/mcp.json (ou nas configurações do projeto em
.cursor/mcp.json):
{
"mcpServers": {
"kommo": {
"url": "http://127.0.0.1:3001/mcp"
}
}
}
Claude Desktop
Para uma implantação remota com HTTPS, abra Settings → Connectors → Add
connector e informe a URL pública do endpoint, por exemplo
https://mcp.seudominio.com/mcp.
Para execução local, use a mesma configuração command/args/env acima no
claude_desktop_config.json. Servidores HTTP remotos devem ser adicionados
pela tela de Connectors.
Endpoints
- MCP:
POST http://localhost:3001/mcp— negociação moderna viaserver/discover - Health:
GET http://localhost:3001/health - Readiness:
GET http://localhost:3001/ready— verifica se URL e token obrigatórios foram configurados
Ferramentas MCP
Conta e dashboard
| Tool | Descrição |
|---|---|
get_account |
Informações da conta Kommo |
get_dashboard |
Dashboard calculado com endpoints públicos do Kommo |
Leads
| Tool | Descrição |
|---|---|
get_leads |
Listar leads (limit, page, query) |
get_lead |
Obter lead por ID |
create_lead |
Criar lead (name, price, status_id, pipeline_id) |
update_lead |
Atualizar lead existente |
move_lead |
Mover lead para outro status/pipeline |
Pipelines e relatórios
| Tool | Descrição |
|---|---|
get_pipelines |
Listar pipelines (com status opcional por pipeline_id) |
get_sales_report |
Relatório de vendas (dateFrom, dateTo) |
Contatos, empresas e tarefas
| Tool | Descrição |
|---|---|
get_contacts |
Listar contatos |
get_companies |
Listar empresas |
get_tasks |
Listar tarefas |
create_task |
Criar tarefa vinculada a entidade |
get_users |
Listar usuários da conta |
Notas
| Tool | Descrição |
|---|---|
get_notes |
Listar notas de lead/contato/empresa |
add_note |
Adicionar nota de texto |
pin_note |
Fixar nota |
unpin_note |
Desafixar nota |
Motivos de perda e Salesbot
| Tool | Descrição |
|---|---|
get_loss_reasons |
Listar motivos da perda de leads |
get_loss_reason |
Obter motivo de perda por ID |
run_salesbot |
Iniciar Salesbot (bot_id, entity_id, entity_type=leads) |
stop_salesbot |
Parar Salesbot (bot_id, entity_id, entity_type=leads) |
IA conversacional
| Tool | Descrição |
|---|---|
ask_kommo |
Perguntas em linguagem natural sobre o CRM |
Resources
| URI | Descrição |
|---|---|
kommo://reports/sales |
Relatório de vendas (último mês) |
kommo://pipelines |
Lista de pipelines |
kommo://loss_reasons |
Motivos da perda de leads |
kommo://dashboard |
Dados do dashboard |
kommo://account |
Informações da conta |
Prompts
| Nome | Descrição |
|---|---|
analisar_vendas_mes |
Analisar vendas do mês |
resumo_leads_status |
Resumo de leads por status |
analise_pipeline |
Analisar performance de pipeline |
motivos_perda |
Analisar motivos de perda |
Estrutura do projeto
src/
├── kommo-api.ts # Cliente da API Kommo
├── ask-kommo.ts # Lógica conversacional ask_kommo
├── http-streamable.ts # Servidor MCP HTTP
├── stdio.ts # Servidor MCP local por stdin/stdout
└── mcp/
├── server.ts # Definição oficial do servidor MCP
├── types.ts # Tipos MCP
├── tool-definitions.ts # Schemas das tools
├── tool-handlers.ts # Execução das tools
├── resources.ts # Resources MCP
└── prompts.ts # Prompts MCP
Exemplos de uso
Clientes compatíveis negociam a revisão automaticamente por server/discover.
Ao usar o cliente TypeScript oficial, fixe a revisão para evitar fallback
silencioso para servidores antigos:
import { Client, StreamableHTTPClientTransport } from '@modelcontextprotocol/client';
const client = new Client(
{ name: 'minha-integracao', version: '1.0.0' },
{ versionNegotiation: { mode: { pin: '2026-07-28' } } },
);
const transport = new StreamableHTTPClientTransport(new URL('http://127.0.0.1:3001/mcp'));
await client.connect(transport);
const { tools } = await client.listTools();
Clientes da família 2025 são atendidos automaticamente pelo modo stateless.
Clientes modernos podem fixar 2026-07-28 conforme o exemplo acima.
Troubleshooting
401 Unauthorizedda API do Kommo — verifique seKOMMO_ACCESS_TOKENestá válido e seKOMMO_BASE_URLaponta para o subdomínio correto da sua conta.- Cliente MCP não conecta — confirme se
MCP_HOSTpermite conexões do cliente (0.0.0.0para acesso remoto) e seMCP_ALLOWED_ORIGINSinclui a origem do cliente, quando definido. 403no/mcp— seMCP_AUTH_TOKENestiver definido, é preciso enviarAuthorization: BearerouX-API-Key:.503no/ready— configureKOMMO_BASE_URLcom HTTPS e definaKOMMO_ACCESS_TOKENantes de iniciar o serviço real.429do Kommo — todas as chamadas compartilham um limitador coordenado; leituras usam backoff eRetry-After, enquanto escritas não são repetidas automaticamente para evitar duplicidade.429do/mcp— o servidor limita cada endereço cliente a 120 requisições por minuto por processo; ajusteMCP_RATE_LIMIT_PER_MINUTEse necessário. O endereço do proxy é usado por padrão, poistrust proxynão é habilitado automaticamente.- Docker
HEALTHCHECKfalha — a imagem usanode --evalpara o healthcheck, verifique se a porta interna corresponde aPORT. - Erros de build TypeScript — rode
npm run typecheckpara ver mensagens detalhadas. Requer Node.js 22.13+.
Documentação
- docs/MCP_EVOLUCAO.md — plano de evolução e conformidade MCP
- docs/KOMMO_API_EVOLUCAO.md — evoluções da API Kommo
- Kommo para desenvolvedores
- Changelog Kommo
- CHANGELOG.md deste projeto
- ROADMAP.md — prioridades e oportunidades de contribuição
- MAINTAINERS.md — manutenção, revisão e releases
- docs/COMPATIBILITY.md — matriz automatizada e checklist de validação manual em clientes MCP
Compatibilidade e suporte
| Componente | Suporte atual |
|---|---|
| Node.js | 22.13+; CI em Node 22 e 24 |
| Protocolo MCP | 2026-07-28 e família 2025 stateless |
| Transporte | Streamable HTTP e stdio oficiais |
| Cursor | stdio local ou HTTP |
| Claude Desktop | stdio local ou conector remoto |
| Instalação | Git e Docker; npm após a release v3 |
Suporte comunitário ocorre por Issues e Discussions, sem garantia de tempo de resposta. Veja as responsabilidades em MAINTAINERS.md.
Contribuindo
Contribuições são muito bem-vindas! Leia o CONTRIBUTING.md para o fluxo completo e o Código de Conduta para as regras da comunidade.
Sugestões rápidas:
- Abra uma issue usando os templates.
- Envie um PR pequeno e focado, com descrição do que muda e por quê.
- Rode
npm run typecheck,npm run lint,npm test,npm run format:checkenpm run audit:prodantes de enviar.
Segurança
Para reportar vulnerabilidades, envie um e-mail para [email protected]. O processo está em SECURITY.md. Não abra issues públicas para problemas de segurança.
Licença
Distribuído sob a licença MIT.
Install
docker run -d -p 3001:3001 \Configuration
{
"mcpServers": {
"kommo": {
"command": "node",
"args": ["/caminho/absoluto/Kommo-MCP/dist/stdio.js"],
"env": {
"KOMMO_BASE_URL": "https://seu-dominio.kommo.com",
"KOMMO_ACCESS_TOKEN": "seu-token-aqui"
}
}
}
}