Skip to main content
Glama

clickup-mcp

Servidor MCP de ClickUp para Claude: expone tareas, espacios, carpetas, listas y comentarios de ClickUp como herramientas MCP.

Stack tecnológico: Python 3.12 + uv + FastMCP (Starlette/FastAPI)

Inicio rápido

# Install dependencies
cd D:\leo\mcp-server\clickup-mcp
uv sync

# Run in stdio mode (for Claude Desktop)
$env:CLICKUP_API_TOKEN="pk_xxxxx"
uv run clickup-mcp

Related MCP server: Clickup Universal MCP Server

Configuración

Copia .env.example a .env y completa tus valores:

Variable

Por defecto

Descripción

CLICKUP_API_TOKEN

Token personal de la API de ClickUp (pk_xxxxx)

AUTH_MODE

env

env = token desde variable de entorno; gateway = token por solicitud desde la cabecera X-Clickup-Token

MCP_TRANSPORT

stdio

stdio (Claude Desktop) o http (gateway)

MCP_HTTP_PORT

8080

Puerto del servidor HTTP

CLICKUP_BASE_URL

https://api.clickup.com/api/v2

URL base de la API

Obtén tu token de API: ClickUp → Ajustes → Apps → Token de API

Configuración de Claude Desktop

Añade a claude_desktop_config.json:

{
  "mcpServers": {
    "clickup": {
      "command": "uv",
      "args": ["run", "--directory", "D:/leo/mcp-server/clickup-mcp", "clickup-mcp"],
      "env": {
        "CLICKUP_API_TOKEN": "pk_xxxxx"
      }
    }
  }
}

Modos de transporte

stdio (Claude Desktop / CLI)

$env:CLICKUP_API_TOKEN="pk_xxxxx"
uv run clickup-mcp

HTTP — monousuario

$env:CLICKUP_API_TOKEN="pk_xxxxx"
$env:MCP_TRANSPORT="http"
$env:MCP_HTTP_PORT="8080"
uv run clickup-mcp

HTTP — gateway / multiusuario

$env:MCP_TRANSPORT="http"
$env:AUTH_MODE="gateway"
uv run clickup-mcp
# Each request must include: X-Clickup-Token: pk_xxxxx

Herramientas disponibles (28)

Herramienta

Descripción

clickup_get_workspaces

Lista todos los espacios de trabajo/equipos

clickup_list_members

Lista los miembros del espacio de trabajo, aplanados a id/username/email/team_id/role — resuelve el email de una persona al user_id que esperan los filtros assignees

clickup_list_spaces

Lista los espacios en un espacio de trabajo

clickup_get_space

Obtiene los detalles de un espacio

clickup_get_space_folders

Lista las carpetas en un espacio

clickup_get_space_lists

Lista las listas sin carpeta en un espacio

clickup_get_folder

Obtiene los detalles de una carpeta

clickup_get_folder_lists

Lista las listas en una carpeta

clickup_create_folder

Crea una carpeta

clickup_update_folder

Actualiza una carpeta

clickup_delete_folder

Elimina una carpeta

clickup_get_list

Obtiene los detalles de una lista

clickup_create_list_in_folder

Crea una lista en una carpeta

clickup_create_folderless_list

Crea una lista en un espacio

clickup_update_list

Actualiza una lista

clickup_get_task

Obtiene una tarea por ID

clickup_search_tasks

Busca tareas con filtros (un solo espacio de trabajo, se requiere team_id)

clickup_list_tasks_for_person

Lista las tareas de una persona en TODOS los espacios de trabajo visibles en una sola llamada, por email o user_id — no se necesita team_id, ni paginación manual ni deduplicación

clickup_create_task

Crea una tarea

clickup_update_task

Actualiza una tarea

clickup_delete_task

Elimina una tarea

clickup_move_task

Mueve una tarea a una lista diferente

clickup_get_task_comments

Obtiene los comentarios de una tarea

clickup_create_task_comment

Añade un comentario a una tarea

clickup_get_doc_page

Obtiene una sola página de un Documento (v3)

clickup_attach_task_file

Sube un archivo (por ejemplo, una imagen) como adjunto a una tarea

clickup_create_comment_with_image

Sube un archivo y lo publica en línea dentro de un nuevo comentario de tarea, en una sola llamada

clickup_list_rocks_for_org

Lista todos los EOS Rocks (objetivos trimestrales) de toda la organización en una sola llamada, normalizados a un enum de estado fijo

Cómo encontrar el ID de usuario de ClickUp de una persona

Usa clickup_list_members. La respuesta nativa de ClickUp GET /team incluye una lista completa de miembros por equipo (teams[].members[].user.{id,username,email}), pero clickup_get_workspaces elimina eso para mantener su respuesta pequeña, por lo que no es el lugar para buscar personas. clickup_list_members lee el mismo endpoint subyacente y proyecta la lista de miembros a una forma plana y específica (id/username/email/team_id/role) para que los llamadores no tengan que extraerla del objeto completo del espacio de trabajo/equipo. clickup_list_tasks_for_person utiliza la misma búsqueda interna para resolver email -> user_id.

