@taazkareem/clickup-mcp-server 0.4.1 → 0.4.3
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/LICENSE +21 -0
- package/README.md +3 -12
- package/build/index.js +32 -20
- package/package.json +3 -2
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 taazkareem
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -45,16 +45,11 @@ A Model Context Protocol (MCP) server for integrating ClickUp tasks with AI appl
|
|
|
45
45
|
|
|
46
46
|
## Installation
|
|
47
47
|
|
|
48
|
-
### Using npx
|
|
48
|
+
### Using npx
|
|
49
49
|
```bash
|
|
50
50
|
npx @taazkareem/clickup-mcp-server
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
### Global Installation
|
|
54
|
-
```bash
|
|
55
|
-
npm install -g @taazkareem/clickup-mcp-server
|
|
56
|
-
```
|
|
57
|
-
|
|
58
53
|
## Configuration
|
|
59
54
|
|
|
60
55
|
1. Get your ClickUp API key from [ClickUp Settings](https://app.clickup.com/settings/apps)
|
|
@@ -64,7 +59,7 @@ CLICKUP_API_KEY=your_api_key_here
|
|
|
64
59
|
TEAM_ID=your_team_id_here
|
|
65
60
|
```
|
|
66
61
|
|
|
67
|
-
## Using with Cursor AI Composer
|
|
62
|
+
## Using with Cursor AI Composer Agent
|
|
68
63
|
|
|
69
64
|
To add this server to Cursor AI Composer, follow these steps:
|
|
70
65
|
|
|
@@ -72,17 +67,13 @@ To add this server to Cursor AI Composer, follow these steps:
|
|
|
72
67
|
2. Add the following command under MCP Servers:
|
|
73
68
|
|
|
74
69
|
```bash
|
|
75
|
-
npx -y @taazkareem/clickup-mcp-server \
|
|
70
|
+
npx -y @taazkareem/clickup-mcp-server --stdio \
|
|
76
71
|
--env CLICKUP_API_KEY=your_api_key_here \
|
|
77
72
|
--env TEAM_ID=your_team_id_here
|
|
78
73
|
```
|
|
79
74
|
3. Replace `your_api_key_here` and `your_team_id_here` with your actual ClickUp credentials.
|
|
80
75
|
4. Click on 'Save' to add the server.
|
|
81
76
|
|
|
82
|
-
You can get these values from:
|
|
83
|
-
- `CLICKUP_API_KEY`: Get from [ClickUp Settings > Apps](https://app.clickup.com/settings/apps)
|
|
84
|
-
- `TEAM_ID`: Your ClickUp Team ID (found in the URL when viewing your workspace or via API)
|
|
85
|
-
|
|
86
77
|
> **Security Note**: Your API key will be stored securely and will not be exposed to AI models.
|
|
87
78
|
|
|
88
79
|
### Available Tools
|
package/build/index.js
CHANGED
|
@@ -585,13 +585,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
585
585
|
if (!args.taskId) {
|
|
586
586
|
throw new Error("taskId is required");
|
|
587
587
|
}
|
|
588
|
-
const dueDate = args.due_date ? new Date(args.due_date).getTime() : undefined;
|
|
589
588
|
const task = await clickup.updateTask(args.taskId, {
|
|
590
589
|
name: args.name,
|
|
591
590
|
description: args.description,
|
|
592
591
|
status: args.status,
|
|
593
592
|
priority: args.priority,
|
|
594
|
-
due_date:
|
|
593
|
+
due_date: args.due_date
|
|
595
594
|
});
|
|
596
595
|
return {
|
|
597
596
|
content: [{
|
|
@@ -659,24 +658,37 @@ server.setRequestHandler(GetPromptRequestSchema, async (request) => {
|
|
|
659
658
|
throw error;
|
|
660
659
|
}
|
|
661
660
|
});
|
|
662
|
-
|
|
663
|
-
console.log('
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
server.connect(transport)
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
process.
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
661
|
+
if (process.argv.includes('--stdio')) {
|
|
662
|
+
console.log('Starting server in stdio mode...');
|
|
663
|
+
// Set up stdio transport
|
|
664
|
+
const transport = new StdioServerTransport();
|
|
665
|
+
// Connect server with better error handling
|
|
666
|
+
server.connect(transport)
|
|
667
|
+
.then(() => {
|
|
668
|
+
console.log('Server connected successfully to stdio transport');
|
|
669
|
+
// Keep the process alive
|
|
670
|
+
process.stdin.resume();
|
|
671
|
+
// Handle process termination
|
|
672
|
+
process.on('SIGINT', () => {
|
|
673
|
+
console.log('Received SIGINT. Shutting down...');
|
|
674
|
+
transport.close();
|
|
675
|
+
process.exit(0);
|
|
676
|
+
});
|
|
677
|
+
process.on('SIGTERM', () => {
|
|
678
|
+
console.log('Received SIGTERM. Shutting down...');
|
|
679
|
+
transport.close();
|
|
680
|
+
process.exit(0);
|
|
681
|
+
});
|
|
682
|
+
})
|
|
683
|
+
.catch(error => {
|
|
684
|
+
console.error('Failed to connect server to transport:', error);
|
|
685
|
+
process.exit(1);
|
|
686
|
+
});
|
|
687
|
+
}
|
|
688
|
+
else {
|
|
689
|
+
console.log('Starting server in standard mode...');
|
|
690
|
+
// Add your non-stdio server initialization here if needed
|
|
691
|
+
}
|
|
680
692
|
// Prevent unhandled promise rejections from crashing the server
|
|
681
693
|
process.on('unhandledRejection', (error) => {
|
|
682
694
|
console.error('Unhandled promise rejection:', error);
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taazkareem/clickup-mcp-server",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.3",
|
|
4
4
|
"description": "ClickUp MCP Server - Integrate ClickUp tasks with AI through Model Context Protocol",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "build/index.js",
|
|
7
7
|
"bin": {
|
|
8
|
-
"clickup-mcp-server": "build/index.js"
|
|
8
|
+
"clickup-mcp-server": "./build/index.js"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"build",
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"scripts": {
|
|
16
16
|
"build": "tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"",
|
|
17
17
|
"start": "node build/index.js",
|
|
18
|
+
"serve": "node build/index.js --stdio",
|
|
18
19
|
"dev": "tsc -w",
|
|
19
20
|
"prepare": "npm run build",
|
|
20
21
|
"prepublishOnly": "npm test",
|