clickup mcp server
This server integrates AI assistants with ClickUp workspaces, enabling task, team, list, and board management through a secure OAuth2 authentication process.
This server integrates AI assistants with ClickUp workspaces, enabling task, team, list, and board management through a secure OAuth2 authentication process.
A Model Context Protocol server implementation for ClickUp integration, enabling AI assistants to interact with ClickUp workspaces.
{
"mcpServers": {
"clickup": {
"command": "npx",
"args": ["@mcp/clickup-server"],
"env": {
"CLICKUP_CLIENT_ID": "your_client_id",
"CLICKUP_CLIENT_SECRET": "your_client_secret",
"CLICKUP_REDIRECT_URI": "http://localhost:3000/oauth/callback"
}
}
}
}
That's it! The server will be automatically downloaded and started when needed.
To install ClickUp MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @Nazruden/clickup-mcp-server --client claude
Required environment variables:
CLICKUP_CLIENT_ID
: Your ClickUp OAuth client IDCLICKUP_CLIENT_SECRET
: Your ClickUp OAuth client secretCLICKUP_REDIRECT_URI
: OAuth redirect URI (default: http://localhost:3000/oauth/callback)Optional environment variables:
PORT
: Server port (default: 3000)LOG_LEVEL
: Logging level (default: info)clickup_create_task
: Create a new task in a ClickUp listclickup_update_task
: Update an existing task's propertiesclickup_get_teams
: Retrieve all accessible teamsclickup_get_lists
: Get all lists in a specific folderclickup_create_board
: Create a new board in a ClickUp spacenpm install
npm run dev
npm run build
npm test
Authentication Errors
Verify your OAuth credentials in the environment variables
Ensure proper redirect URI
Rate Limiting
The server implements automatic rate limit handling
Consider implementing request batching
Server Not Starting
Claude for Desktop logs can be found at:
%USERPROFILE%AppDataLocalClaudeLogsmcp*.log
~/Library/Logs/Claude/mcp*.log
MIT License - see LICENSE file for details
[
{
"description": "Create a new task in ClickUp workspace",
"inputSchema": {
"properties": {
"assignees": {
"description": "Array of assignee user IDs",
"items": {
"type": "string"
},
"type": "array"
},
"description": {
"description": "Task description in markdown format",
"type": "string"
},
"due_date": {
"description": "Due date in milliseconds timestamp",
"type": "string"
},
"list_id": {
"description": "The ID of the list to create the task in. The unique identifier for the resource in ClickUp.",
"type": "string"
},
"name": {
"description": "Task name",
"type": "string"
},
"priority": {
"description": "Task priority (1: Urgent, 2: High, 3: Normal, 4: Low)",
"enum": [
1,
2,
3,
4
],
"type": "number"
},
"status": {
"description": "Task status",
"type": "string"
},
"tags": {
"description": "Array of tag names",
"items": {
"type": "string"
},
"type": "array"
},
"time_estimate": {
"description": "Time estimate in milliseconds",
"type": "string"
}
},
"required": [
"list_id",
"name"
],
"type": "object"
},
"name": "clickup_create_task"
},
{
"description": "Update an existing task in ClickUp",
"inputSchema": {
"properties": {
"assignees": {
"description": "Array of assignee user IDs",
"items": {
"type": "string"
},
"type": "array"
},
"description": {
"description": "Task description in markdown format",
"type": "string"
},
"due_date": {
"description": "Due date in milliseconds timestamp",
"type": "string"
},
"name": {
"description": "Task name",
"type": "string"
},
"priority": {
"description": "Task priority (1: Urgent, 2: High, 3: Normal, 4: Low)",
"enum": [
1,
2,
3,
4
],
"type": "number"
},
"status": {
"description": "Task status",
"type": "string"
},
"tags": {
"description": "Array of tag names",
"items": {
"type": "string"
},
"type": "array"
},
"task_id": {
"description": "The ID of the task to update. The unique identifier for the resource in ClickUp.",
"type": "string"
},
"time_estimate": {
"description": "Time estimate in milliseconds",
"type": "string"
}
},
"required": [
"task_id"
],
"type": "object"
},
"name": "clickup_update_task"
},
{
"description": "Get all teams accessible to the authenticated user",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "clickup_get_teams"
},
{
"description": "Get all lists in a specific folder",
"inputSchema": {
"properties": {
"folder_id": {
"description": "The ID of the folder to get lists from. The unique identifier for the resource in ClickUp.",
"type": "string"
}
},
"required": [
"folder_id"
],
"type": "object"
},
"name": "clickup_get_lists"
},
{
"description": "Create a new board in a ClickUp space",
"inputSchema": {
"properties": {
"content": {
"description": "Board description or content",
"type": "string"
},
"name": {
"description": "Board name",
"type": "string"
},
"space_id": {
"description": "The ID of the space to create the board in. The unique identifier for the resource in ClickUp.",
"type": "string"
}
},
"required": [
"space_id",
"name"
],
"type": "object"
},
"name": "clickup_create_board"
}
]