Token导航 LogoToken导航TokenDH.com
MCP Clint Crm logo
办公协作stdio官方级别未说明来源级核验

MCP Clint Crm

MCP Server

MCP Clint CRM 是一个开源项目,用于通过MCP协议与Clint CRM集成,管理联系人、交易、标签和组织等CRM功能。

工具数

27

提示词数

0

GitHub Stars

1

资源数

0
CRM集成标签管理PythonClaudeClaude DesktopClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Franky-Neto

提供方

Franky-Neto

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run src/server.py

详细介绍

MCP Clint CRM

Servidor MCP (Model Context Protocol) para integração com o Clint CRM. Gerencie contatos, negócios, tags, organizações e toda a configuração do seu CRM diretamente através de assistentes de IA compatíveis com MCP.

****

Aviso: Este é um projeto open source mantido pela comunidade. Não é uma ferramenta oficial do Clint CRM. Utilize por sua conta e risco. Consulte a documentação oficial da API do Clint CRM para informações sobre a API.

Pré-requisitos

  • Plano Elite do Clint CRM — O acesso à API requer o plano Elite ativo na sua conta Clint.
  • API Key do Clint CRM — Chave de acesso gerada na sua conta Clint para autenticação na API.
  • Python 3.14+ — O projeto utiliza recursos modernos do Python.
  • UV — Gerenciador de pacotes e ambientes virtuais para Python. Instalar UV.

Links Úteis


Instalação e Configuração

1. Clonar o repositório

git clone https://github.com/seu-usuario/mcp-clint-crm.git
cd mcp-clint-crm

2. Configurar as variáveis de ambiente

Crie um arquivo .env na raiz do projeto:

# Obrigatório — sua chave da API do Clint CRM
CLINT_API_KEY=sua_chave_api_aqui

# Opcional — necessário apenas para modo HTTP (ver seção "Deploy via HTTP")
CLINT_MCP_TRANSPORT=stdio
CLINT_MCP_HOST=0.0.0.0
CLINT_MCP_PORT=8001

# Opcional — Google OAuth (necessário para autenticação via Cowork/Claude.ai)
GOOGLE_CLIENT_ID=seu_client_id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-xxx
GOOGLE_AUTH_BASE_URL=https://seu-servidor.com

# Opcional — Controle de acesso (requer Google OAuth ativo)
CLINT_MCP_RESTRICT_BY_EMAIL=false
CLINT_MCP_ALLOWED_EMAILS=usuario1@gmail.com,usuario2@gmail.com
CLINT_MCP_RESTRICT_BY_DOMAIN=false
CLINT_MCP_ALLOWED_DOMAINS=suaempresa.com
VariávelObrigatóriaDescrição
CLINT_API_KEYSimChave da API do Clint CRM (plano Elite)
CLINT_MCP_TRANSPORTNãoTransporte do servidor: stdio (padrão) ou streamable-http
CLINT_MCP_HOSTNãoHost do servidor HTTP (padrão: 0.0.0.0)
CLINT_MCP_PORTNãoPorta do servidor HTTP (padrão: 8001)
GOOGLE_CLIENT_IDNãoClient ID do Google OAuth (ver seção "Autenticação")
GOOGLE_CLIENT_SECRETNãoClient Secret do Google OAuth
GOOGLE_AUTH_BASE_URLNãoURL pública do servidor (padrão: http://localhost:8001)
CLINT_MCP_RESTRICT_BY_EMAILNãotrue para restringir acesso por email (padrão: false)
CLINT_MCP_ALLOWED_EMAILSNãoEmails permitidos (separados por vírgula)
CLINT_MCP_RESTRICT_BY_DOMAINNãotrue para restringir acesso por domínio (padrão: false)
CLINT_MCP_ALLOWED_DOMAINSNãoDomínios permitidos (separados por vírgula)

3. Instalar dependencias

uv sync

4. Executar o servidor (modo stdio)

uv run src/server.py

Configuracao via stdio (Claude Desktop, Cursor, etc.)

Para utilizar o servidor MCP com assistentes de IA que suportam o protocolo MCP via stdio, adicione a seguinte configuração no arquivo de configuração do seu cliente MCP.

Claude Desktop

No arquivo claude_desktop_config.json:

{
  "mcpServers": {
    "clint-crm": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/caminho/absoluto/para/mcp-clint-crm",
        "src/server.py"
      ],
      "env": {
        "CLINT_API_KEY": "sua_chave_api_aqui"
      }
    }
  }
}

