ClickUp

by nazruden

Not rated
GitHub

About

An MCP server for ClickUp, allowing AI assistants to interact with and manage tasks within your ClickUp workspaces.

Details

Author
nazruden
Categories
Productivity, Project Management, Other

Setup

Install ClickUp in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/nazruden/clickup-mcp-server

Follow the installation instructions in the repository README, then restart your MCP client.

A Model Context Protocol server implementation for ClickUp integration, enabling AI assistants to interact with ClickUp workspaces.

This server runs viaStdioas per the MCP specification when invoked by an MCP client.

This server uses yourClickUp Personal API Tokenfor authentication.
- Generate a Personal API Token:In your ClickUp settings, navigate to "My Settings" > "Apps" and generate a token.
- Configure your MCP Client (e.g., Claude for Desktop):Set the required environment variable when configuring the server for your client.

Example configuration snippet for an MCP client:

{ "mcpServers": { "clickup": { "command": "npx", "args": ["@nazruden/clickup-server"], "env": { "CLICKUP_PERSONAL_TOKEN": "your_personal_api_token_here" } } } }

The server will be automatically downloaded and started by the MCP client when needed.

To install ClickUp MCP Server for Claude Desktop automatically viaSmithery:

npx -y @smithery/cli install @Nazruden/clickup-mcp-server --client claude

- CLICKUP_PERSONAL_TOKEN: Your ClickUp Personal API Token. This is essential for the server to authenticate with the ClickUp API.

- LOG_LEVEL: Logging level for the server. Supportserror,warn,info,debug. Defaults toinfo.
- ENCRYPTION_KEY: A persistent 32-byte hex-encoded key. The configuration system (src/config/app.config.ts) loads or generates this key, andsrc/security.tscontains encryption/decryption functions. However, this mechanism iscurrently not usedfor encrypting theCLICKUP_PERSONAL_TOKENwithin theClickUpService's Personal API Token authentication flow.
- PORT: Server port. This isnot usedby the default Stdio MCP server mode but might be relevant if an HTTP transport or additional HTTP features (like a separate health check endpoint) were explicitly added. Defaults to3000in the config if read.

The following MCP tools are currently implemented:

- clickup_create_task: Create a new task in a ClickUp list.

- Requires:list_id,name.
- Optional:description,status,priority,assignees,due_date,time_estimate,tags.

- Requires:task_id.
- Optional: Any writableClickUpTaskproperties.

- clickup_get_teams: Retrieve all accessible teams (Workspaces in ClickUp API v2).
- clickup_get_lists: Get all lists in a specific folder.

- Requires:folder_id.

- clickup_create_board: Create a new board in a ClickUp space.

- Requires:space_id,name.

- clickup_get_spaces: Retrieves all Spaces for a given Workspace (Team).

- Requires:team_id(Workspace ID).
- Optional:archived(boolean, defaults tofalse).

- Requires:team_id(Workspace ID),name.
- Optional:multiple_assignees(boolean),features(object with feature flags likedue_dates,time_tracking, etc.).

- Requires:space_id.
- Optional:name,color,private,admin_can_manage,archived,features.

- clickup_get_folders: Retrieves all Folders within a given Space.

- Requires:space_id.
- Optional:archived(boolean, defaults tofalse).

- clickup_get_custom_fields: Retrieves all accessible Custom Fields for a given List.

- Requires:list_id.

- Requires:task_id,field_id,value.
- Optional:value_options(object, e.g.,{ "time": true }for date fields).

Note:ClickUp's API for Docs (especially v2, with some operations now using v3) has limitations. Content is primarily handled as Markdown. Advanced formatting or complex embeds might not be fully supported. Direct document deletion via API is not currently supported by ClickUp's V3 /docs endpoint; manage Doc lifecycle through archiving or page manipulation.

- clickup_search_docs: Searches for Docs within a Workspace (Team).

- Requires:workspace_id.
- Optional:query(string),include_archived(boolean).

- Requires:workspace_id,name.
- Optional:parent(object withidandtype),visibility(string: "private", "workspace", "public"),create_page(boolean).

- Requires:workspace_id,doc_id,name(page title).
- Optional:content(Markdown),orderindex(number, though v3 API may not use it),parent_page_id(string),sub_title(string),content_format(string).

- Requires:workspace_id,doc_id,page_id.
- Optional:content_format(string).

- Requires:workspace_id,doc_id,page_id,content(Markdown).
- Optional:title(string, maps to API 'name'),sub_title(string),content_edit_mode(string: "replace", "append", "prepend"),content_format(string).

- clickup_get_views: Retrieves all Views for a given parent resource (Team, Space, Folder, or List).

