@taazkareem/clickup-mcp-server 0.4.49 → 0.4.51

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.
@@ -0,0 +1,36 @@
1
+ # Use a Node.js base image
2
+ FROM node:18-alpine AS builder
3
+
4
+ # Set the working directory
5
+ WORKDIR /app
6
+
7
+ # Copy package files and TypeScript config
8
+ COPY package.json package-lock.json tsconfig.json ./
9
+
10
+ # Copy the source files
11
+ COPY src/ ./src/
12
+
13
+ # Install dependencies and build
14
+ RUN npm install
15
+ RUN npm run build
16
+
17
+ # Use a smaller image for the runtime
18
+ FROM node:18-alpine AS runtime
19
+
20
+ # Set the working directory
21
+ WORKDIR /app
22
+
23
+ # Copy the build output and node_modules from the builder stage
24
+ COPY --from=builder /app/build ./build
25
+ COPY --from=builder /app/node_modules ./node_modules
26
+ COPY --from=builder /app/package.json ./
27
+
28
+ # Set environment variables (these will be overridden by Smithery)
29
+ ENV CLICKUP_API_KEY=placeholder
30
+ ENV CLICKUP_TEAM_ID=placeholder
31
+
32
+ # Expose the port if needed
33
+ EXPOSE 8080
34
+
35
+ # Define the command to run the application
36
+ CMD ["node", "build/index.js"]
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 taazkareem
3
+ Copyright (c) 2025 Talib Kareem
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,10 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
22
+
23
+ Disclaimer: This software makes use of third-party APIs and may reference trademarks
24
+ or brands owned by third parties. The use of such APIs or references does not imply
25
+ any affiliation with or endorsement by the respective companies. All trademarks and
26
+ brand names are the property of their respective owners. This project is an independent
27
+ work and is not officially associated with or sponsored by any third-party company mentioned.
package/README.md CHANGED
@@ -1,235 +1,97 @@
1
- # ClickUp MCP Server
1
+ <img src="https://clickup.com/assets/brand/logo-v3-clickup-dark.svg" alt="ClickUp" height="40" style="vertical-align: middle; margin-top: -4px;">
2
+
3
+ # MCP Server
2
4
 
3
5
  A Model Context Protocol (MCP) server for integrating ClickUp tasks with AI applications. This server allows AI agents to interact with ClickUp tasks, spaces, lists, and folders through a standardized protocol.
4
6
 
5
- ## Features
7
+ ## Quick Start
6
8
 
7
- - 🔄 **Resource Management**
8
- - List and read ClickUp tasks as resources
9
- - View task details, status, and assignments
10
- - Access task history and relationships
9
+ Directions for use with Cursor Composer Agent:
11
10
 