Cursor

No arquivo de configuração MCP do Cursor (.cursor/mcp.json):

{
  "mcpServers": {
    "clint-crm": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/caminho/absoluto/para/mcp-clint-crm",
        "src/server.py"
      ],
      "env": {
        "CLINT_API_KEY": "sua_chave_api_aqui"
      }
    }
  }
}

Claude Code (CLI)

claude mcp add clint-crm -- uv run --directory /caminho/absoluto/para/mcp-clint-crm src/server.py
Nota: Substitua /caminho/absoluto/para/mcp-clint-crm pelo caminho real do projeto no seu sistema. A variável CLINT_API_KEY pode ser definida no .env do projeto ou diretamente na configuração env do cliente MCP.

Autenticação (Google OAuth)

O servidor suporta autenticação via Google OAuth, permitindo controlar quem pode acessar o MCP server via HTTP. A autenticação é opcional — se as variáveis GOOGLE_CLIENT_ID e GOOGLE_CLIENT_SECRET não estiverem definidas, o servidor aceita qualquer conexão.

Configurar o Google OAuth

  1. Acesse o Google Cloud Console
  2. Crie ou selecione um projeto
  3. Vá em APIs & Services → Credentials → Create Credentials → OAuth Client ID
  4. Tipo: Web application
  5. Adicione a Redirect URI: https://seu-servidor.com/auth/callback
  6. Copie o Client ID e Client Secret para o .env

Controle de acesso

Você pode restringir quem pode usar o servidor com duas opções (podem ser usadas juntas):

Por email — apenas emails específicos:

CLINT_MCP_RESTRICT_BY_EMAIL=true
CLINT_MCP_ALLOWED_EMAILS=frank@gmail.com,colega@empresa.com

Por domínio — qualquer email de um domínio:

CLINT_MCP_RESTRICT_BY_DOMAIN=true
CLINT_MCP_ALLOWED_DOMAINS=suaempresa.com,parceiro.com

Se ambos estiverem habilitados, o usuário precisa estar em pelo menos uma das listas para ter acesso.

Se nenhuma restrição estiver habilitada (false), qualquer conta Google autenticada terá acesso.


Deploy via HTTP (Servidor remoto / VPS / Cloud)

Para disponibilizar o MCP server via rede (ex: para uso com Claude.ai, Cowork, ChatGPT), o servidor roda em modo HTTP com transport Streamable HTTP.

Opção 1: Docker (recomendado)

git clone https://github.com/seu-usuario/mcp-clint-crm.git
cd mcp-clint-crm

Configure o .env:

CLINT_API_KEY=sua_chave_api_aqui

Suba o container:

docker compose up -d

O servidor estará disponível em http://seu-servidor:8001/mcp com health check automático em /health.

Opção 2: Uvicorn direto

cd mcp-clint-crm && uv sync
CLINT_MCP_TRANSPORT=streamable-http uv run uvicorn server:app --host 0.0.0.0 --port 8001 --app-dir src

Opção 3: VPS com PM2

cd mcp-clint-crm && uv sync
pm2 start "uv run uvicorn server:app --host 0.0.0.0 --port 8001 --app-dir src" --name clint-mcp

Configuração dos clientes MCP (HTTP)

Após o deploy, configure o cliente MCP com a URL do servidor.

Claude.ai / Cowork:

Adicione como custom connector na interface, ou no claude_desktop_config.json:

{
  "mcpServers": {
    "clint-crm": {
      "type": "http",
      "url": "https://seu-servidor.com/mcp"
    }
  }
}

ChatGPT / Codex:

{
  "mcpServers": {
    "clint-crm": {
      "url": "https://seu-servidor.com/mcp"
    }
  }
}
Importante: Em produção, use HTTPS (TLS) com um reverse proxy (Nginx, Caddy, etc.) na frente do servidor MCP. O servidor em si não faz terminação TLS.

Tools Disponíveis

O servidor expõe 27 tools organizadas por domínio. Cada tool é anotada com metadados de segurança (somente leitura / destrutiva) para que o assistente de IA solicite confirmação antes de executar ações perigosas.

Resumo

DomínioToolsOperações
Contatos7Listar, buscar, criar, atualizar, deletar, adicionar/remover tags
Negócios (Deals)5Listar, buscar, criar, atualizar, deletar
Tags4Listar, buscar, criar, deletar
Organizações2Buscar, atualizar
Origens2Listar, buscar
Grupos2Listar, buscar
Usuários2Listar, buscar
Status de Perda2Listar, buscar
Conta1Listar campos personalizados

