Skip to main content
Glama

clickup-mcp

Сервер ClickUp MCP для Claude — предоставляет задачи, пространства, папки, списки и комментарии ClickUp как инструменты MCP.

Технологический стек: Python 3.12 + uv + FastMCP (Starlette/FastAPI)

Быстрый старт

# 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

Конфигурация

Скопируйте .env.example в .env и заполните свои значения:

Переменная

По умолчанию

Описание

CLICKUP_API_TOKEN

Личный API токен ClickUp (pk_xxxxx)

AUTH_MODE

env

env = токен из переменной окружения; gateway = токен на каждый запрос из заголовка X-Clickup-Token

MCP_TRANSPORT

stdio

stdio (Claude Desktop) или http (gateway)

MCP_HTTP_PORT

8080

Порт HTTP-сервера

CLICKUP_BASE_URL

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

Базовый URL API

Получите ваш API токен: ClickUp → Settings → Apps → API Token

Настройка Claude Desktop

Добавьте в 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"
      }
    }
  }
}

Режимы транспорта

stdio (Claude Desktop / CLI)

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

HTTP — однотенантный

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

HTTP — шлюз / мультитенантный

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

Доступные инструменты (28)

Инструмент

Описание

clickup_get_workspaces

Список всех рабочих пространств/команд

clickup_list_members

Список участников рабочего пространства, сведённый к id/username/email/team_id/role — позволяет преобразовать email пользователя в user_id, который ожидают фильтры assignees

clickup_list_spaces

Список пространств в рабочем пространстве

clickup_get_space

Получить детали пространства

clickup_get_space_folders

Список папок в пространстве

clickup_get_space_lists

Список списков без папок в пространстве

clickup_get_folder

Получить детали папки

clickup_get_folder_lists

Список списков в папке

clickup_create_folder

Создать папку

clickup_update_folder

Обновить папку

clickup_delete_folder

Удалить папку

clickup_get_list

Получить детали списка

clickup_create_list_in_folder

Создать список в папке

clickup_create_folderless_list

Создать список в пространстве

clickup_update_list

Обновить список

clickup_get_task

Получить задачу по ID

clickup_search_tasks

Поиск задач с фильтрами (одно рабочее пространство, обязателен team_id)

clickup_list_tasks_for_person

Список задач пользователя во ВСЕХ видимых рабочих пространствах одним запросом, по email или user_id — не требуется team_id, ручная пагинация или дедупликация

clickup_create_task

Создать задачу

clickup_update_task

Обновить задачу

clickup_delete_task

Удалить задачу

clickup_move_task

Переместить задачу в другой список

clickup_get_task_comments

Получить комментарии задачи

clickup_create_task_comment

Добавить комментарий к задаче

clickup_get_doc_page

Получить одну страницу из Документа (v3)

clickup_attach_task_file

Загрузить файл (например, изображение) как вложение к задаче

clickup_create_comment_with_image

Загрузить файл и разместить его встроенным в новый комментарий задачи одним вызовом

clickup_list_rocks_for_org

Список всех EOS Rocks (квартальные цели) по всей организации одним запросом, нормализованных до фиксированного перечисления статусов

Поиск ClickUp user ID пользователя

Используйте clickup_list_members. В родном ответе ClickUp GET /team содержится полный список участников по каждой команде (teams[].members[].user.{id,username,email}), но clickup_get_workspaces удаляет эту информацию, чтобы ответ оставался компактным, поэтому это не то место, где следует искать людей. clickup_list_members читает тот же базовый эндпоинт и проецирует список участников в плоскую, специально созданную структуру (id/username/email/team_id/role), чтобы вызывающим не приходилось извлекать её из полного объекта рабочего пространства/команды самостоятельно. clickup_list_tasks_for_person использует внутри тот же базовый поиск для преобразования email -> user_id.

Известное ограничение: объект участника команды ClickUp не имеет надёжного поля «деактивирован ли этот участник» — clickup_list_members не возвращает поле active, поскольку за ним нет реальных данных (единственное поле status, присутствующее в исходном объекте, invited_by.status, описывает пригласившего, а не участника).

clickup_search_tasks уже возвращает status.type

Как и все остальные инструменты чтения здесь, clickup_search_tasks и clickup_get_task передают исходный объект задачи ClickUp без изменений — включая поле type объекта status (open / custom / closed / done), которое является единственным надёжным способом определить, считается ли статус с пользовательским названием завершённым. Для этого не потребовалось изменений кода; это уже было там. clickup_list_tasks_for_person явно выводит его как status_type для каждой возвращаемой задачи для удобства.