- Requires:parent_id(ID of the parent resource),parent_type(string: "team", "space", "folder", or "list").

- Requires:parent_id,parent_type,name(string: name of the new View),type(string: type of the View, e.g., "list", "board", "calendar", "gantt").
- Optional:grouping,divide,sorting,filters,columns,team_sidebar,settings(objects defining view configurations).

- Requires:view_id.
- Optional:name(string),grouping,divide,sorting,filters,columns,team_sidebar,settings.

- Requires:view_id.
- Optional:page(number: 0-indexed page number for pagination).

git clone <repository_url> cd clickup-mcp-server

Create a.envfile in the root directory and add yourCLICKUP_PERSONAL_TOKEN:

CLICKUP_PERSONAL_TOKEN=your_actual_personal_api_token_here LOG_LEVEL=debug

Start in development mode (Stdio): The server will listen for MCP messages on stdin/stdout.

This usests-node-devto runsrc/index.ts.

This runs Jest unit tests located insrc/__tests__. Ensure you have a.env.testfile (seesrc/__tests__/setup.ts).

You can test the server locally using the MCP Inspector:
- Ensure yourCLICKUP_PERSONAL_TOKENis available. You can either:

- Set it in your shell environment before running the inspector.
- Set it within the MCP Inspector UI if it provides an option for server environment variables.
- Have it in your local.envfile (assrc/index.tsloadsdotenv).

npx @modelcontextprotocol/inspector node --loader ts-node/esm src/index.ts

- Authenticates using your ClickUp Personal API Token.Keep this token secure and confidential.Treat it like a password.
- The server expects theCLICKUP_PERSONAL_TOKENto be provided via an environment variable by the consuming MCP client or development environment.
- The configuration system includes logic for anENCRYPTION_KEYandsrc/security.tshas encryption functions, but this isnot currently appliedto the Personal API Token by theClickUpService.
- No sensitive data (like the token itself) is logged by default withLOG_LEVEL=info. Debug level might log more details.
- Rate limiting for ClickUp API calls is handled by logging remaining requests (seeClickUpService).
-

Authentication Errors (401 from ClickUp API)

- Verify yourCLICKUP_PERSONAL_TOKENenvironment variable is correctly set and accessible by the server process.
- Ensure the token is valid and not revoked in your ClickUp settings.
- Check server logs for messages fromClickUpServiceregarding authentication.

- The server logs rate limit information from ClickUp API responses.
- If rate limits are hit frequently, this indicates high usage. The server itself does not implement queuing or complex backoff beyond whataxiosmight do by default.

Server Not Starting / MCP Inspector Connection Issues

- EnsureCLICKUP_PERSONAL_TOKENis set.
- If usingnpm run dev, check for TypeScript orts-node-deverrors in the console.
- If using MCP Inspector withnode --loader ts-node/esm src/index.ts, ensurets-nodeand project dependencies are correctly installed.
- Check for console errors fromsrc/index.tsorClickUpService.

- When run vianpm run devornpm start, logs go to the console.
- If run by an MCP client (like Claude for Desktop), logs are typically managed by that client. For Claude for Desktop, logs can often be found at:

- Windows:%USERPROFILE%\AppData\Local\Claude\Logs\mcp\<server_name_and_id>\<process_id>.log(path may vary slightly)
- macOS:~/Library/Logs/Claude/mcp/<server_name_and_id>\<process_id>.log(path may vary slightly)

If you find this project helpful, consider buying me a coffee to support ongoing development and maintenance.

MIT License - see LICENSE file for details

Interact with task, doc, and project data in Dart, an AI-native project management tool

Remote MCP server for MeisterTask. Create and manage projects, tasks, and notes from your AI assistant. Hosted (streamable-HTTP) — connect at https://mcp.meistertask.com/mcp

The official Plane MCP server provides integration with Plane APIs, enabling full AI automation of Plane projects, work items, cycles and more.

Keep teams & agents coordinated automatically

From the creators of Wunderlist — the all-in-one task management app for to-do lists, notes, and projects. AI-powered productivity that replaces 5 apps.

Connect to the Taskade platform via MCP. Access tasks, projects, workflows, and AI agents in real-time through a unified workspace and API.

Official Taskeract MCP Server for integrating your Taskeract project tasks and load the context of your tasks into your MCP enabled app.

Manage your Todoist tasks and projects directly from your LLM.

Interact with Asana tasks, projects, workspaces, and comments using the Asana API.

Comprehensive Trello integration: 46 tools covering boards, cards, lists, labels, checklists, attachments, members, custom fields, and search. Read-only mode, image attachment auto-download. Active fork of kocakli/Trello-Desktop-MCP integrating contributions from across the Trello MCP fork ecosystem

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.