Contatos

list_contacts

Lista todos os contatos do CRM com filtros opcionais. Retorna até 1000 contatos por chamada com suporte a paginação.

ParâmetroTipoDescrição
offsetintDeslocamento para paginação (padrão: 0)
namestrFiltrar por nome do contato
phonestrFiltrar por telefone (sem código do país)
emailstrFiltrar por e-mail
tag_namesstrFiltrar por tags (separadas por vírgula)
origin_idstrFiltrar por origem (use list_origins para obter IDs)

get_contact

Retorna os detalhes completos de um contato pelo UUID.

ParâmetroTipoDescrição
uuidstrID do contato (obtenha via list_contacts)

create_contact

Cria um novo contato no CRM.

ParâmetroTipoDescrição
namestrNome do contato (obrigatório)
ddistrCódigo DDI do país
phonestrTelefone
emailstrE-mail
usernamestrNome de usuário
fields`dict \str`Campos personalizados (JSON). Use list_fields para descobrir os campos disponíveis

update_contact

Atualiza um contato existente. Envie apenas os campos que deseja alterar.

ParâmetroTipoDescrição
uuidstrID do contato (obrigatório)
namestrNovo nome
ddistrNovo DDI
phonestrNovo telefone
emailstrNovo e-mail
usernamestrNovo nome de usuário
fields`dict \str`Campos personalizados (JSON)

delete_contact

Remove permanentemente um contato. Ação destrutiva — requer confirmação.

ParâmetroTipoDescrição
uuidstrID do contato (obrigatório)

add_tags

Adiciona uma ou mais tags a um contato.

ParâmetroTipoDescrição
uuidstrID do contato (obrigatório)
tag_nameslist[str]Lista de nomes de tags para adicionar

remove_tags

Remove uma tag de um contato. Ação destrutiva — requer confirmação.

ParâmetroTipoDescrição
uuidstrID do contato (obrigatório)
tag_namestrNome da tag para remover

Negócios (Deals)

list_deals

Lista negócios com filtros avançados por data, status, usuário e tags. Retorna até 1000 negócios por chamada.

ParâmetroTipoDescrição
offsetintDeslocamento para paginação (padrão: 0)
created_at_startstrData inicial de criação (ISO 8601)
created_at_endstrData final de criação (ISO 8601)
updated_at_startstrData inicial de atualização (ISO 8601)
updated_at_endstrData final de atualização (ISO 8601)
user_emailstrFiltrar por e-mail do usuário responsável
phonestrFiltrar por telefone
emailstrFiltrar por e-mail
tag_namesstrFiltrar por tags (separadas por vírgula)
statusstrStatus: OPEN, WON ou LOST (padrão: OPEN)
won_at_startstrData inicial de ganho (ISO 8601)
won_at_endstrData final de ganho (ISO 8601)
lost_at_startstrData inicial de perda (ISO 8601)
lost_at_endstrData final de perda (ISO 8601)
stage_idstrFiltrar por etapa do funil

get_deal

Retorna os detalhes completos de um negócio pelo ID.

ParâmetroTipoDescrição
idstrID do negócio (obtenha via list_deals)

create_deal

Cria um novo negócio no CRM. Requer obrigatoriamente uma origem.

ParâmetroTipoDescrição
origin_idstrID da origem (obrigatório, use list_origins)
namestrNome do contato
phonestrTelefone
emailstrE-mail
usernamestrNome de usuário
valuefloatValor do negócio
stage_idstrID da etapa do funil
user_idstrID do usuário responsável
contact_idstrID do contato existente
fields`dict \str`Campos personalizados (JSON)

update_deal

Atualiza um negócio existente, incluindo mudanças de status e etapa do funil.

ParâmetroTipoDescrição
idstrID do negócio (obrigatório)
namestrNovo nome
phonestrNovo telefone
emailstrNovo e-mail
valuefloatNovo valor
stage_idstrNova etapa do funil
statusstrNovo status: OPEN, WON ou LOST
user_idstrNovo usuário responsável
origin_idstrNova origem
fields`dict \str`Campos personalizados (JSON)

remove_deal

Remove permanentemente um negócio. Ação destrutiva — requer confirmação.

ParâmetroTipoDescrição
idstrID do negócio (obrigatório)

Tags

list_tags

Lista todas as tags com filtro opcional por nome.