12
- - 📂 **Workspace Organization**
13
- - Create and manage spaces
14
- - Create, update, and delete folders
15
- - Create and manage lists (in spaces or folders)
16
- - Flexible identification using IDs or names
17
-
18
- - ✨ **Task Operations**
19
- - Create single or bulk tasks
20
- - Move tasks between lists
21
- - Duplicate tasks
22
- - Set priorities and due dates
23
- - Assign team members
24
-
25
- - 📊 **Information Retrieval**
26
- - Get complete hierarchy of spaces, folders, and lists with IDs
27
- - List available statuses
28
- - Find items by name (case-insensitive)
29
- - View task relationships
30
-
31
- - 🔍 **Smart Name Resolution**
32
- - Use names instead of IDs for lists and folders
33
- - Global search across all spaces
34
- - Case-insensitive matching
35
- - Automatic location of items
36
-
37
- - 📝 **AI Integration**
38
- - Generate task descriptions with AI
39
- - Summarize tasks and analyze priorities
40
- - Get AI-powered task recommendations
41
-
42
- - 🔒 **Security**
43
- - Secure API key management
44
- - Environment-based configuration
45
-
46
- ## Installation
47
-
48
- ### Using npx
11
+ 1. Get your credentials:
12
+ - ClickUp API key from [ClickUp Settings](https://app.clickup.com/settings/apps)
13
+ - Team ID from your ClickUp workspace URL
14
+ 2. Go to Features in settings
15
+ 3. Add under MCP Servers:
49
16
  ```bash
50
- npx @taazkareem/clickup-mcp-server
51
- ```
52
-
53
- ## Configuration
54
-
55
- 1. Get your ClickUp API key from [ClickUp Settings](https://app.clickup.com/settings/apps)
56
- 2. Create a `.env` file:
57
- ```env
58
- CLICKUP_API_KEY=your_api_key_here
59
- TEAM_ID=your_team_id_here
17
+ npx -y @taazkareem/clickup-mcp-server \
18
+ --env CLICKUP_API_KEY=your_api_key_here \
19
+ --env CLICKUP_TEAM_ID=your_team_id_here
60
20
  ```
21
+ 4. Replace the credentials and click Save
22
+ 5. Use Natural Language to interact with your ClickUp Workspace!
61
23
 
62
- ## Using with Cursor AI Composer Agent
63
-
64
- To add this server to Cursor AI Composer, follow these steps:
24
+ ## Features
65
25
 
66
- 1. Go to the Features section in the settings.
67
- 2. Add the following command under MCP Servers:
26
+ - 🎯 **Task Management**
27
+ - Create, update, and delete individual tasks
28
+ - Move and duplicate tasks between lists, spaces, and folders
29
+ - Create multiple tasks in bulk
30
+ - View and modify task details and properties
68
31
 
69
- ```bash
70
- npx -y @taazkareem/clickup-mcp-server --stdio \
71
- --env CLICKUP_API_KEY=your_api_key_here \
72
- --env TEAM_ID=your_team_id_here
73
- ```
74
- 3. Replace `your_api_key_here` and `your_team_id_here` with your actual ClickUp credentials.
75
- 4. Click on 'Save' to add the server.
76
-
77
- > **Security Note**: Your API key will be stored securely and will not be exposed to AI models.
78
-
79
- ### Available Tools
80
-
81
- 1. **workspace_hierarchy**
82
- - Lists complete hierarchy of the ClickUp workspace
83
- - Shows spaces, folders, and lists with their IDs
84
- - Shows available statuses for each list
85
- - Provides a tree view of your workspace organization
86
- - No parameters required
87
-
88
- 2. **create_task**
89
- - Creates a new task in ClickUp
90
- - Required parameters:
91
- - `name`: Name of the task
92
- - Optional parameters:
93
- - `listId`: ID of the list (optional if listName provided)
94
- - `listName`: Name of the list (optional if listId provided)
95
- - `description`: Task description
96
- - `status`: Task status
97
- - `priority`: Priority level (1-4)
98
- - `dueDate`: Due date (ISO string)
99
- - `assignees`: Array of user IDs
100
-
101
- 3. **create_bulk_tasks**
102
- - Creates multiple tasks simultaneously in a list
103
- - Required parameters:
104
- - `tasks`: Array of task objects, each containing:
105
- - `name`: Name of the task (required)
106
- - `description`: Task description (optional)
107
- - `status`: Task status (optional)
108
- - `priority`: Priority level 1-4 (optional)
109
- - `dueDate`: Due date ISO string (optional)
110
- - `assignees`: Array of user IDs (optional)
111
- - Optional parameters:
112
- - `listId`: ID of the list (optional if listName provided)
113
- - `listName`: Name of the list (optional if listId provided)
114
-
115
- 4. **create_list**
116
- - Creates a new list in a space
117
- - Required parameters:
118
- - `name`: Name of the list
119
- - Optional parameters:
120
- - `spaceId`: ID of the space (optional if spaceName provided)
121
- - `spaceName`: Name of the space (optional if spaceId provided)
122
- - `content`: List description
123
- - `status`: List status
124
- - `priority`: Priority level (1-4)
125
- - `dueDate`: Due date (ISO string)
126
-
127
- 5. **create_folder**
128
- - Creates a new folder in a space
129
- - Required parameters:
130
- - `name`: Name of the folder
131
- - Optional parameters:
132
- - `spaceId`: ID of the space (optional if spaceName provided)
133
- - `spaceName`: Name of the space (optional if spaceId provided)
134
- - `override_statuses`: Whether to override space statuses
135
-
136
- 6. **create_list_in_folder**
137
- - Creates a new list within a folder
138
- - Required parameters:
139
- - `name`: Name of the list
140
- - Optional parameters:
141
- - `folderId`: ID of the folder (optional if using folderName)
142
- - `folderName`: Name of the folder
143
- - `spaceId`: ID of the space (required if using folderName)
144
- - `spaceName`: Name of the space (alternative to spaceId)
145
- - `content`: List description
146
- - `status`: List status
147
-
148
- 7. **move_task**
149
- - Moves a task to a different list
150
- - Required parameters:
151
- - `taskId`: ID of the task to move
152
- - Optional parameters:
153
- - `listId`: ID of destination list (optional if listName provided)
154
- - `listName`: Name of destination list (optional if listId provided)
155
-
156
- 8. **duplicate_task**
157
- - Creates a copy of a task in a specified list
158
- - Required parameters:
159
- - `taskId`: ID of the task to duplicate
160
- - Optional parameters:
161
- - `listId`: ID of destination list (optional if listName provided)
162
- - `listName`: Name of destination list (optional if listId provided)
163
-
164
- 9. **update_task**
165
- - Updates an existing task
166
- - Required parameters:
167
- - `taskId`: ID of the task to update
168
- - Optional parameters:
169
- - `name`: New task name
170
- - `description`: New description
171
- - `status`: New status
172
- - `priority`: New priority level (1-4)
173
- - `dueDate`: New due date (ISO string)
174
-
175
- ### Available Prompts
176
-
177
- 1. **summarize_tasks**
178
- - Provides a comprehensive summary of tasks
179
- - Groups tasks by status
180
- - Highlights priorities and deadlines
181
- - Suggests task relationships
182
-
183
- 2. **analyze_priorities**
184
- - Analyzes task priority distribution
185
- - Identifies misaligned priorities
186
- - Suggests priority adjustments
187
- - Recommends task sequencing
188
-
189
- 3. **generate_description**
190
- - Helps generate detailed task descriptions
191
- - Includes:
192
- - Clear objectives
193
- - Success criteria
194
- - Required resources
195
- - Dependencies
196
- - Potential risks
197
-
198
- ## Name Resolution
199
-
200
- Most tools support finding items by either ID or name:
201
- - Spaces can be referenced by `spaceId` or `spaceName`
202
- - Folders can be referenced by `folderId` or `folderName` (with space information)
203
- - Lists can be referenced by `listId` or found within spaces/folders
204
-
205
- Name matching is case-insensitive for convenience.
32
+ - 📂 **Workspace Organization**
33
+ - Navigate complete workspace hierarchy (spaces, folders, lists)
34
+ - Tree structure with clear relationships
35
+ - Create and manage lists and folders
36
+ - Efficient path-based navigation
37
+
38
+ - 🔄 **Integration Features**
39
+ - Name or ID-based item lookup
40
+ - Case-insensitive name matching
41
+ - Markdown formatting support
42
+ - Built-in API rate limiting
43
+ - Comprehensive error handling
44
+ - Clear parameter validation
45
+
46
+ - 🤖 **AI-Powered Analysis**
47
+ - Task status summaries and overviews
48
+ - Priority analysis and recommendations
49
+ - Structured description generation
50
+ - Task relationship mapping
51
+ - Workspace organization insights
52
+
53
+ ## Available Tools
54
+
55
+ | Tool | Description | Required Parameters |
56
+ |------|-------------|-------------------|
57
+ | [get_workspace_hierarchy](docs/tools.md#workspace-organization) | Get complete workspace structure | None |
58
+ | [get_tasks](docs/tools.md#task-management) | Retrieve tasks from a list | `listId` or `listName` |
59
+ | [get_task](docs/tools.md#task-management) | Get single task details | `taskId` or `taskName` |
60
+ | [create_task](docs/tools.md#task-management) | Create a new task | `listId`, `taskName` |
61
+ | [create_bulk_tasks](docs/tools.md#task-management) | Create multiple tasks | `listId`, `tasks[]` |
62
+ | [update_task](docs/tools.md#task-management) | Modify task properties | `taskId` or `taskName` |
63
+ | [delete_task](docs/tools.md#task-management) | Remove a task | `taskId` or `taskName` |
64
+ | [move_task](docs/tools.md#task-management) | Move task to another list | `taskId`, `destinationListId` |
65
+ | [duplicate_task](docs/tools.md#task-management) | Copy task to another list | `taskId`, `destinationListId` |
66
+ | [create_list](docs/tools.md#list-management) | Create a new list | `spaceId`, `listName` |
67
+ | [create_folder](docs/tools.md#folder-management) | Create a new folder | `spaceId`, `folderName` |
68
+ | [create_list_in_folder](docs/tools.md#list-management) | Create list in folder | `folderId`, `listName` |
69
+
70
+ See [full documentation](docs/tools.md) for optional parameters and advanced usage.
71
+
72
+ ## Available Prompts
73
+
74
+ | Prompt | Purpose | Features |
75
+ |--------|---------|----------|
76
+ | [summarize_tasks](docs/tools.md#prompts) | Generate task overview | Status summary, relationships, current states |
77
+ | [analyze_priorities](docs/tools.md#prompts) | Review task priorities | Priority review, adjustments, sequencing |
78
+ | [generate_description](docs/tools.md#prompts) | Create task descriptions | Structure, objectives, dependencies |
206
79
 
207
80
  ## Error Handling
208
81
 
209
- The server provides clear error messages for common scenarios:
82
+ The server provides clear error messages for:
210
83
  - Missing required parameters
211
84
  - Invalid IDs or names
212
85
  - Items not found
213
86
  - Permission issues
214
87
  - API errors
88
+ - Rate limiting
215
89
 
216
- ## Development
217
-
218
- 1. Clone the repository:
219
- ```bash
220
- git clone https://github.com/taazkareem/clickup-mcp-server.git
221
- cd clickup-mcp-server
222
- ```
90
+ ## Support the Developer
223
91
 
224
- 2. Install dependencies:
225
- ```bash
226
- npm install
227
- ```
92
+ If you find this project useful, please consider supporting
228
93
 
229
- 3. Start in development mode:
230
- ```bash
231
- npm run dev
232
- ```
94
+ [![Sponsor TaazKareem](https://img.shields.io/badge/Sponsor-TaazKareem-orange?logo=github)](https://github.com/sponsors/TaazKareem)
233
95
 
234
96
  ## Contributing
235
97
 
@@ -238,3 +100,4 @@ Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md)
238
100
  ## License
239
101
 
240
102
  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
103
+
package/build/config.js CHANGED
@@ -1,31 +1,19 @@
1
- import dotenv from 'dotenv';
2
- // Load environment variables from .env file
3
- dotenv.config();
4
- console.log('Environment variables received:', {
5
- CLICKUP_API_KEY: process.env.CLICKUP_API_KEY,
6
- TEAM_ID: process.env.TEAM_ID
7
- });
8
- // Parse command line arguments for --env flags
9
1
  const args = process.argv.slice(2);
10
- console.log('Command line arguments:', args);
11
2
  const envArgs = {};
12
3
  for (let i = 0; i < args.length; i++) {
13
4
  if (args[i] === '--env' && i + 1 < args.length) {
14
5
  const [key, value] = args[i + 1].split('=');
15
6
  if (key === 'CLICKUP_API_KEY')
16
7
  envArgs.clickupApiKey = value;
17
- if (key === 'TEAM_ID')
18
- envArgs.teamId = value;
19
- i++; // Skip the next argument since we used it
8
+ if (key === 'CLICKUP_TEAM_ID')
9
+ envArgs.clickupTeamId = value;
10
+ i++;
20
11
  }
21
12
  }
22
- console.log('Parsed environment arguments:', envArgs);
23
13
  const configuration = {
24
14
  clickupApiKey: envArgs.clickupApiKey || process.env.CLICKUP_API_KEY || '',
25
- teamId: envArgs.teamId || process.env.TEAM_ID || ''
15
+ clickupTeamId: envArgs.clickupTeamId || process.env.CLICKUP_TEAM_ID || '',
26
16
  };
27
- console.log('Final configuration:', configuration);
28
- // Check for missing environment variables
29
17
  const missingEnvVars = Object.entries(configuration)
30
18
  .filter(([_, value]) => !value)
31
19
  .map(([key]) => key);