Brecha conocida: el objeto de miembro de equipo de ClickUp no tiene un campo fiable "este miembro está desactivado" — clickup_list_members no devuelve un campo active, ya que nada real lo respaldaría (el único campo status presente en el objeto sin procesar, invited_by.status, describe al invitador, no al miembro).

clickup_search_tasks ya devuelve status.type

Como cualquier otra herramienta de lectura aquí, clickup_search_tasks y clickup_get_task pasan el objeto de tarea sin procesar de ClickUp sin modificar, incluido el campo type del objeto status (open / custom / closed / done), que es la única forma fiable de saber si un estado con nombre personalizado cuenta como completado. No fue necesario ningún cambio de código para esto; ya estaba ahí. clickup_list_tasks_for_person lo muestra explícitamente como status_type en cada tarea devuelta por conveniencia.

Cómo se representan los EOS Rocks en este espacio de trabajo de ClickUp

Confirmado el 18/08/2026 inspeccionando directamente los campos de una tarea rock real (no adivinado): Los Rocks son tareas regulares de ClickUp que viven en una lista literalmente llamada "Rocks" (encontrada bajo Espacio "Company" > Carpeta "EOS Traction"), cada una con campos personalizados dedicados: Quarter (desplegable, "Q1 2024".."Q4 2026"), Rocks Status (En espera / Fuera de camino / En camino / Completado / Bloqueado / En riesgo), Rock Type (Empresa / Individual / Departamental / Rock de equipo), Department, y progreso a través de Progress (manual) o Progress % (automático, resumen de lista de verificación). Esto no es la API de Objetivos de ClickUp ni una lista de tareas simple sin metadatos: son tareas más campos personalizados.

clickup_list_rocks_for_org descubre cada lista llamada "Rocks" (por nombre, no un ID fijo, en caso de que los espacios/carpetas se reorganizen) en todos los espacios de trabajo visibles para el token, lee estos campos y los normaliza:

  • quarter: la etiqueta "Q3 2026" de ClickUp se convierte a 2026-Q3 (y viceversa, para el filtro de entrada quarter).

  • status: las 6 opciones sin procesar de ClickUp se asignan al contrato de 5 valores (on_track/off_track/done/missed/open) — consulta el comentario _STATUS_MAP en rocks.py para conocer la asignación exacta y por qué missed nunca se emite (nada en los datos de ClickUp distingue "se quedó sin tiempo" de "fuera de camino" genérico; derivarlo de una fecha de vencimiento vencida sería una suposición de lógica empresarial no confirmada, por lo que no se hace aquí).

  • measurable: no existe un campo dedicado en esta lista. Se recurre a la descripción de la tarea; null si también está vacía (nunca se fabrica).

  • weekly_status: no se encontró ninguna fuente estructurada en ninguna parte (ni un campo personalizado, ni derivado de comentarios) — siempre se devuelve como []. Si la organización comienza a rastrear esto en ClickUp de otra manera, revisar.

Archivos adjuntos e imágenes

La API REST de ClickUp no tiene forma de adjuntar un archivo directamente a un comentario, solo a una tarea (POST /task/{task_id}/attachment, que es lo que envuelve clickup_attach_task_file). Tampoco hay un endpoint para eliminar/actualizar archivos adjuntos; volver a subir añade un nuevo adjunto en lugar de reemplazar el anterior, y eliminar uno requiere la aplicación web/escritorio de ClickUp. Confirmado también revisando las descripciones de herramientas del servidor MCP oficial de ClickUp: la misma división (una herramienta Create Task Comment sin soporte para adjuntos, y una herramienta separada Attach File to Task).

Para que una imagen aparezca en línea dentro de un comentario, el truco subyacente es: subir el archivo a la tarea primero, luego hacer referencia a la URL devuelta desde la respuesta del archivo usando la sintaxis de imagen Markdown en el texto del comentario; el renderizador de comentarios de ClickUp lo muestra como una imagen real, no solo un enlace. clickup_create_comment_with_image realiza ambos pasos en una sola llamada:

clickup_create_comment_with_image(task_id, file_content_base64, filename)
# internally:
#   1. POST /task/{task_id}/attachment  -> {"url": "...", ...}
#   2. POST /task/{task_id}/comment     comment_text = "![filename](url)"

Para hacerlo manualmente (por ejemplo, para añadir otro texto alrededor de la imagen), llama tú mismo a las dos herramientas:

1. result = clickup_attach_task_file(task_id, file_content_base64, filename)
   -> result["url"] is the uploaded file's URL

2. clickup_create_task_comment(
     task_id,
     comment_text=f"![{filename}]({result['url']})"
   )

Referencia de la API

A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • ClickUp MCP — wraps the ClickUp REST API v2 (BYO API key)

  • Monday.com MCP — wraps the Monday.com GraphQL API (BYO API key)

  • Manage feature requests, votes, roadmaps, and changelogs from any MCP client.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MSPbotsAI/clickup-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server