ParâmetroTipoDescrição
offsetintDeslocamento para paginação (padrão: 0)
namestrFiltrar por nome da tag

get_tag

Retorna os detalhes de uma tag pelo ID.

ParâmetroTipoDescrição
idstrID da tag (obtenha via list_tags)

create_tag

Cria uma nova tag com nome e cor.

ParâmetroTipoDescrição
namestrNome da tag (obrigatório)
colorstrCor em hexadecimal (padrão: #f44336)

Cores disponíveis:

CorCódigo
Vermelho#f44336
Rosa#e91e63
Roxo#9c27b0
Roxo escuro#673ab7
Azul#2196f3
Laranja#faa200
Marrom#795548
Cinza azulado#607d8b

delete_tag

Remove permanentemente uma tag. Ação destrutiva — requer confirmação.

ParâmetroTipoDescrição
idstrID da tag (obrigatório)

Organizações

get_organization

Retorna os detalhes de uma organização pelo ID.

ParâmetroTipoDescrição
idstrID da organização

update_organization

Atualiza uma organização existente. Ação destrutiva — requer confirmação.

ParâmetroTipoDescrição
idstrID da organização (obrigatório)
namestrNovo nome
custom_fields`dict \str`Campos personalizados (JSON)

Origens

list_origins

Lista as origens filtradas por grupo. Cada origem contém suas etapas (stages) do funil.

ParâmetroTipoDescrição
group_idstrID do grupo (obrigatório, use list_groups)
offsetintDeslocamento para paginação (padrão: 0)

get_origin

Retorna os detalhes de uma origem pelo ID.

ParâmetroTipoDescrição
idstrID da origem (obtenha via list_origins)

Grupos

list_groups

Lista todos os grupos disponíveis no CRM.

ParâmetroTipoDescrição
offsetintDeslocamento para paginação (padrão: 0)

get_group

Retorna os detalhes de um grupo pelo ID.

ParâmetroTipoDescrição
idstrID do grupo (obtenha via list_groups)

Usuários

list_users

Lista todos os usuários do sistema.

ParâmetroTipoDescrição
offsetintDeslocamento para paginação (padrão: 0)

get_user

Retorna os detalhes de um usuário pelo ID.

ParâmetroTipoDescrição
idstrID do usuário (obtenha via list_users)

Status de Perda

list_lost_status

Lista todos os motivos de perda de negócios.

ParâmetroTipoDescrição
offsetintDeslocamento para paginação (padrão: 0)

get_lost_status

Retorna os detalhes de um status de perda pelo ID.

ParâmetroTipoDescrição
idstrID do status (obtenha via list_lost_status)

Conta

list_fields

Lista todos os campos personalizados configurados na conta. Use esta tool antes de criar ou atualizar contatos e negócios para descobrir os campos disponíveis e seus tipos.

Não requer parâmetros adicionais.


Campos Personalizados (Custom Fields)

Contatos, negócios e organizações suportam campos personalizados. O fluxo recomendado é:

  1. Chame list_fields para descobrir os campos disponíveis, seus nomes-chave, tipos e opções.
  2. Ao criar ou atualizar um registro, passe os campos no parâmetro fields como um objeto JSON:
{
  "campo_personalizado_1": "valor",
  "campo_personalizado_2": 123
}

Os campos podem ser passados como dict do Python ou como uma string JSON válida.


Paginação

Todas as operações de listagem retornam até 1000 registros por chamada. Para obter mais resultados, use o parâmetro offset:

  • Primeira chamada: offset=0 (padrão)
  • Segunda chamada: offset=1000
  • Terceira chamada: offset=2000
  • E assim por diante...

O servidor retorna o total de registros disponíveis e sugere o próximo offset quando há mais dados.


Stack Técnica

TecnologiaVersãoPropósito
Python3.14+Linguagem principal
FastMCP3.1.1+Framework MCP
httpx0.28.1+Cliente HTTP assíncrono
Pydantic2.12.5+Validação de dados e modelos
UV-Gerenciador de pacotes
Docker-Containerização (opcional)

Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests. Se você está utilizando o projeto, favor considere marcar a estrela ⭐️.


Licença

Este projeto é open source. Consulte o arquivo de licença para mais detalhes.


Este projeto não é afiliado ao Clint CRM.

目录标签

目录标签

CRM集成标签管理PythonClaude本地部署开源项目联系人管理交易管理

支持客户端

Claude DesktopClaudeCursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

27

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP