🦾 A strong MCP server for ClickUp.
Project description
ClickUp MCP Server
clickup-mcp-server is a Python tool to set up MCP server easily and humanly.
Overview
🦾 A strong Model, Capability, Protocol (MCP) server for ClickUp API integration. This server provides a standardized interface for interacting with ClickUp's API through the MCP protocol, making it easier to build AI-enabled applications that leverage ClickUp's project management capabilities.
Features
- Multiple transport protocols (HTTP streaming and SSE)
- Environment variable configuration via
.envfiles - Consolidated data models for seamless API interaction
Python versions support
Requires Python 3.13 or higher.
Quick Start
Installation
pip install clickup-mcp-server
Running the server
The simplest way to start the server:
clickup-mcp-server --token YOUR_CLICKUP_API_TOKEN
Using environment files
You can store your API token in a .env file:
# .env file
CLICKUP_API_TOKEN=your_api_token_here
And start the server with:
clickup-mcp-server --env /path/to/.env
Client connection
Connect to the server using any MCP client implementation. Example:
- Using SSE transport
import asyncio
from mcp import ClientSession
from mcp.client.sse import sse_client
async def get_authorized_teams():
url = "http://localhost:3005/sse"
async with sse_client(url) as (read_stream, write_stream):
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
tools = await session.list_tools()
print("Available tools:", [tools])
res = await session.call_tool(
name="get_authorized_teams",
)
print("get_authorized_teams →", res.model_dump())
if __name__ == "__main__":
asyncio.run(get_authorized_teams())
- Using streaming HTTP transport
import asyncio
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async def get_authorized_teams():
url = "http://localhost:3005/mcp/mcp"
async with streamablehttp_client(url) as (
read_stream,
write_stream,
_close_fn,
):
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
tools_resp = await session.list_tools()
print("Available tools:", [t.name for t in tools_resp.tools])
res = await session.call_tool(
name="get_authorized_teams",
)
print("get_authorized_teams →", res.model_dump())
if __name__ == "__main__":
asyncio.run(get_authorized_teams())
API Resources
The server provides access to the following ClickUp resources:
- Teams
- Spaces
Configuration Options
The server supports various configuration options:
| Option | Environment Variable | Description |
|---|---|---|
--token |
CLICKUP_API_TOKEN |
Your ClickUp API token |
--env |
- | Path to .env file containing configuration |
--port |
- | Port to run the server on (default: 8000) |
--host |
- | Host to bind the server to (default: 127.0.0.1) |
Documentation
The documentation contains more details, demonstrations and anything you need about clickup-mcp-server.
- Getting start helps you start to prepare the
environment, install dependencies and configure the detail settings with explanation in detail.
- What requirement I need to prepare?
- How can I install it?
- How to configure the details for this MCP server?
- I have a configuration right now. How can I run this MCP server?
- Want to learn more how to use it?
- What exact features or APIs it has?
- Want to contribute to this project?
- I face something issue it cannot work finely!
- I want to wish a feature or something change.
- If you're interested in clickup-mcp-server and have any ideas want to design it, even implement it, it's very welcome to contribute clickup-mcp-server!
- About the release notes.
Coding style and following rules
follows coding styles black and PyLint to control code quality.
Downloading state
clickup-mcp-server still a young open source which keeps growing. Here's its download state:
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clickup_mcp_server-0.2.0.tar.gz.
File metadata
- Download URL: clickup_mcp_server-0.2.0.tar.gz
- Upload date:
- Size: 97.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
851eb2fa18f33910fe6056ed987437df17a8ed21b3219f507e9793e1c8bf04d5
|
|
| MD5 |
2e85c9c1cdda9bbdac6df93a1304e649
|
|
| BLAKE2b-256 |
3a951658b85f75463aa420ea7a5bb924b2a1baf8b6daa0ad12e1011377a69d25
|
File details
Details for the file clickup_mcp_server-0.2.0-py3-none-any.whl.
File metadata
- Download URL: clickup_mcp_server-0.2.0-py3-none-any.whl
- Upload date:
- Size: 148.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f47297f58dcb9d452e1d87840779987f04215a915a7f84f6c4c204ed321a96f7
|
|
| MD5 |
1d44b6aebfc75de3c263c88f80f2ddbd
|
|
| BLAKE2b-256 |
3db888ad424c6020d971e8b514ec010bf004b571d8d61f9d6dd71cb3f54a4673
|