Clickup
Official ClickUp MCP server integration with OAuth authentication. Provides task management, workspace access, and ensures work completeness. Zero configuration - OAuth handles authentication automatically.
Installation
First, install the Han CLI tool:
npm install -g @thebushidocollective/hanThen install the plugin:
han plugin install sensei-clickupOverview
MCP server for ClickUp integration with automatic acceptance criteria validation. Connects Claude Code directly to your ClickUp workspace for seamless task management and quality enforcement.
What This Sensei Provides
MCP Server: ClickUp
This sensei connects Claude Code to ClickUp and provides complete task lifecycle management with built-in validation to ensure work meets acceptance criteria before marking tasks complete.
Key Capabilities:
- Task Management: Create, read, update, and manage ClickUp tasks
- Workspace & Space Access: Work across workspaces, spaces, folders, and lists
- Acceptance Criteria Validation: Automatic validation on Stop hook
- Status Updates: Update task statuses and track progress
- Custom Fields: Access and update custom fields
- Comments & Updates: Add comments and update task details
- Checklist Management: Create and manage task checklists
- Time Tracking: Track time spent on tasks
- Assignees & Watchers: Manage task assignments and watchers
Automatic Validation
When you stop a Claude Code session, this sensei automatically:
- Scans the conversation for any ClickUp task references (e.g., #ABC123, task-id: xyz)
- Reminds you to validate that work meets acceptance criteria
- Prompts Claude to fetch task details and verify completeness
- Prevents incomplete work from being marked as done
This ensures you never forget to validate your work against task requirements.
Available MCP Tools
Once installed, Claude Code gains access to these ClickUp MCP tools:
clickup_get_task: Get full details of a specific taskclickup_search_tasks: Search for tasks with filtersclickup_create_task: Create new ClickUp tasksclickup_update_task: Update task fieldsclickup_update_task_status: Change task statusclickup_add_comment: Add comments to tasksclickup_get_list: Get list detailsclickup_get_folder: Get folder informationclickup_get_space: Get space detailsclickup_get_workspace: Get workspace informationclickup_create_checklist: Create task checklistsclickup_track_time: Track time on tasksclickup_assign_task: Assign tasks to users
Installation
Prerequisites
- ClickUp Workspace: You need access to a ClickUp workspace
- API Token: Generate a ClickUp API token
- Node.js: For running the MCP server (comes with Claude Code)
Getting an API Token
- Go to https://app.clickup.com/settings/apps
- Click "Apps" in the left sidebar
- Click "API Token"
- Click "Generate" or use existing token
- Copy the API token
- Save it securely
Via Han Marketplace
npx @thebushidocollective/han install
Or install manually:
claude plugin marketplace add thebushidocollective/han
claude plugin install sensei-clickup@han
Configuration
Set required environment variable:
export CLICKUP_API_TOKEN="pk_xxxxxxxxxxxxxxxxxxxxxxxx"
Add to your shell profile (~/.zshrc or ~/.bashrc) for persistence:
echo 'export CLICKUP_API_TOKEN="pk_xxxxxxxxxxxxxxxxxxxxxxxx"' >> ~/.zshrc
source ~/.zshrc
Verify Installation
Test the MCP server connection:
# Should connect without errors
CLICKUP_API_TOKEN="your-token" npx -y @modelcontextprotocol/server-clickup
Manual Installation
If not using Han, add to your Claude Code settings (~/.claude/settings.json):
{
"mcpServers": {
"clickup": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-clickup"],
"env": {
"CLICKUP_API_TOKEN": "pk_xxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}
Usage
Example 1: Start Working on a Task
User: I need to work on task #ABC123
Claude: Let me get the details of that task.
[Uses clickup_get_task to fetch task]
Here's task #ABC123:
Name: Add user authentication
Status: To Do
Assignee: Unassigned
Priority: High
Due Date: 2025-02-01
Description:
Implement JWT-based authentication for the API.
Checklist:
- [ ] User can log in with email/password
- [ ] Invalid credentials return proper error
- [ ] JWT token expires after 7 days
- [ ] Refresh token mechanism implemented
Would you like me to update this to "In Progress" and assign it to you?
Example 2: Search for Your Tasks
User: Show me all my assigned tasks
Claude: [Uses clickup_search_tasks with assignee filter]
You have 5 assigned tasks:
| ID | Name | Status | Priority | Due Date |
|---------|-------------------------|-------------|----------|------------|
| ABC123 | Add authentication | In Progress | High | Feb 1 |
| ABC124 | Fix login redirect | To Do | Medium | Feb 3 |
| ABC125 | Update user profile | In Progress | Low | Feb 5 |
| ABC126 | Add password reset | To Do | High | Feb 2 |
| ABC127 | Implement 2FA | Backlog | Medium | Feb 10 |
Which one would you like to work on?
Example 3: Validate Acceptance Criteria
User: I've finished the authentication work for #ABC123
Claude: Let me validate the acceptance criteria.
[Uses clickup_get_task to fetch current state]
Checking task #ABC123 checklist:
â
User can log in with email/password - COMPLETED
â
Invalid credentials return proper error - COMPLETED
â
JWT token expires after 7 days - COMPLETED
â
Refresh token mechanism implemented - COMPLETED
All checklist items are complete! Would you like me to:
1. Add a completion comment
2. Update status to "Done"
3. Close the task
Example 4: Create a New Task
User: Create a bug task for the login page not redirecting properly
Claude: I'll create a bug task for you.
[Uses clickup_create_task]
Created task #ABC128: Login page not redirecting properly
List: Bug Fixes
Priority: High
Assignee: You
Status: To Do
View: https://app.clickup.com/t/ABC128
Would you like to start working on this now?
Example 5: Stop Hook Validation
When you stop Claude Code after working on tasks:
[Stop Hook Executes]
Found ClickUp tasks: ABC123, ABC124
â ïž VALIDATION REQUIRED
Before stopping, please validate:
- Fetch task ABC123 details and review checklist
- Confirm all criteria are met
- Fetch task ABC124 details and review checklist
- Confirm all criteria are met
[Claude automatically asks:]
Let me validate these tasks before we stop...
[Uses MCP tools to verify completion]
Tool Reference
clickup_get_task
Purpose: Get comprehensive details of a specific ClickUp task
Parameters:
taskId(required): The task ID (e.g., "ABC123" or full ID)
Returns: Full task object including name, description, status, assignees, checklist, custom fields, etc.
Example:
{
"taskId": "ABC123"
}
clickup_search_tasks
Purpose: Search for tasks with various filters
Parameters:
listId(optional): Filter by list IDfolderId(optional): Filter by folder IDspaceId(optional): Filter by space IDassignees(optional): Filter by assignee IDsstatuses(optional): Filter by status namestags(optional): Filter by tag namesdueDateGt(optional): Due date greater than (timestamp)dueDateLt(optional): Due date less than (timestamp)
Returns: Array of matching tasks
Example:
{
"listId": "123456789",
"assignees": ["user-id"],
"statuses": ["in progress"]
}
clickup_create_task
Purpose: Create a new ClickUp task
Parameters:
listId(required): List ID where task will be createdname(required): Task namedescription(optional): Task description (supports markdown)assignees(optional): Array of user IDs to assignpriority(optional): Priority (1=Urgent, 2=High, 3=Normal, 4=Low)status(optional): Initial status namedueDate(optional): Due date timestamptags(optional): Array of tag names
Returns: Created task details
Example:
{
"listId": "123456789",
"name": "Add user authentication",
"description": "Implement JWT-based authentication",
"priority": 2,
"assignees": ["user-id"]
}
clickup_update_task
Purpose: Update task fields
Parameters:
taskId(required): The task IDname(optional): New task namedescription(optional): New descriptionpriority(optional): New prioritydueDate(optional): New due dateassignees(optional): New assignee list
Returns: Update confirmation
Example:
{
"taskId": "ABC123",
"priority": 1,
"dueDate": 1738368000000
}
clickup_update_task_status
Purpose: Change task status
Parameters:
taskId(required): The task IDstatus(required): Target status name (e.g., "in progress", "done")
Returns: Status change confirmation
Example:
{
"taskId": "ABC123",
"status": "in progress"
}
clickup_add_comment
Purpose: Add a comment to a task
Parameters:
taskId(required): The task IDcomment(required): Comment text (supports markdown)notify_all(optional): Notify all task followers (boolean)
Returns: Comment confirmation
Example:
{
"taskId": "ABC123",
"comment": "Completed implementation. Ready for review.",
"notify_all": true
}
clickup_create_checklist
Purpose: Create a checklist on a task
Parameters:
taskId(required): The task IDname(required): Checklist nameitems(optional): Array of checklist item names
Returns: Checklist creation confirmation
Example:
{
"taskId": "ABC123",
"name": "Acceptance Criteria",
"items": [
"User can log in",
"Error handling works",
"Tests pass"
]
}
clickup_track_time
Purpose: Track time on a task
Parameters:
taskId(required): The task IDduration(required): Duration in millisecondsdescription(optional): Time entry description
Returns: Time tracking confirmation
Example:
{
"taskId": "ABC123",
"duration": 7200000,
"description": "Implemented authentication logic"
}
clickup_assign_task
Purpose: Assign or unassign users to a task
Parameters:
taskId(required): The task IDassignees(required): Array of user IDs to assignadd(optional): If true, adds to existing assignees; if false, replaces
Returns: Assignment confirmation
Example:
{
"taskId": "ABC123",
"assignees": ["user-id-1", "user-id-2"],
"add": true
}
clickup_get_list
Purpose: Get list information
Parameters:
listId(required): The list ID
Returns: List details including tasks, statuses, fields
Example:
{
"listId": "123456789"
}
clickup_get_workspace
Purpose: Get workspace information and teams
Parameters:
workspaceId(optional): Specific workspace ID, or omit for all accessible workspaces
Returns: Workspace details
Example:
{
"workspaceId": "workspace-id"
}
Common Workflows
Starting Work
- Search for tasks assigned to you or in specific list
- Get task details with checklist and acceptance criteria
- Update status to "In Progress"
- Assign to yourself if not already assigned
- Start implementation
Completing Work
- Review task checklist items
- Validate all items are complete
- Add completion comment with summary
- Update status to "Done" or "Complete"
- Track time spent (optional)
Daily Standup
- List tasks updated in last 24 hours (your tasks)
- List tasks currently in progress
- Check for any blocked tasks
- Review upcoming due dates
Security Considerations
API Token Security:
- Never commit API tokens to version control
- Store tokens in environment variables only
- Use separate tokens for different environments
- Rotate tokens regularly
- Revoke unused tokens immediately
Permissions:
- MCP server inherits your ClickUp permissions
- Claude can only perform actions you're authorized to do
- Review actions before Claude executes them
- Be cautious with bulk operations
Data Privacy:
- Task data is transmitted to Claude for processing
- Sensitive information in tasks will be visible to Claude
- Consider using separate workspaces for sensitive projects
Limitations
- Rate Limits: ClickUp has API rate limits (typically 100 requests/minute per token)
- Bulk Operations: Large bulk operations may timeout
- Custom Fields: Support depends on MCP server implementation
- Attachments: File upload/download may have size limits
- Permissions: You can only access tasks your ClickUp account has permission to view
- Webhooks: Real-time updates not supported (must poll for changes)
Troubleshooting
Issue: Connection Errors
Solution:
-
Verify environment variable is set:
echo $CLICKUP_API_TOKEN -
Test API access directly:
curl -H "Authorization: $CLICKUP_API_TOKEN" \ https://api.clickup.com/api/v2/user -
Ensure token starts with
pk_
Issue: Authentication Failed
Solution:
- Regenerate API token at https://app.clickup.com/settings/apps
- Ensure no extra spaces or quotes around the token
- Try wrapping token in single quotes in shell config
- Verify token hasn't expired
Issue: No Tasks Found
Solution:
- Verify list/space/folder ID is correct
- Check your ClickUp permissions for the workspace
- Simplify search filters to test
- Use ClickUp's web UI to verify task exists
Issue: Status Update Failed
Solution:
- Get available statuses from list using
clickup_get_list - Check exact status name (case-sensitive)
- Verify task is in correct status for transition
- Check if status requires specific custom fields
Issue: Stop Hook Not Working
Solution:
- Ensure hooks are enabled in plugin settings
- Check that task IDs are in conversation (format: #ABC123 or task-id: xyz)
- Verify Node.js is available in PATH
- Check Claude Code logs for hook execution errors
Related Plugins
- sensei-jira: For teams using Jira instead of ClickUp
- sensei-linear: For teams using Linear instead of ClickUp
- bushido:proof-of-work: Requires concrete evidence of task completion
- bushido:test-driven-development: Ensures tests exist for acceptance criteria
Best Practices
DO
â Always read task checklist before starting work â Update task status as you progress â Add meaningful comments at key milestones â Validate all checklist items before marking Done â Use clear, descriptive task names â Track time spent on tasks â Keep task descriptions clear and updated â Set appropriate priorities and due dates
DON'T
â Skip reading task checklist/acceptance criteria â Mark tasks Done without validation â Leave tasks in wrong status â Create duplicate tasks without searching first â Update tasks without adding context in comments â Use vague or unclear task names â Ignore the Stop hook validation reminders â Forget to assign tasks when starting work
Contributing
See CONTRIBUTING.md for guidelines.
License
MIT License - See LICENSE for details.
Links
Built with â€ïž by The Bushido Collective
MCP Servers
clickup
Commands
/comment
Add a comment to a ClickUp task
/complete
Mark a ClickUp task as complete after validating checklist
/create
Create a new ClickUp task interactively
/my-tasks
Show all ClickUp tasks assigned to you
/search
Search for ClickUp tasks
/start
Start work on a ClickUp task (transition to In Progress)
/task
Get detailed information about a specific ClickUp task
/validate
Validate checklist items for a ClickUp task without changing status
Hooks
Stop
Runs when the main Claude Code agent has finished responding.
node