@hauptsache.net/clickup-mcp 1.0.4 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,30 +1,87 @@
1
1
  # ClickUp MCP for AI Assistants
2
2
 
3
- A Model Context Protocol (MCP) server that enables AI assistants like Claude, Windsurf, and Cursor to interact with your ClickUp tasks.
3
+ Transform your AI assistant into a powerful ClickUp integration for both **agentic coding** and **productivity management**. This Model Context Protocol (MCP) server enables Claude, Windsurf, Cursor, and other AI assistants to seamlessly interact with your ClickUp workspace.
4
4
 
5
- ## Why This MCP Is Great
5
+ > **⚠️ Experimental Software Notice**
6
+ > This MCP is experimental and under active development. While implemented with great care to prevent data loss through append-only description updates and other safety measures, it cannot be guaranteed to be completely safe. Please use with caution, especially in production environments. Always test in a non-critical workspace first. 🧪
6
7
 
7
- This MCP excels at providing AI assistants with rich access to your ClickUp tasks:
8
+ ## Two Powerful Use Cases
8
9
 
9
- - **Complete Task Information**: View detailed task data including status, creation date, and assignees
10
- - **Full Comment History**: Access the entire conversation thread for context
11
- - **Inline Images Support**: View images embedded in task descriptions and comments
12
- - **Task Search**: Find relevant tasks using keywords
13
- - **Todo Management**: List all your open tasks
10
+ ### 🛠️ **For Developers & Agentic Coding**
11
+ Originally built to supercharge coding sessions by providing complete task context to AI coding assistants:
14
12
 
15
- The standout feature is the ability to retrieve individual tickets with their complete comment history and inline images, giving your AI assistant the full context of your work.
13
+ - **Instant Requirements**: *"Get task CU-abc123"* AI gets full requirements, acceptance criteria, comments, and images
14
+ - **Complete Context**: Pass entire task histories to Claude Code, Windsurf, or Cursor for informed development
15
+ - **Visual Specifications**: Include embedded wireframes, mockups, and screenshots in your coding context
16
+ - **Implementation History**: Access all previous discussions and decisions for better code alignment
16
17
 
17
- ## Limitations
18
+ ### 📋 **For Project Management & Productivity**
19
+ Extended capabilities for conversational ClickUp management and daily workflow optimization.
18
20
 
