ClickUp
Um servidor MCP para o ClickUp, permitindo que assistentes de IA interajam e gerenciem tarefas em seus espaços de trabalho do ClickUp.
Documentação
ClickUp MCP Server
Uma implementação de servidor Model Context Protocol para integração com o ClickUp, permitindo que assistentes de IA interajam com espaços de trabalho do ClickUp.
Este servidor é executado via Stdio, conforme a especificação MCP, quando invocado por um cliente MCP.
Início Rápido
Este servidor usa seu ClickUp Personal API Token para autenticação.
- Gere um Personal API Token: Nas configurações do seu ClickUp, navegue até "My Settings" > "Apps" e gere um token.
- Configure seu cliente MCP (ex.: Claude for Desktop): Defina a variável de ambiente necessária ao configurar o servidor para o seu cliente.
Exemplo de trecho de configuração para um cliente MCP:
{
"mcpServers": {
"clickup": {
"command": "npx",
"args": ["@nazruden/clickup-server"],
"env": {
"CLICKUP_PERSONAL_TOKEN": "your_personal_api_token_here"
}
}
}
}
- Reinicie seu cliente MCP.
O servidor será baixado e iniciado automaticamente pelo cliente MCP quando necessário.
Instalação via Smithery
Para instalar o ClickUp MCP Server para Claude Desktop automaticamente via Smithery:
npx -y @smithery/cli install @Nazruden/clickup-mcp-server --client claude
Variáveis de Ambiente
Obrigatórias
CLICKUP_PERSONAL_TOKEN: Seu ClickUp Personal API Token. É essencial para que o servidor autentique com a API do ClickUp.
Opcionais
LOG_LEVEL: Nível de registro (logging) do servidor. Suportaerror,warn,info,debug. O padrão éinfo.ENCRYPTION_KEY: Uma chave persistente codificada em hexadecimal de 32 bytes. O sistema de configuração (src/config/app.config.ts) carrega ou gera essa chave, esrc/security.tscontém funções de criptografia/descriptografia. No entanto, esse mecanismo atualmente não é usado para criptografar oCLICKUP_PERSONAL_TOKENno fluxo de autenticação do Personal API Token doClickUpService.PORT: Porta do servidor. Não é usada pelo modo padrão de servidor MCP Stdio, mas pode ser relevante se um transporte HTTP ou recursos HTTP adicionais (como um endpoint separado de health check) forem explicitamente adicionados. O padrão é3000na configuração, se lido.
Ferramentas Disponíveis
As seguintes ferramentas MCP estão atualmente implementadas:
Gerenciamento de Tarefas
clickup_create_task: Cria uma nova tarefa em uma lista do ClickUp.- Requer:
list_id,name. - Opcional:
description,status,priority,assignees,due_date,time_estimate,tags.
- Requer:
clickup_update_task: Atualiza as propriedades de uma tarefa existente.- Requer:
task_id. - Opcional: quaisquer propriedades graváveis de
ClickUpTask.
- Requer:
Gerenciamento de Equipes e Listas
clickup_get_teams: Recupera todas as equipes acessíveis (Workspaces na API v2 do ClickUp).clickup_get_lists: Obtém todas as listas em uma pasta específica.- Requer:
folder_id.
- Requer:
Gerenciamento de Quadros
clickup_create_board: Cria um novo quadro em um espaço do ClickUp.- Requer:
space_id,name.
- Requer:
Gerenciamento de Espaços
clickup_get_spaces: Recupera todos os Espaços de um Workspace (Equipe) específico.- Requer:
team_id(ID do Workspace). - Opcional:
archived(booleano, o padrão éfalse).
- Requer:
clickup_create_space: Cria um novo Espaço dentro de um Workspace.- Requer:
team_id(ID do Workspace),name. - Opcional:
multiple_assignees(booleano),features(objeto com flags de recursos comodue_dates,time_tracking, etc.).
- Requer:
clickup_get_space: Recupera detalhes de um Espaço específico.- Requer:
space_id.
- Requer:
clickup_update_space: Atualiza um Espaço existente.- Requer:
space_id. - Opcional:
name,color,private,admin_can_manage,archived,features.
- Requer:
clickup_delete_space: Exclui um Espaço.- Requer:
space_id.
- Requer:
Gerenciamento de Pastas
clickup_get_folders: Recupera todas as Pastas dentro de um Espaço específico.- Requer:
space_id. - Opcional:
archived(booleano, o padrão éfalse).
- Requer:
clickup_create_folder: Cria uma nova Pasta dentro de um Espaço.- Requer:
space_id,name.
- Requer:
clickup_get_folder: Recupera detalhes de uma Pasta específica.- Requer:
folder_id.
- Requer:
clickup_update_folder: Atualiza uma Pasta existente.- Requer:
folder_id,name.
- Requer:
clickup_delete_folder: Exclui uma Pasta.- Requer:
folder_id.
- Requer:
Gerenciamento de Campos Personalizados
clickup_get_custom_fields: Recupera todos os Campos Personalizados acessíveis de uma Lista específica.- Requer:
list_id.
- Requer:
clickup_set_task_custom_field_value: Define o valor de um Campo Personalizado em uma tarefa específica.- Requer:
task_id,field_id,value. - Opcional:
value_options(objeto, ex.:{ "time": true }para campos de data).
- Requer:
clickup_remove_task_custom_field_value: Remove/limpa o valor de um Campo Personalizado de uma tarefa específica.- Requer:
task_id,field_id.
- Requer:
Gerenciamento de Documentos
Nota: A API do ClickUp para Documentos (especialmente v2, com algumas operações agora usando v3) tem limitações. O conteúdo é tratado principalmente como Markdown. Formatação avançada ou embeds complexos podem não ser totalmente suportados. A exclusão direta de documentos via API não é suportada atualmente pelo endpoint V3 /docs do ClickUp; gerencie o ciclo de vida do Documento por meio de arquivamento ou manipulação de páginas.
clickup_search_docs: Pesquisa Documentos dentro de um Workspace (Equipe).- Requer:
workspace_id. - Opcional:
query(string),include_archived(booleano).
- Requer:
clickup_create_doc: Cria um novo Documento.- Requer:
workspace_id,name. - Opcional:
parent(objeto comidetype),visibility(string: "private", "workspace", "public"),create_page(booleano).
- Requer:
clickup_get_doc_pages: Recupera a lista de páginas dentro de um Documento específico.- Requer:
doc_id.
- Requer:
clickup_create_doc_page: Cria uma nova página dentro de um Documento específico.- Requer:
workspace_id,doc_id,name(título da página). - Opcional:
content(Markdown),orderindex(número, embora a API v3 possa não usá-lo),parent_page_id(string),sub_title(string),content_format(string).
- Requer:
clickup_get_doc_page_content: Recupera o conteúdo (Markdown) de uma página específica de Documento.- Requer:
workspace_id,doc_id,page_id. - Opcional:
content_format(string).
- Requer:
clickup_edit_doc_page_content: Atualiza o conteúdo e/ou título de uma página específica de Documento.- Requer:
workspace_id,doc_id,page_id,content(Markdown). - Opcional:
title(string, mapeia para 'name' da API),sub_title(string),content_edit_mode(string: "replace", "append", "prepend"),content_format(string).
- Requer:
Gerenciamento de Visualizações
clickup_get_views: Recupera todas as Visualizações de um recurso pai específico (Equipe, Espaço, Pasta ou Lista).- Requer:
parent_id(ID do recurso pai),parent_type(string: "team", "space", "folder" ou "list").
- Requer:
clickup_create_view: Cria uma nova Visualização dentro de uma Equipe, Espaço, Pasta ou Lista.- Requer:
parent_id,parent_type,name(string: nome da nova Visualização),type(string: tipo da Visualização, ex.: "list", "board", "calendar", "gantt"). - Opcional:
grouping,divide,sorting,filters,columns,team_sidebar,settings(objetos que definem configurações de visualização).
- Requer:
clickup_get_view_details: Recupera detalhes de uma Visualização específica.- Requer:
view_id.
- Requer:
clickup_update_view: Atualiza uma Visualização existente.- Requer:
view_id. - Opcional:
name(string),grouping,divide,sorting,filters,columns,team_sidebar,settings.
- Requer:
clickup_delete_view: Exclui uma Visualização.- Requer:
view_id.
- Requer:
clickup_get_view_tasks: Recupera tarefas pertencentes a uma Visualização específica.- Requer:
view_id. - Opcional:
page(número: número da página com índice 0 para paginação).
- Requer:
Desenvolvimento
-
Clone o repositório:
git clone <repository_url> cd clickup-mcp-server -
Instale as dependências:
npm install -
Crie um arquivo
.envno diretório raiz e adicione seuCLICKUP_PERSONAL_TOKEN:CLICKUP_PERSONAL_TOKEN=your_actual_personal_api_token_here LOG_LEVEL=debug -
Inicie em modo de desenvolvimento (Stdio): O servidor escutará mensagens MCP em stdin/stdout.
npm run devIsso usa
ts-node-devpara executarsrc/index.ts. -
Compile para produção:
npm run buildIsso compila TypeScript para
dist/. -
Execute os testes:
npm testIsso executa os testes unitários Jest localizados em
src/__tests__. Certifique-se de ter um arquivo.env.test(vejasrc/__tests__/setup.ts).
Testando com o MCP Inspector
Você pode testar o servidor localmente usando o MCP Inspector:
- Certifique-se de que seu
CLICKUP_PERSONAL_TOKENesteja disponível. Você pode:- Defini-lo no ambiente do seu shell antes de executar o inspector.
- Defini-lo na interface do MCP Inspector, se ela oferecer uma opção para variáveis de ambiente do servidor.
- Tê-lo no seu arquivo local
.env(poissrc/index.tscarregadotenv).
- Execute o Inspector com o servidor:
A interface do Inspector deve abrir, permitindo que você se conecte ao servidor e chame suas ferramentas.npx @modelcontextprotocol/inspector node --loader ts-node/esm src/index.ts
Segurança
- Autentica usando seu ClickUp Personal API Token. Mantenha este token seguro e confidencial. Trate-o como uma senha.
- O servidor espera que o
CLICKUP_PERSONAL_TOKENseja fornecido via variável de ambiente pelo cliente MCP consumidor ou pelo ambiente de desenvolvimento. - O sistema de configuração inclui lógica para um
ENCRYPTION_KEYesrc/security.tstem funções de criptografia, mas isso não é aplicado atualmente ao Personal API Token peloClickUpService. - Nenhum dado sensível (como o próprio token) é registrado por padrão com
LOG_LEVEL=info. O nível de debug pode registrar mais detalhes. - A limitação de taxa para chamadas à API do ClickUp é tratada registrando as solicitações restantes (veja
ClickUpService).
Solução de Problemas
Problemas Comuns
-
Erros de Autenticação (401 da API do ClickUp)
- Verifique se a variável de ambiente
CLICKUP_PERSONAL_TOKENestá definida corretamente e acessível pelo processo do servidor. - Certifique-se de que o token seja válido e não tenha sido revogado nas suas configurações do ClickUp.
- Verifique os logs do servidor para mensagens de
ClickUpServicesobre autenticação.
- Verifique se a variável de ambiente
-
Limitação de Taxa pela API do ClickUp
- O servidor registra informações de limite de taxa das respostas da API do ClickUp.
- Se os limites de taxa forem atingidos com frequência, isso indica uso elevado. O servidor em si não implementa filas ou backoff complexo além do que
axiospossa fazer por padrão.
-
Servidor Não Iniciando / Problemas de Conexão com o MCP Inspector
- Certifique-se de que
CLICKUP_PERSONAL_TOKENesteja definido. - Se estiver usando
npm run dev, verifique erros de TypeScript outs-node-devno console. - Se estiver usando o MCP Inspector com
node --loader ts-node/esm src/index.ts, certifique-se de quets-nodee as dependências do projeto estejam instalados corretamente. - Verifique erros de console de
src/index.tsouClickUpService.
- Certifique-se de que
Obtendo Logs do Servidor
- Quando executado via
npm run devounpm start, os logs vão para o console. - Se executado por um cliente MCP (como Claude for Desktop), os logs geralmente são gerenciados por esse cliente. Para Claude for Desktop, os logs geralmente podem ser encontrados em:
- Windows:
%USERPROFILE%\AppData\Local\Claude\Logs\mcp\<server_name_and_id>\<process_id>.log(o caminho pode variar ligeiramente) - macOS:
~/Library/Logs/Claude/mcp/<server_name_and_id>\<process_id>.log(o caminho pode variar ligeiramente)
- Windows:
Suporte
Se você achar este projeto útil, considere me pagar um café para apoiar o desenvolvimento e a manutenção contínuos.
Licença
Licença MIT - consulte o arquivo LICENSE para obter detalhes
