Are you the author? Sign in to claim
A Model Context Protocol (MCP) server that provides tools for interacting with the ClickUp API. This server allows AI as
A Model Context Protocol (MCP) server that provides tools for interacting with the ClickUp API. This server allows AI assistants to manage ClickUp workspaces, teams, spaces, lists, and tasks.
The ClickUp MCP Server has been successfully created and is ready for use!
Key Features Implemented:
Next Steps:
Clone or download this project
Install dependencies:
npm install
Build the TypeScript code:
npm run build
Set up your ClickUp API token as an environment variable:
export CLICKUP_API_TOKEN="your_clickup_api_token_here"
You can get your ClickUp API token from:
The server supports two transport modes:
npm start
# or
node build/index.js
# Default SSE mode (localhost:3000)
npm run start:sse
# Development SSE mode (all interfaces, port 3000)
npm run start:sse:dev
# Custom configuration
node build/index.js --transport sse --port 8080 --host 0.0.0.0
npm run dev
When running in SSE mode, the server provides:
GET /health - Returns server statusGET /metrics - Performance metrics in JSON formatGET /status - Server information and statisticsGET /sse - MCP protocol over Server-Sent EventsGET / - Enhanced web interface with monitoring linksThe server includes comprehensive monitoring and observability features:
Configure logging and monitoring via environment variables:
# Logging Configuration
LOG_LEVEL=INFO # DEBUG, INFO, WARN, ERROR, FATAL
LOG_FORMAT=json # json, text
NO_COLOR=false # Disable colored output
# Required
CLICKUP_API_TOKEN=your_token_here
For detailed information, see Error Handling and Logging Documentation.
node build/index.js [options]
Options:
--transport <type> Transport type: 'stdio' or 'sse' (default: stdio)
--port <number> Port for SSE transport (default: 3000)
--host <string> Host for SSE transport (default: localhost)
--help Show help message
Examples:
node build/index.js # stdio transport
node build/index.js --transport sse # SSE on default port
node build/index.js --transport sse --port 8080 # SSE on port 8080
node build/index.js --transport sse --host 0.0.0.0 # SSE on all interfaces
To use this server with Claude Desktop, add the following configuration to your claude_desktop_config.json file:
{
"mcpServers": {
"clickup": {
"command": "node",
"args": ["/absolute/path/to/clickup-mcp/build/index.js"],
"env": {
"CLICKUP_API_TOKEN": "your_clickup_api_token_here"
}
}
}
}
Important: Replace /absolute/path/to/clickup-mcp/ with the actual absolute path to your project directory.
For remote access via SSE transport, configure Claude Desktop to connect to your running server:
{
"mcpServers": {
"clickup-remote": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/inspector", "http://your-server:3000/sse"],
"env": {}
}
}
}
Or use a direct SSE connection if your MCP client supports it:
http://your-server:3000/ssehttp://your-server:3000/healthOnce connected to an MCP client, you can use commands like:
To verify your ClickUp MCP server is working correctly:
Test API Token:
export CLICKUP_API_TOKEN="your_token_here"
npm run test-token
This should return your ClickUp team information in JSON format.
Test Server Startup (Stdio Mode):
node build/index.js
You should see: "ClickUp MCP Server running on stdio"
Test Server Startup (SSE Mode):
node build/index.js --transport sse
You should see: "ClickUp MCP Server running on http://localhost:3000"
Test Remote Endpoints:
# Health check
curl http://localhost:3000/health
# Server info page
curl http://localhost:3000/
# Test SSE endpoint (should wait for connections)
curl -N -H "Accept: text/event-stream" http://localhost:3000/sse
Test with MCP Inspector (Optional): If you have the MCP Inspector tool, you can test both transports:
# Test stdio transport
npx @modelcontextprotocol/inspector node build/index.js
# Test SSE transport (start server first)
npm run start:sse &
npx @modelcontextprotocol/inspector http://localhost:3000/sse
Verify Claude Desktop Integration:
The project includes a comprehensive testing suite to ensure reliability and maintainability.
# Run all tests
npm test
# Run tests in watch mode (for development)
npm run test:watch
# Run tests with coverage report
npm run test:coverage
# Run specific test types
npm run test:unit # Unit tests only
npm run test:integration # Integration tests only
tests/
├── setup.ts # Global test configuration
├── mocks/ # Mock data and utilities
├── unit/ # Unit tests for individual components
└── integration/ # Integration tests for HTTP/SSE server
# Interactive test runner with colored output
./run-tests.sh # Run all tests
./run-tests.sh unit # Unit tests only
./run-tests.sh coverage # Generate coverage report
./run-tests.sh watch # Watch mode
./run-tests.sh help # Show usage
Access testing tasks via Ctrl+Shift+P → "Tasks: Run Task":
For detailed testing information, see TESTING.md.
clickup-mcp/
├── src/
│ └── index.ts # Main server implementation
├── build/ # Compiled JavaScript (generated)
├── .github/
│ └── copilot-instructions.md
├── .vscode/ # VS Code configuration
│ ├── tasks.json # Build and run tasks
│ └── mcp.json # MCP testing configuration
├── Dockerfile # Container configuration
├── docker-compose.yml # Docker Compose setup
├── config.env.example # Environment configuration template
├── package.json
├── tsconfig.json
└── README.md
npm run build
npm run dev
This will start TypeScript in watch mode, automatically recompiling when you make changes.
npm run clean
npm run build
This project includes VS Code configuration for easy development:
.vscode/mcp.json file allows testing the server directly in VS CodeThis server integrates with the ClickUp API v2. Key endpoints used:
/team - Get teams/team/{team_id}/space - Get spaces/space/{space_id}/list - Get lists/list/{list_id}/task - Get/create tasks/task/{task_id} - Get/update specific tasksThe server requires a ClickUp API token set as the CLICKUP_API_TOKEN environment variable. The token is used for Bearer authentication with the ClickUp API.
The server includes comprehensive error handling for:
Errors are logged to stderr and returned as appropriate MCP responses.
The server respects ClickUp's API rate limits. If you encounter rate limiting issues, consider adding delays between requests or reducing the frequency of API calls.
The simplest way to deploy is using the built-in npm scripts:
# Build the project
npm run build
# Run in production mode (stdio)
npm start
# Run in remote mode (SSE)
npm run start:sse
For containerized deployment:
Build and run with Docker:
# Build the Docker image
docker build -t clickup-mcp .
# Run the container
docker run -d \
--name clickup-mcp \
-p 3000:3000 \
-e CLICKUP_API_TOKEN=your_token_here \
clickup-mcp
Using Docker Compose:
# Create .env file with your token
echo "CLICKUP_API_TOKEN=your_token_here" > .env
# Start the service
docker-compose up -d
# Check status
docker-compose logs -f clickup-mcp
Health Checks:
# Check if the service is healthy
curl http://localhost:3000/health
# View Docker health status
docker ps
The SSE transport makes the server suitable for cloud deployment platforms:
Environment Variables for Cloud:
CLICKUP_API_TOKEN (required)PORT (optional, defaults to 3000)/health endpoint for health checks"CLICKUP_API_TOKEN environment variable is required"
CLICKUP_API_TOKEN environment variable"Failed to retrieve teams from ClickUp API"
"Claude Desktop not showing ClickUp tools"
claude_desktop_config.json is absolutenpm run buildTypeScript compilation errors
npm run clean && npm run buildnpm installSSE Transport Issues
lsof -i :3000curl http://localhost:3000/health--host 0.0.0.0Remote Connection Issues
For verbose logging, you can modify the server code to add more console.error statements (they won't interfere with the MCP protocol since they go to stderr).
npm run buildISC License
Run analytics queries on ClickHouse — explore schemas, execute SQL, fetch results
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
Google's universal MCP server supporting PostgreSQL, MySQL, MongoDB, Redis, and 10+ databases