Как EOS Rocks представлены в этом рабочем пространстве ClickUp

Подтверждено 18.08.2026 при непосредственном просмотре полей реальной задачи Rock (не догадки): Rocks — это обычные задачи ClickUp, находящиеся в списке, буквально названном "Rocks" (обнаружено в пространстве "Company" > папка "EOS Traction"), каждая из которых имеет специальные пользовательские поля: Quarter (выпадающий список, "Q1 2024".."Q4 2026"), Rocks Status (On Hold / Off Track / On Track / Completed / Blocked / At Risk), Rock Type (Company / Individual / Departmental / Team Rock), Department и прогресс через Progress (вручную) или Progress % (автоматически, свёртка чеклистов). Это не ClickUp Goals API и не простой список задач без метаданных — это задачи плюс пользовательские поля.

clickup_list_rocks_for_org находит каждый список с именем "Rocks" (по имени, а не жёстко заданному ID, на случай если пространства/папки будут реорганизованы) во всех рабочих пространствах, видимых токену, читает эти поля и нормализует их:

  • quarter: метка ClickUp "Q3 2026" преобразуется в 2026-Q3 (и обратно, для входного фильтра quarter).

  • status: 6 исходных опций ClickUp отображаются в 5-значный контракт (on_track/off_track/done/missed/open) — см. комментарий _STATUS_MAP в rocks.py для точного отображения и объяснения, почему missed никогда не генерируется (в данных ClickUp нет ничего, что отличало бы «истекло время» от общего «отклонение»; выводить это из просроченной due_date было бы неподтверждённым бизнес-логическим предположением, поэтому здесь это не делается).

  • measurable: для этого списка нет выделенного поля. Используется описание задачи; null, если и оно пустое (никогда не выдумывается).

  • weekly_status: нигде не найден структурированный источник (ни пользовательское поле, ни что-то из комментариев) — всегда возвращается как []. Если организация начнёт отслеживать это в ClickUp каким-то другим способом, пересмотреть.

Вложения и изображения

REST API ClickUp не позволяет прикрепить файл напрямую к комментарию — только к задаче (POST /task/{task_id}/attachment, что оборачивает clickup_attach_task_file). Также нет эндпоинта для удаления/обновления вложения; повторная загрузка добавляет новое вложение, а не заменяет старое, а удаление требует использования веб- или десктопного приложения ClickUp. Подтверждено проверкой описаний инструментов официального MCP-сервера ClickUp — то же разделение (инструмент Create Task Comment без поддержки вложений и отдельный инструмент Attach File to Task).

Чтобы изображение отображалось встроенным внутри комментария, хитрость в следующем: сначала загрузите файл в задачу, затем укажите возвращённый URL из ответа файла, используя синтаксис Markdown для изображения в тексте комментария — средство рендеринга комментариев ClickUp встраивает его как настоящее изображение, а не просто ссылку. clickup_create_comment_with_image выполняет оба шага одним вызовом:

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)"

Чтобы сделать это вручную (например, добавить другой текст вокруг изображения), вызовите два инструмента самостоятельно:

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']})"
   )

Справочник по API

Available Tools

1 tool
clickup_test_connectionA

Test ClickUp connection. Shows configuration requirements when credentials are missing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses it is a test operation and shows config requirements on failure. No annotations, so description carries full burden. Does not clarify if it is read-only, has side effects, or what output format looks like (though output schema exists). Minimal disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with purpose. No extraneous words. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Simple tool with no parameters and low complexity. Description covers purpose and a key failure behavior. Output schema exists to document return values, so completeness is high. Minor gap: could mention safe/read-only nature explicitly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, so input schema is empty. Description adds meaning by explaining tool purpose and special behavior. Baseline for 0 params is 4; description fulfills this adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb ('Test') and resource ('ClickUp connection'), with specific additional behavior: shows configuration requirements when credentials missing. No sibling tools to differentiate, but purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage: use to verify connection and get config hints if incomplete. No explicit when-to-use, when-not-to-use, or alternatives provided. Lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool updatev0.1.0
    • First observedclickup_test_connection

TDQS

A3.7/5.0
Disambiguation5/5

Only one tool exists, so there is no possibility of confusion between tools.

Naming Consistency5/5

With a single tool, naming consistency is not applicable, but the tool name follows a clear verb_noun pattern.

Tool Count1/5

A single 'test connection' tool is severely insufficient for a platform like ClickUp, which typically requires many tools for tasks, issues, lists, etc.

Completeness1/5

The tool only tests the connection, lacking any actual CRUD operations or meaningful interactions with ClickUp resources.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

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