19
- - **Todo Management**: The todo management feature is currently limited to 50 tasks since it would otherwise flood the context.
20
- - **No List/Space Support**: This MCP does not currently support browsing ClickUp Lists or Spaces due to performance issues with large instances.
21
- - **Image Limit**: The MCP processes only the 4 most recent images per task to prevent exceeding context limits. You can adjust this number by setting the `MAX_IMAGES` environment variable, though most AI tools have constraints that prevent using more than 4 images.
21
+ ## What You Can Do
22
+
23
+ Turn natural language into powerful ClickUp actions:
24
+
25
+ **Agentic Coding & Development:**
26
+ - *"Look at CU-abc123, can you find the relevant code?"*
27
+ - *"Can you build the dashboard like described in https://app.clickup.com/t/12a23b45c?"*
28
+ - *"Check task CU-xyz789 and fix the bugs mentioned in the comments"*
29
+ - *"Implement the API endpoints described in the integration task"*
30
+
31
+ **Time Tracking & Productivity:**
32
+ - *"Book 2 hours for the client meeting on the XYZ project"*
33
+ - *"How much time did I spend on development tasks this week?"*
34
+ - *"Log 30 minutes for code review on the authentication feature"*
35
+
36
+ **Smart Search & Discovery:**
37
+ - *"What task did I mention the CSV import in?"*
38
+ - *"Find all tasks related to the payment gateway integration"*
39
+ - *"Show me tasks where users reported login issues"*
40
+
41
+ **Daily Workflow Management:**
42
+ - *"What do I need to do today?"*
43
+ - *"Create a task for fixing the dashboard bug in the frontend list"*
44
+ - *"Update the API documentation task to 'in review' status"*
45
+ - *"What tasks are blocking the mobile app release?"*
46
+
47
+ **Rich Context & Collaboration:**
48
+ - *"Show me all comments on the user authentication task"*
49
+ - *"What's the latest update on the database migration?"*
50
+ - *"Add a comment to the design task about the new wireframes"*
51
+
52
+ ## Key Features
53
+
54
+ ### 🔍 **Intelligent Search**
55
+ - Fuzzy matching across task names, descriptions, and comments
56
+ - Multi-language search support for international teams
57
+ - Filter by assignees, projects, status, and metadata
58
+
59
+ ### 💬 **Complete Context**
60
+ - Full comment histories and team discussions
61
+ - Task descriptions with embedded images
62
+ - List descriptions and project guidelines
63
+ - Access to complete task history and decisions
64
+
65
+ ### ⏱️ **Time Tracking**
66
+ - Log time entries with descriptions
67
+ - View historical time logs and entries
68
+ - Query time entries by task or date range
69
+
70
+ ### 📋 **Task Management**
71
+ - Create and update tasks with markdown descriptions
72
+ - Add comments and collaborate with team members
73
+ - Manage priorities, due dates, assignees, and tags
74
+ - Handle time estimates and custom field values
75
+
76
+ ### 🔒 **Safety Features**
77
+ - **Append-Only Descriptions**: Description fields are never overwritten - new content is safely appended with timestamps
78
+ - **Normal Field Updates**: Status, priority, assignees, tags, and dates can be updated normally (easily revertible through ClickUp's history)
22
79
 
23
80
  ## Setup for Claude Desktop, Windsurf, or Cursor
24
81
 
25
82
  1. **Prerequisites**:
26
- - A ClickUp account with API access (Profile Icon > Settings > Apps > API Token ~ usually starts with pk_)
27
- - Your ClickUp API key and Team ID (The ~7 digit number in the url when you are in the settings)
83
+ - Your `CLICKUP_API_KEY` (Profile Icon > Settings > Apps > API Token ~ usually starts with pk_)
84
+ - and your `CLICKUP_TEAM_ID` (The ~7 digit number in the url when you are in the settings)
28
85
 
29
86
  2. **Configuration**:
30
87
  Add the following to your MCP configuration file:
@@ -36,7 +93,7 @@ The standout feature is the ability to retrieve individual tickets with their co
36
93
  "command": "npx",
37
94
  "args": [
38
95
  "-y",
39
- "@hauptsache.net/clickup-mcp"
96
+ "@hauptsache.net/clickup-mcp@1"
40
97
  ],
41
98
  "env": {
42
99
  "CLICKUP_API_KEY": "your_api_key",
@@ -50,24 +107,51 @@ The standout feature is the ability to retrieve individual tickets with their co
50
107
  Replace `your_api_key` and `your_team_id` with your actual ClickUp credentials.
51
108
 
52
109
  3. **Connect Your AI Assistant**:
53
- - **Claude Desktop**: Add this configuration in Settings > MCPs
110
+ - **Claude Desktop**: Add this configuration in Settings > Developer > Edit Config
54
111
  - **Windsurf**: Add to your MCP configuration file
55
112
  - **Cursor**: Configure through the MCP settings panel
56
113
 
57
- ## Using with Your AI Assistant
58
-
59
- Once connected, your AI assistant can:
60
-
61
- 1. **View Task Details**:
62
- Ask: "Show me details for task CU-123456"
63
-
64
- 2. **Search Tasks**:
65
- Ask: "Find tasks related to login functionality"
66
-
67
- 3. **Check Your Todo List**:
68
- Ask: "What tasks are assigned to me?"
69
-
70
- The AI will retrieve the information directly from ClickUp, including all text content, comments, and images, providing you with comprehensive assistance on your tasks.
114
+ ## MCP Modes & Available Tools
115
+
116
+ The ClickUp MCP supports three operational modes to balance functionality, security, and performance:
117
+
118
+ - **🚀 `read-minimal`**: Perfect for AI coding assistants and context gathering
119
+ - **📖 `read`**: Full read-only access for project exploration and workflow understanding
120
+ - **✏️ `write`** (Default): Complete functionality for task management and productivity workflows
121
+
122
+ | Tool | read-minimal | read | write | Description |
123
+ |------|:------------:|:----:|:-----:|-------------|
124
+ | `getTaskById` | | ✅ | ✅ | Get complete task details including comments, images, and metadata |
125
+ | `searchTasks` | ✅ | ✅ | ✅ | Find tasks by content, keywords, assignees, or project context |
126
+ | `listSpaces` | ❌ | ✅ | ✅ | Browse workspace structure and project organization |
127
+ | `listLists` | | | | Browse lists and folders within spaces |
128
+ | `getListInfo` | ❌ | ✅ | ✅ | Get list details and available statuses for task creation |
129
+ | `getTimeEntries` | ❌ | ✅ | ✅ | View time entries and analyze time spent across projects |
130
+ | `createTask` | ❌ | ❌ | ✅ | Create new tasks with full markdown support |
131
+ | `updateTask` | ❌ | ❌ | ✅ | Update tasks (status, priority, assignees, etc.) with **SAFE APPEND-ONLY** descriptions |
132
+ | `updateListInfo` | ❌ | ❌ | ✅ | **SAFE APPEND-ONLY** updates to list descriptions (preserves existing content) |
133
+ | `addComment` | ❌ | ❌ | ✅ | Add comments to tasks for collaboration |
134
+ | `createTimeEntry` | ❌ | ❌ | ✅ | Log time entries for task tracking |
135
+
136
+ ### Setting the Mode
137
+
138
+ Add the mode to your MCP configuration:
139
+
140
+ ```json
141
+ {
142
+ "mcpServers": {
143
+ "clickup": {
144
+ "command": "npx",
145
+ "args": ["-y", "@hauptsache.net/clickup-mcp@1"],
146
+ "env": {
147
+ "CLICKUP_API_KEY": "your_api_key",
148
+ "CLICKUP_TEAM_ID": "your_team_id",
149
+ "CLICKUP_MCP_MODE": "read"
150
+ }
151
+ }
152
+ }
153
+ }
154
+ ```
71
155
 
72
156
  ## Configuration
73
157
 
@@ -75,6 +159,7 @@ This MCP server can be configured using environment variables:
75
159
 
76
160
  - `CLICKUP_API_KEY`: (Required) Your ClickUp API key.
77
161
  - `CLICKUP_TEAM_ID`: (Required) Your ClickUp Team ID (formerly Workspace ID).
162
+ - `CLICKUP_MCP_MODE`: (Optional) Controls which tools are available. Options: `read-minimal`, `read`, `write` (default).
78
163
  - `MAX_IMAGES`: (Optional) The maximum number of images to return for a task in `getTaskById`. Defaults to 4.
79
164
  - `CLICKUP_PRIMARY_LANGUAGE`: (Optional) A hint for the primary language used in your ClickUp tasks (e.g., "de" for German, "en" for English). This helps the `searchTask` tool provide more tailored guidance in its description for multilingual searches.
80
165
  - `LANG`: (Optional) If `CLICKUP_PRIMARY_LANGUAGE` is not set, the MCP will check this standard environment variable (e.g., "en_US.UTF-8", "de_DE") as a fallback to infer the primary language.
@@ -87,6 +172,64 @@ The `searchTask` tool's description will dynamically adjust based on the detecte
87
172
 
88
173
  This feature aims to improve search effectiveness when the language of user queries (often English) differs from the language of the tasks in ClickUp, without making the MCP itself perform translations. The responsibility for providing bilingual search terms still lies with the agent calling the MCP, but the MCP offers more specific advice if it has a language hint.
89
174
 
175
+ ## Markdown Formatting Support
176
+
177
+ Task descriptions and list documentation support full markdown formatting:
178
+
179
+ ### Examples
180
+
181
+ **Task Creation with Markdown:**
182
+ ```
183
+ Create a task called "API Integration" with description:
184
+ # API Integration Requirements
185
+
186
+ ## Authentication
187
+ - Implement OAuth 2.0 flow
188
+ - Add JWT token validation
189
+ - **Priority**: High security standards
190
+
191
+ ## Endpoints
192
+ 1. `/api/users` - User management
193
+ 2. `/api/data` - Data retrieval
194
+ 3. `/api/webhook` - Event notifications
195
+
196
+ ## Testing
197
+ - [ ] Unit tests for auth flow
198
+ - [ ] Integration tests
199
+ - [ ] Load testing with 1000+ concurrent users
200
+
201
+ > **Note**: This replaces the legacy REST implementation
202
+
203
+ See related task: https://app.clickup.com/t/abc123
204
+ ```
205
+
206
+ **Append-Only Updates (Safe):**
207
+ When updating task descriptions, content is safely appended:
208
+ ```markdown
209
+ [Existing task description content]
210
+
211
+ ---
212
+ **Edit (2024-01-15):** Added new acceptance criteria based on client feedback:
213
+ - Must support mobile responsive design
214
+ - Performance requirement: < 2s load time
215
+ ```
216
+
217
+ This ensures no existing content is ever lost while maintaining a clear audit trail.
218
+
219
+ ## Performance & Limitations
220
+
221
+ **Optimized for AI Workflows:**
222
+ - **Image Processing**: Limited to 4 most recent images per task to prevent running into mcp client limitations (configurable via `MAX_IMAGES`)
223
+ - **Search Scope**: Searches within the most recent 1000-3000 tasks to prevent running into rate limits (exact number varies by endpoint)
224
+ - **Search Results**: Returns up to 50 most relevant matches to prevent flooding the agent with too many results
225
+
226
+ **Current Scope:**
227
+ - Focused on task-level operations rather than bulk workspace management
228
+ - Optimized for conversational AI workflows rather than data migration
229
+ - Designed for productivity enhancement, not administrative operations
230
+
231
+ These limitations ensure reliable performance while covering the most common use cases for both development context and productivity management.
232
+
90
233
  ## License
91
234
 
92
235
  ISC
package/dist/cli.js CHANGED
@@ -4,12 +4,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  require("dotenv/config"); // Load .env file
5
5
  const index_1 = require("./index");
6
6
  async function main() {
7
+ // Wait for server initialization to complete
8
+ const server = await index_1.serverPromise;
7
9
  const args = process.argv.slice(2);
8
10
  if (args.length < 1) {
9
11
  console.error("Usage: npm run cli <tool-name> [param1=value1 param2=value2 ...]");
10
12
  console.error("\nAvailable tools:");
11
13
  // @ts-ignore - Accessing private property for testing purposes
12
- const tools = index_1.server._registeredTools;
14
+ const tools = server._registeredTools;
13
15
  if (tools) {
14
16
  for (const [name, tool] of Object.entries(tools)) {
15
17
  console.error(` - ${name}: ${tool.description}`);
@@ -42,7 +44,8 @@ async function main() {
42
44
  try {
43
45
  if (value.startsWith('{') || value.startsWith('[') ||
44
46
  value === 'true' || value === 'false' ||
45
- !isNaN(Number(value))) {
47
+ (value.startsWith('"') && value.endsWith('"')) ||
48
+ (!isNaN(Number(value)) && !key.includes('id') && !value.startsWith('"'))) {
46
49
  params[key] = JSON.parse(value);
47
50
  }
48
51
  else {
@@ -56,7 +59,7 @@ async function main() {
56
59
  }
57
60
  try {
58
61
  // @ts-ignore - Accessing private property for testing purposes
59
- const tools = index_1.server._registeredTools;
62
+ const tools = server._registeredTools;
60
63
  if (!tools || !tools[toolName]) {
61
64
  console.error(`Unknown tool: ${toolName}`);
62
65
  process.exit(1);
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
- export declare const server: McpServer;
3
+ declare const server: McpServer;
4
+ declare const serverPromise: Promise<McpServer>;
5
+ export { server, serverPromise };
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAyCpE,eAAO,MAAM,MAAM,WAGjB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAapE,QAAA,MAAM,MAAM,WAGV,CAAC;AAsCH,QAAA,MAAM,aAAa,oBAAqB,CAAC;AAGzC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC"}