{"_id":"@alanse/clickup-multi-mcp-server","_rev":"5-991cb972d0fd9ebd7aa58fb5c9e4cb17","name":"@alanse/clickup-multi-mcp-server","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@alanse/clickup-multi-mcp-server","version":"1.0.0","keywords":["clickup","mcp","ai","tasks","project-management","model-context-protocol","clickup-server","clickup-mcp-server","task-management","productivity","automation","workflow","team-collaboration","artificial-intelligence","project-tracking","task-tracking","project-planning","clickup-integration","clickup-api","clickup-automation","task-organization","project-organization"],"author":{"name":"Daichi Okazaki（Alanse）"},"license":"MIT","_id":"@alanse/clickup-multi-mcp-server@1.0.0","maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"homepage":"https://github.com/da-okazaki/clickup-multi-mcp-server#readme","bugs":{"url":"https://github.com/da-okazaki/clickup-multi-mcp-server/issues"},"bin":{"clickup-mcp-server":"build/index.js"},"dist":{"shasum":"5a428b1ba6a0dd8ca322015264dd535ce2862ccc","tarball":"https://registry.npmjs.org/@alanse/clickup-multi-mcp-server/-/clickup-multi-mcp-server-1.0.0.tgz","fileCount":56,"integrity":"sha512-M6ULTOe0ZEr9DPBeq5w1X7uQZAUXWka3vn7xMsmRLuXgP2fMTCPGusP1MVVnHmsNZp9pKNvbqSLBWozeIaGtlA==","signatures":[{"sig":"MEUCIGIydRnqd2Q3tiMvmjxnV1QwyusAlGMhIJvRZ205+e8rAiEA8o24Qi8PWAaR4XwrPa0Yx9pw7Z1U2TbjU8m3Tha+jWI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":547582},"main":"build/index.js","type":"module","engines":{"node":">=18.0.0 <23.0.0"},"gitHead":"8ce39b394c51971d0da0da968b463fa56d7a0824","scripts":{"dev":"tsc -w","build":"tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"","start":"node build/index.js","prepare":"npm run build"},"_npmUser":{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"},"repository":{"url":"git+https://github.com/da-okazaki/clickup-multi-mcp-server.git","type":"git"},"_npmVersion":"11.5.1","description":"ClickUp MCP Server with Multi-Workspace Support - Integrate multiple ClickUp workspaces with AI through Model Context Protocol","directories":{},"_nodeVersion":"24.5.0","dependencies":{"zod":"^3.23.8","cors":"^2.8.5","axios":"^1.6.7","dotenv":"^16.5.0","express":"^5.1.0","@modelcontextprotocol/sdk":"^1.11.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/cors":"^2.8.17","@types/node":"^20.11.16","@types/express":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/clickup-multi-mcp-server_1.0.0_1760799625654_0.6898224162553985","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alanse/clickup-multi-mcp-server","version":"1.0.1","keywords":["clickup","mcp","ai","tasks","project-management","model-context-protocol","clickup-server","clickup-mcp-server","task-management","productivity","automation","workflow","team-collaboration","artificial-intelligence","project-tracking","task-tracking","project-planning","clickup-integration","clickup-api","clickup-automation","task-organization","project-organization"],"author":{"name":"Daichi Okazaki（Alanse）"},"license":"MIT","_id":"@alanse/clickup-multi-mcp-server@1.0.1","maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"homepage":"https://github.com/da-okazaki/clickup-multi-mcp-server#readme","bugs":{"url":"https://github.com/da-okazaki/clickup-multi-mcp-server/issues"},"bin":{"clickup-mcp-server":"build/index.js"},"dist":{"shasum":"6f49b87341c8db6310bb46083775d29cba55d282","tarball":"https://registry.npmjs.org/@alanse/clickup-multi-mcp-server/-/clickup-multi-mcp-server-1.0.1.tgz","fileCount":56,"integrity":"sha512-MDH2a4ATF7aqlEiC4z1EJT9MstYQTJF4b+yQUF3zTOT4CnZw3RlcLtHhbMCMbsEeaLsFkmttfGKG6jfJf9i2qQ==","signatures":[{"sig":"MEQCIGt4yHKwOk9TwIjI+Uo9nbLZH29R5nZO1aFtCHLVcBDeAiBOyOoVG7Kqlg6n5gWznUBfaaAXdWK7EDOzNs1mc7zKxw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":547719},"main":"build/index.js","type":"module","engines":{"node":">=18.0.0 <23.0.0"},"gitHead":"192770e872e82bd4abe5e3cd18c5aca86923def1","scripts":{"dev":"tsc -w","build":"tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"","start":"node build/index.js","prepare":"npm run build"},"_npmUser":{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"},"repository":{"url":"git+https://github.com/da-okazaki/clickup-multi-mcp-server.git","type":"git"},"_npmVersion":"11.5.1","description":"ClickUp MCP Server with Multi-Workspace Support - Integrate multiple ClickUp workspaces with AI through Model Context Protocol","directories":{},"_nodeVersion":"24.5.0","dependencies":{"zod":"^3.23.8","cors":"^2.8.5","axios":"^1.6.7","dotenv":"^16.5.0","express":"^5.1.0","@modelcontextprotocol/sdk":"^1.11.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/cors":"^2.8.17","@types/node":"^20.11.16","@types/express":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/clickup-multi-mcp-server_1.0.1_1760804851945_0.456032560126695","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@alanse/clickup-multi-mcp-server","version":"1.0.2","keywords":["clickup","mcp","ai","tasks","project-management","model-context-protocol","clickup-server","clickup-mcp-server","task-management","productivity","automation","workflow","team-collaboration","artificial-intelligence","project-tracking","task-tracking","project-planning","clickup-integration","clickup-api","clickup-automation","task-organization","project-organization"],"author":{"name":"Daichi Okazaki（Alanse）"},"license":"MIT","_id":"@alanse/clickup-multi-mcp-server@1.0.2","maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"homepage":"https://github.com/da-okazaki/clickup-multi-mcp-server#readme","bugs":{"url":"https://github.com/da-okazaki/clickup-multi-mcp-server/issues"},"bin":{"clickup-mcp-server":"build/index.js"},"dist":{"shasum":"72fd57e0155847aa3ff7948d5b0f9d157e37e960","tarball":"https://registry.npmjs.org/@alanse/clickup-multi-mcp-server/-/clickup-multi-mcp-server-1.0.2.tgz","fileCount":57,"integrity":"sha512-NJbPdIal3vPFOQR56qA2S/GpTuVlqRrJdSajK6T08lN6s6cMYDzm77W9KxFeIYjG5VyX9bKn/o4fIin6iTcQ8A==","signatures":[{"sig":"MEUCIQCnpiX6CQFqckVsGbx0ZnKj/jQUsDGMZxcSADUX8PnvawIgWDOtCsbyIdlkaNsI6JoMbWhvnlsMZoK3bvaAT8qzhXk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":563303},"main":"build/index.js","type":"module","engines":{"node":">=18.0.0 <23.0.0"},"gitHead":"99168f94002a11c97c541497feaa16774bf6edd1","scripts":{"dev":"tsc -w","build":"tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"","start":"node build/index.js","prepare":"npm run build"},"_npmUser":{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"},"repository":{"url":"git+https://github.com/da-okazaki/clickup-multi-mcp-server.git","type":"git"},"_npmVersion":"11.5.1","description":"ClickUp MCP Server with Multi-Workspace Support - Integrate multiple ClickUp workspaces with AI through Model Context Protocol","directories":{},"_nodeVersion":"24.5.0","dependencies":{"zod":"^3.23.8","cors":"^2.8.5","axios":"^1.6.7","dotenv":"^16.5.0","express":"^5.1.0","@modelcontextprotocol/sdk":"^1.11.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/cors":"^2.8.17","@types/node":"^20.11.16","@types/express":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/clickup-multi-mcp-server_1.0.2_1768082902552_0.09081513744366054","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@alanse/clickup-multi-mcp-server","version":"1.1.0","keywords":["clickup","mcp","ai","tasks","project-management","model-context-protocol","clickup-server","clickup-mcp-server","task-management","productivity","automation","workflow","team-collaboration","artificial-intelligence","project-tracking","task-tracking","project-planning","clickup-integration","clickup-api","clickup-automation","task-organization","project-organization"],"author":{"name":"Daichi Okazaki（Alanse）"},"license":"MIT","_id":"@alanse/clickup-multi-mcp-server@1.1.0","maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"homepage":"https://github.com/alanse-inc/clickup-multi-mcp-server#readme","bugs":{"url":"https://github.com/alanse-inc/clickup-multi-mcp-server/issues"},"bin":{"clickup-mcp-server":"build/index.js"},"dist":{"shasum":"1392f4099924652e73df57b58b18c930bf6a8143","tarball":"https://registry.npmjs.org/@alanse/clickup-multi-mcp-server/-/clickup-multi-mcp-server-1.1.0.tgz","fileCount":61,"integrity":"sha512-0rCqsb/6hRvLHoAbAehrJIFRpj3du71kL5R2F0hxeq4cXWjeJvvLADxX/Ed6EfXk44hCuYHbWKAfrwpWkVSrOQ==","signatures":[{"sig":"MEUCIQC+bgqZBhRuzqjhqsFcoO/rQj8KV+lnwdhoHRgB59TQsgIgao6vCXYFLdNYM11W7+ISsWgRqoQ1k8LxM9r/K7TF4ls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":627467},"main":"build/index.js","type":"module","engines":{"node":">=18.0.0 <23.0.0"},"gitHead":"4225194f1c2f584081310579906ba206d6d3aa01","scripts":{"dev":"tsc -w","build":"tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"","start":"node build/index.js","prepare":"npm run build"},"_npmUser":{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"},"repository":{"url":"git+https://github.com/alanse-inc/clickup-multi-mcp-server.git","type":"git"},"_npmVersion":"11.5.1","description":"ClickUp MCP Server with Multi-Workspace Support - Integrate multiple ClickUp workspaces with AI through Model Context Protocol","directories":{},"_nodeVersion":"24.5.0","dependencies":{"zod":"^3.23.8","cors":"^2.8.5","axios":"^1.6.7","dotenv":"^16.5.0","express":"^5.1.0","@modelcontextprotocol/sdk":"^1.11.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.3.3","@types/cors":"^2.8.17","@types/node":"^20.11.16","@types/express":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/clickup-multi-mcp-server_1.1.0_1768134674547_0.8183149326351085","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@alanse/clickup-multi-mcp-server","version":"1.2.0","description":"ClickUp MCP Server with Multi-Workspace Support - Integrate multiple ClickUp workspaces with AI through Model Context Protocol","type":"module","main":"build/index.js","bin":{"clickup-mcp-server":"build/index.js"},"scripts":{"build":"tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\"","start":"node build/index.js","dev":"tsc -w","prepare":"npm run build","test":"vitest run","test:watch":"vitest"},"keywords":["clickup","mcp","ai","tasks","project-management","model-context-protocol","clickup-server","clickup-mcp-server","task-management","productivity","automation","workflow","team-collaboration","artificial-intelligence","project-tracking","task-tracking","project-planning","clickup-integration","clickup-api","clickup-automation","task-organization","project-organization"],"author":{"name":"Daichi Okazaki（Alanse）"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/alanse-inc/clickup-multi-mcp-server.git"},"bugs":{"url":"https://github.com/alanse-inc/clickup-multi-mcp-server/issues"},"homepage":"https://github.com/alanse-inc/clickup-multi-mcp-server#readme","dependencies":{"@modelcontextprotocol/sdk":"^1.11.3","axios":"^1.6.7","cors":"^2.8.5","dotenv":"^16.5.0","express":"^5.1.0","zod":"^3.23.8"},"devDependencies":{"@types/cors":"^2.8.17","@types/express":"^5.0.1","@types/node":"^20.11.16","typescript":"^5.3.3","vitest":"^4.1.4"},"engines":{"node":">=18.0.0 <23.0.0"},"publishConfig":{"access":"public"},"_id":"@alanse/clickup-multi-mcp-server@1.2.0","gitHead":"a037e699c6ed30d82deb2aef714ee112e3ea9cf4","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"integrity":"sha512-/H3a1pi4+CJ0E3MLzwOdohi5NGK34/dIgMxYeZGggOy9yP2E+CIuBB0NdYNg296CyPAeQAa0kX8F7OiQW03pEA==","shasum":"40ee397f43c21ba7f9a7db63fff9b7e26a030cd1","tarball":"https://registry.npmjs.org/@alanse/clickup-multi-mcp-server/-/clickup-multi-mcp-server-1.2.0.tgz","fileCount":71,"unpackedSize":725933,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDWifNoAWbkfdR4+uolvuWxI5dtixsZ7IcZUj5cIeNoyQIgB+2ohkCo7dYF+AXvTAU+DTX1Te5pfM0D30HsqVgALGw="}]},"_npmUser":{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"},"directories":{},"maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/clickup-multi-mcp-server_1.2.0_1778284287088_0.6323486640607352"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-18T15:00:25.539Z","modified":"2026-05-08T23:51:27.406Z","1.0.0":"2025-10-18T15:00:25.871Z","1.0.1":"2025-10-18T16:27:32.151Z","1.0.2":"2026-01-10T22:08:22.713Z","1.1.0":"2026-01-11T12:31:14.687Z","1.2.0":"2026-05-08T23:51:27.266Z"},"bugs":{"url":"https://github.com/alanse-inc/clickup-multi-mcp-server/issues"},"author":{"name":"Daichi Okazaki（Alanse）"},"license":"MIT","homepage":"https://github.com/alanse-inc/clickup-multi-mcp-server#readme","keywords":["clickup","mcp","ai","tasks","project-management","model-context-protocol","clickup-server","clickup-mcp-server","task-management","productivity","automation","workflow","team-collaboration","artificial-intelligence","project-tracking","task-tracking","project-planning","clickup-integration","clickup-api","clickup-automation","task-organization","project-organization"],"repository":{"type":"git","url":"git+https://github.com/alanse-inc/clickup-multi-mcp-server.git"},"description":"ClickUp MCP Server with Multi-Workspace Support - Integrate multiple ClickUp workspaces with AI through Model Context Protocol","maintainers":[{"name":"alanse-daichi","email":"daichi.okazaki@alanse.co.jp"}],"readme":"<p align=\"center\">\n  <img src=\"assets/images/clickup-social.png\" alt=\"ClickUp Multi-Workspace MCP Server\" width=\"100%\">\n</p>\n\n<h1 align=\"center\">ClickUp Multi-Workspace MCP Server</h1>\n\n<p align=\"center\">\n  <a href=\"https://github.com/alanse-inc/clickup-multi-mcp-server/stargazers\">\n    <img src=\"https://img.shields.io/github/stars/alanse-inc/clickup-multi-mcp-server?style=flat&logo=github\" alt=\"GitHub Stars\">\n  </a>\n  <a href=\"https://www.npmjs.com/package/@alanse/clickup-multi-mcp-server\">\n    <img src=\"https://img.shields.io/npm/v/@alanse/clickup-multi-mcp-server.svg?style=flat&logo=npm\" alt=\"NPM Version\">\n  </a>\n</p>\n\n<p align=\"center\">\n  A Model Context Protocol (MCP) server for integrating <strong>multiple ClickUp workspaces</strong> with AI applications. This server allows AI agents to interact with tasks, spaces, lists, and folders across different ClickUp workspaces through a standardized protocol.\n</p>\n\n## 🎯 Key Feature: Multi-Workspace Support\n\nThis MCP server supports managing multiple ClickUp workspaces simultaneously, allowing you to:\n- Work with multiple ClickUp accounts/teams\n- Switch between workspaces seamlessly\n- Maintain separate configurations for each workspace\n- Full backwards compatibility with single workspace setup\n\nDeveloped and maintained by Alanse Inc.\n\n## Requirements\n\n- **Node.js v18.0.0 or higher** (required for MCP SDK compatibility)\n- ClickUp API key and Team ID for each workspace you want to integrate\n\n## Quick Start\n\n### Claude Code CLI Setup\n\nThe easiest way to add this MCP server to Claude Code:\n\n**Single Workspace:**\n```bash\nclaude mcp add clickup \\\n  -e CLICKUP_API_KEY=your_api_key_here \\\n  -e CLICKUP_TEAM_ID=your_team_id_here \\\n  -- npx -y @alanse/clickup-multi-mcp-server@latest\n```\n\n**Multiple Workspaces:**\n```bash\nclaude mcp add clickup \\\n  -e CLICKUP_WORKSPACES='{\"default\":\"work\",\"workspaces\":{\"work\":{\"token\":\"pk_xxx_work\",\"teamId\":\"123456\"},\"personal\":{\"token\":\"pk_xxx_personal\",\"teamId\":\"789012\"}}}' \\\n  -- npx -y @alanse/clickup-multi-mcp-server@latest\n```\n\n### Manual Configuration\n\n### Single Workspace (Backwards Compatible)\n\nThe traditional single workspace setup still works exactly as before:\n\n```json\n{\n  \"mcpServers\": {\n    \"ClickUp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@alanse/clickup-multi-mcp-server@latest\"],\n      \"env\": {\n        \"CLICKUP_API_KEY\": \"your-api-key\",\n        \"CLICKUP_TEAM_ID\": \"your-team-id\"\n      }\n    }\n  }\n}\n```\n\n### Multiple Workspaces (New Feature)\n\nConfigure multiple workspaces using the `CLICKUP_WORKSPACES` environment variable.\n\n**Step 1: Create your workspace configuration**\n\nCreate a JSON structure like this:\n\n```json\n{\n  \"default\": \"work\",\n  \"workspaces\": {\n    \"work\": {\n      \"token\": \"pk_xxx_work\",\n      \"teamId\": \"123456\",\n      \"description\": \"Work workspace\"\n    },\n    \"personal\": {\n      \"token\": \"pk_xxx_personal\",\n      \"teamId\": \"789012\",\n      \"description\": \"Personal projects\"\n    }\n  }\n}\n```\n\n**Step 2: Use in your MCP settings**\n\nYou can specify the configuration in a more readable multi-line format:\n\n```jsonc\n{\n  \"mcpServers\": {\n    \"ClickUp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@alanse/clickup-multi-mcp-server@latest\"],\n      \"env\": {\n        // Multi-line format (most readable)\n        \"CLICKUP_WORKSPACES\": {\n          \"default\": \"work\",\n          \"workspaces\": {\n            \"work\": {\n              \"token\": \"pk_xxx_work\",\n              \"teamId\": \"123456\",\n              \"description\": \"Work workspace\"\n            },\n            \"personal\": {\n              \"token\": \"pk_xxx_personal\",\n              \"teamId\": \"789012\",\n              \"description\": \"Personal projects\"\n            }\n          }\n        }\n      }\n    }\n  }\n}\n```\n\nOr as a JSON string (if your MCP client requires string format):\n\n```json\n{\n  \"mcpServers\": {\n    \"ClickUp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@alanse/clickup-multi-mcp-server@latest\"],\n      \"env\": {\n        \"CLICKUP_WORKSPACES\": \"{\\\"default\\\":\\\"work\\\",\\\"workspaces\\\":{\\\"work\\\":{\\\"token\\\":\\\"pk_xxx_work\\\",\\\"teamId\\\":\\\"123456\\\"},\\\"personal\\\":{\\\"token\\\":\\\"pk_xxx_personal\\\",\\\"teamId\\\":\\\"789012\\\"}}}\"\n      }\n    }\n  }\n}\n```\n\n**💡 Tip:** Use an online JSON minifier and then escape the quotes, or use a script to generate the escaped string:\n\n```javascript\nconst config = {\n  default: \"work\",\n  workspaces: {\n    work: { token: \"pk_xxx_work\", teamId: \"123456\", description: \"Work workspace\" },\n    personal: { token: \"pk_xxx_personal\", teamId: \"789012\", description: \"Personal projects\" }\n  }\n};\nconsole.log(JSON.stringify(config));\n// Copy the output and use it as CLICKUP_WORKSPACES value\n```\n\n### Using Workspace Parameter\n\nAll tools now support an optional `workspace` parameter:\n\n```typescript\n// Get tasks from default workspace\nawait getTasks({ list_id: \"123456789\" });\n\n// Get tasks from specific workspace\nawait getTasks({ workspace: \"personal\", list_id: \"987654321\" });\n\n// Get workspace hierarchy for a specific workspace\nawait getWorkspaceHierarchy({ workspace: \"work\" });\n```\n\n## Local Development Setup\n\nFor local development or when running the server directly from source code:\n\n### 1. Clone and Install\n\n```bash\ngit clone https://github.com/alanse-inc/clickup-multi-mcp-server.git\ncd clickup-multi-mcp-server\nnpm install\n```\n\n### 2. Configure Environment Variables\n\nCopy `.env.example` to `.env` and configure your ClickUp credentials:\n\n```bash\ncp .env.example .env\n```\n\nEdit `.env` file:\n\n```bash\n# Multi-workspace configuration\nCLICKUP_WORKSPACES={\"default\":\"alanse\",\"workspaces\":{\"alanse\":{\"token\":\"pk_YOUR_TOKEN_1\",\"teamId\":\"YOUR_TEAM_ID_1\",\"description\":\"Alanse workspace\"},\"potz\":{\"token\":\"pk_YOUR_TOKEN_2\",\"teamId\":\"YOUR_TEAM_ID_2\",\"description\":\"Potz workspace\"}}}\n\n# Or use single workspace (legacy)\n# CLICKUP_API_KEY=your_api_key_here\n# CLICKUP_TEAM_ID=your_team_id_here\n```\n\n**Note**: The `.env` file is automatically loaded when the server starts. Environment variables in `.env` are automatically picked up without needing to pass them via command line.\n\n### 3. Build and Run\n\n```bash\n# Build the project\nnpm run build\n\n# Run locally\nnode build/index.js\n```\n\n### 4. Configure Claude Code for Local Development\n\nIf you want to use your local build with Claude Code, update `~/.claude.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"clickup\": {\n      \"type\": \"stdio\",\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/clickup-multi-mcp-server/build/index.js\"]\n    }\n  }\n}\n```\n\n**Important**: When using local build with Claude Code:\n- Environment variables are loaded from `.env` file in the project root\n- No need to specify `env` in `~/.claude.json` (unless you want to override `.env` values)\n- Rebuild after making changes: `npm run build`\n\n## NPM Installation\n\nThis package is available on npm as `@alanse/clickup-multi-mcp-server`.\n\nAdd this entry to your client's MCP settings JSON file:\n\n```json\n{\n  \"mcpServers\": {\n    \"ClickUp\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@alanse/clickup-multi-mcp-server@latest\"\n      ],\n      \"env\": {\n        \"CLICKUP_API_KEY\": \"your-api-key\",\n        \"CLICKUP_TEAM_ID\": \"your-team-id\",\n        \"DOCUMENT_SUPPORT\": \"true\"\n      }\n    }\n  }\n}\n```\n\nOr use this npx command:\n\n`npx -y @alanse/clickup-multi-mcp-server@latest --env CLICKUP_API_KEY=your-api-key --env CLICKUP_TEAM_ID=your-team-id`\n\n**Obs: if you don't pass \"DOCUMENT_SUPPORT\": \"true\", the default is false and document support will not be active.**\n\n### Tool Filtering\n\nYou can control which tools are available using two complementary environment variables:\n\n#### ENABLED_TOOLS (Recommended)\nUse `ENABLED_TOOLS` to specify exactly which tools should be available:\n```bash\n# Environment variable\nexport ENABLED_TOOLS=\"create_task,get_task,update_task,get_workspace_hierarchy\"\n\n# Command line argument\n--env ENABLED_TOOLS=create_task,get_task,update_task,get_workspace_hierarchy\n```\n\n#### DISABLED_TOOLS (Legacy)\nUse `DISABLED_TOOLS` to disable specific tools while keeping all others enabled:\n```bash\n# Environment variable\nexport DISABLED_TOOLS=\"delete_task,delete_bulk_tasks\"\n\n# Command line argument\n--env DISABLED_TOOLS=delete_task,delete_bulk_tasks\n```\n\n#### Precedence Rules\n- If `ENABLED_TOOLS` is specified, only those tools will be available (takes precedence over `DISABLED_TOOLS`)\n- If only `DISABLED_TOOLS` is specified, all tools except those listed will be available\n- If neither is specified, all tools are available (default behavior)\n\n**Example:**\n```bash\n# Only enable task creation and reading tools\nnpx -y @alanse/clickup-multi-mcp-server@latest \\\n  --env CLICKUP_API_KEY=your-api-key \\\n  --env CLICKUP_TEAM_ID=your-team-id \\\n  --env ENABLED_TOOLS=create_task,get_task,get_workspace_hierarchy\n```\n\nPlease filter tools you don't need if you are having issues with the number of tools or any context limitations.\n\n## Running with HTTP Transport Support\n\nThe server supports both modern **HTTP Streamable** transport (MCP Inspector compatible) and legacy **SSE (Server-Sent Events)** transport for backwards compatibility.\n\n```json\n{\n  \"mcpServers\": {\n    \"ClickUp\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@alanse/clickup-multi-mcp-server@latest\"\n      ],\n      \"env\": {\n        \"CLICKUP_API_KEY\": \"your-api-key\",\n        \"CLICKUP_TEAM_ID\": \"your-team-id\",\n        \"ENABLE_SSE\": \"true\",\n        \"PORT\": \"3231\"\n      }\n    }\n  }\n}\n```\n\n**Endpoints:**\n- **Primary**: `http://127.0.0.1:3231/mcp` (Streamable HTTP)\n- **Legacy**: `http://127.0.0.1:3231/sse` (SSE for backwards compatibility)\n\n### Command Line Usage\n\n```bash\nnpx -y @alanse/clickup-multi-mcp-server@latest --env CLICKUP_API_KEY=your-api-key --env CLICKUP_TEAM_ID=your-team-id --env ENABLE_SSE=true --env PORT=3231\n```\n\nAvailable configuration options:\n\n| Option | Description | Default |\n| ------ | ----------- | ------- |\n| `ENABLED_TOOLS` | Comma-separated list of tools to enable (takes precedence) | All tools |\n| `DISABLED_TOOLS` | Comma-separated list of tools to disable | None |\n| `ENABLE_SSE` | Enable the HTTP/SSE transport | `false` |\n| `PORT` | Port for the HTTP server | `3231` |\n| `ENABLE_STDIO` | Enable the STDIO transport | `true` |\n| `ENABLE_SECURITY_FEATURES` | Enable security headers and logging | `false` |\n| `ENABLE_HTTPS` | Enable HTTPS/TLS encryption | `false` |\n| `ENABLE_ORIGIN_VALIDATION` | Validate Origin header against whitelist | `false` |\n| `ENABLE_RATE_LIMIT` | Enable rate limiting protection | `false` |\n\n### 🔒 Security Features\n\nThe server includes optional security enhancements for production deployments. All security features are **opt-in** and **disabled by default** to maintain backwards compatibility.\n\n**Quick security setup:**\n```bash\n# Generate SSL certificates for HTTPS\n./scripts/generate-ssl-cert.sh\n\n# Start with full security\nENABLE_SECURITY_FEATURES=true \\\nENABLE_HTTPS=true \\\nENABLE_ORIGIN_VALIDATION=true \\\nENABLE_RATE_LIMIT=true \\\nSSL_KEY_PATH=./ssl/server.key \\\nSSL_CERT_PATH=./ssl/server.crt \\\nnpx @alanse/clickup-multi-mcp-server@latest --env CLICKUP_API_KEY=your-key --env CLICKUP_TEAM_ID=your-team --env ENABLE_SSE=true\n```\n\n**HTTPS Endpoints:**\n- **Primary**: `https://127.0.0.1:3443/mcp` (Streamable HTTPS)\n- **Legacy**: `https://127.0.0.1:3443/sse` (SSE HTTPS for backwards compatibility)\n- **Health**: `https://127.0.0.1:3443/health` (Health check)\n\nFor detailed security configuration, see [Security Features Documentation](docs/security-features.md).\n\n#### n8n Integration\n\nTo integrate with n8n:\n\n1. Start the clickup-mcp-server with SSE enabled\n2. In n8n, add a new \"MCP AI Tool\" node\n3. Configure the node with:\n   - Transport: SSE\n   - Server URL: `http://localhost:3231` (or your server address)\n   - Tools: Select the ClickUp tools you want to use\n\n#### Example Client\n\nAn example SSE client is provided in the `examples` directory. To run it:\n\n```bash\n# Start the server with SSE enabled\nENABLE_SSE=true PORT=3231 npx -y @alanse/clickup-multi-mcp-server@latest --env CLICKUP_API_KEY=your-api-key --env CLICKUP_TEAM_ID=your-team-id\n\n# In another terminal, run the example client\ncd examples\nnpm install\nnpm run sse-client\n```\n\n## Features\n\n| 📝 Task Management                                                                                                                                                                                                                                                   | 🏷️ Tag Management                                                                                                                                                                                                                                                        |\n| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| • Create, update, and delete tasks<br>• Move and duplicate tasks anywhere<br>• Support for single and bulk operations<br>• Set start/due dates with natural language<br>• Create and manage subtasks<br>• Add comments and attachments | • Create, update, and delete space tags<br>• Add and remove tags from tasks<br>• Use natural language color commands<br>• Automatic contrasting foreground colors<br>• View all space tags<br>• Tag-based task organization across workspace |\n| ⏱️ **Time Tracking**                                                                                                                                                                                                                                          | 🌳 **Workspace Organization**                                                                                                                                                                                                                                         |\n| • View time entries for tasks<br>• Start/stop time tracking on tasks<br>• Add manual time entries<br>• Delete time entries<br>• View currently running timer<br>• Track billable and non-billable time                                 | • Navigate spaces, folders, and lists<br>• Create and manage folders<br>• Organize lists within spaces<br>• Create lists in folders<br>• View workspace hierarchy<br>• Efficient path navigation                                             |\n| 📄 **Document Management**                                                                                                                                                                                                                                      | 👥 **Member Management**                                                                                                                                                                                                                                             |\n| • Document Listing through all workspace<br>• Document Page listing<br>• Document Page Details<br>• Document Creation<br>• Document page update (append & prepend)                                                                       | • Find workspace members by name or email<br>• Resolve assignees for tasks<br>• View member details and permissions<br>• Assign tasks to users during creation and updates<br>• Support for user IDs, emails, or usernames<br>• Team-wide user management                            |\n| 👁️ **View Management**                                                                                                                                                                                                                                          | |\n| • Create and manage views across all hierarchy levels (Workspace, Space, Folder, List)<br>• Support for list, board, calendar, table, gantt, timeline, workload and more<br>• Update view grouping, sorting, and filter settings<br>• Delete views<br>• Retrieve tasks within a specific view (with pagination) | |\n| ⚡ **Integration Features**                                                                                                                                                                                                                                      | 🏗️ **Architecture & Performance**                                                                                                                                                                                                                                        |\n| • Global name or ID-based lookups<br>• Case-insensitive matching<br>• Markdown formatting support<br>• Built-in rate limiting<br>• Error handling and validation<br>• Comprehensive API coverage                                             | • **70% codebase reduction** for improved performance<br>• **Unified architecture** across all transport types<br>• **Zero code duplication**<br>• **HTTP Streamable transport** (MCP Inspector compatible)<br>• **Legacy SSE support** for backwards compatibility |\n\n## Available Tools (81 Total, 74 non-document)\n\n| Tool                                                               | Description                     | Required Parameters                                                                                                          |\n| ------------------------------------------------------------------ | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |\n| [get_workspace_hierarchy](docs/user-guide.md#workspace-navigation) | Get workspace structure         | None                                                                                                                         |\n| [get_available_workspaces](docs/user-guide.md#workspace-navigation) | Get all available workspaces    | None                                                                                                                         |\n| [create_task](docs/user-guide.md#task-management)                  | Create a task                   | `name`, (`listId`/`listName`)                                                                                          |\n| [create_bulk_tasks](docs/user-guide.md#task-management)            | Create multiple tasks           | `tasks[]`                                                                                                                  |\n| [update_task](docs/user-guide.md#task-management)                  | Modify task                     | `taskId`/`taskName`                                                                                                      |\n| [update_bulk_tasks](docs/user-guide.md#task-management)            | Update multiple tasks           | `tasks[]` with IDs or names                                                                                                |\n| [get_tasks](docs/user-guide.md#task-management)                    | Get tasks from list             | `listId`/`listName`                                                                                                      |\n| [get_task](docs/user-guide.md#task-management)                     | Get single task details         | `taskId`/`taskName` (with smart disambiguation)                                                                          |\n| [get_workspace_tasks](docs/user-guide.md#task-management)          | Get tasks with filtering        | At least one filter (tags, list_ids, space_ids, etc.)                                                                        |\n| [get_task_comments](docs/user-guide.md#task-management)            | Get comments on a task          | `taskId`/`taskName`                                                                                                      |\n| [create_task_comment](docs/user-guide.md#task-management)          | Add a comment to a task         | `commentText`, (`taskId`/(`taskName`+`listName`))                                                                    |\n| [attach_task_file](docs/user-guide.md#task-management)             | Attach file to a task           | `taskId`/`taskName`, (`file_data` or `file_url`)                                                                     |\n| [delete_task](docs/user-guide.md#task-management)                  | Remove task                     | `taskId`/`taskName`                                                                                                      |\n| [delete_bulk_tasks](docs/user-guide.md#task-management)            | Remove multiple tasks           | `tasks[]` with IDs or names                                                                                                |\n| [move_task](docs/user-guide.md#task-management)                    | Move task                       | `taskId`/`taskName`, `listId`/`listName`                                                                             |\n| [move_bulk_tasks](docs/user-guide.md#task-management)              | Move multiple tasks             | `tasks[]` with IDs or names, target list                                                                                   |\n| [duplicate_task](docs/user-guide.md#task-management)               | Copy task                       | `taskId`/`taskName`, `listId`/`listName`                                                                             |\n| [merge_task](docs/user-guide.md#task-management)                   | Merge two tasks                 | `taskId`, `mergeFromId`                                                                                                  |\n| [get_task_time_in_status](docs/user-guide.md#task-management)      | Get time in status for a task   | `taskId`/`taskName`                                                                                                      |\n| [get_bulk_tasks_time_in_status](docs/user-guide.md#task-management)| Get bulk time in status         | `taskIds[]`                                                                                                              |\n| [add_task_to_list](docs/user-guide.md#list-management)             | Add task to additional list     | `listId`, `taskId`                                                                                                       |\n| [remove_task_from_list](docs/user-guide.md#list-management)        | Remove task from list           | `listId`, `taskId`                                                                                                       |\n| [create_list](docs/user-guide.md#list-management)                  | Create list in space            | `name`, `spaceId`/`spaceName`                                                                                          |\n| [create_folder](docs/user-guide.md#folder-management)              | Create folder                   | `name`, `spaceId`/`spaceName`                                                                                          |\n| [create_list_in_folder](docs/user-guide.md#list-management)        | Create list in folder           | `name`, `folderId`/`folderName`                                                                                        |\n| [get_folder](docs/user-guide.md#folder-management)                 | Get folder details              | `folderId`/`folderName`                                                                                                  |\n| [update_folder](docs/user-guide.md#folder-management)              | Update folder properties        | `folderId`/`folderName`                                                                                                  |\n| [delete_folder](docs/user-guide.md#folder-management)              | Delete folder                   | `folderId`/`folderName`                                                                                                  |\n| [get_list](docs/user-guide.md#list-management)                     | Get list details                | `listId`/`listName`                                                                                                      |\n| [update_list](docs/user-guide.md#list-management)                  | Update list properties          | `listId`/`listName`                                                                                                      |\n| [delete_list](docs/user-guide.md#list-management)                  | Delete list                     | `listId`/`listName`                                                                                                      |\n| [get_space_tags](docs/user-guide.md#tag-management)                | Get space tags                  | `spaceId`/`spaceName`                                                                                                    |\n| [create_space_tag](docs/user-guide.md#tag-management)              | Create tag                      | `tagName`, `spaceId`/`spaceName`                                                                                       |\n| [update_space_tag](docs/user-guide.md#tag-management)              | Update tag                      | `tagName`, `spaceId`/`spaceName`                                                                                       |\n| [delete_space_tag](docs/user-guide.md#tag-management)              | Delete tag                      | `tagName`, `spaceId`/`spaceName`                                                                                       |\n| [add_tag_to_task](docs/user-guide.md#tag-management)               | Add tag to task                 | `tagName`, `taskId`/(`taskName`+`listName`)                                                                          |\n| [remove_tag_from_task](docs/user-guide.md#tag-management)          | Remove tag from task            | `tagName`, `taskId`/(`taskName`+`listName`)                                                                          |\n| [get_task_time_entries](docs/user-guide.md#time-tracking)          | Get time entries for a task     | `taskId`/`taskName`                                                                                                      |\n| [start_time_tracking](docs/user-guide.md#time-tracking)            | Start time tracking on a task   | `taskId`/`taskName`                                                                                                      |\n| [stop_time_tracking](docs/user-guide.md#time-tracking)             | Stop current time tracking      | None                                                                                                                         |\n| [add_time_entry](docs/user-guide.md#time-tracking)                 | Add manual time entry to a task | `taskId`/`taskName`, `start`, `duration`                                                                             |\n| [delete_time_entry](docs/user-guide.md#time-tracking)              | Delete a time entry             | `timeEntryId`                                                                                                              |\n| [get_current_time_entry](docs/user-guide.md#time-tracking)         | Get currently running timer     | None                                                                                                                         |\n| [get_workspace_members](docs/user-guide.md#member-management)      | Get all workspace members       | None                                                                                                                         |\n| [find_member_by_name](docs/user-guide.md#member-management)        | Find member by name or email    | `nameOrEmail`                                                                                                               |\n| [resolve_assignees](docs/user-guide.md#member-management)          | Resolve member names to IDs     | `assignees[]`                                                                                                              |\n| [create_document](docs/user-guide.md#document-management)          | Create a document               | `workspaceId`, `name`, `parentId`/`parentType`, `visibility`, `create_pages`                                     |\n| [get_document](docs/user-guide.md#document-management)             | Get a document                  | `workspaceId`/`documentId`                                                                                               |\n| [list_documents](docs/user-guide.md#document-management)           | List documents                  | `workspaceId`, `documentId`/`creator`/`deleted`/`archived`/`parent_id`/`parent_type`/`limit`/`next_cursor` |\n| [list_document_pages](docs/user-guide.md#document-management)      | List document pages             | `documentId`/`documentName`                                                                                              |\n| [get_document_pages](docs/user-guide.md#document-management)       | Get document pages              | `documentId`/`documentName`, `pageIds`                                                                                 |\n| [create_document_pages](docs/user-guide.md#document-management)    | Create a document page          | `workspaceId`/`documentId`, `parent_page_id`/`name`/`sub_title`,`content`/`content_format`                     |\n| [update_document_page](docs/user-guide.md#document-management)     | Update a document page          | `workspaceId`/`documentId`, `name`/`sub_title`,`content`/`content_edit_mode`/`content_format`                  |\n\nSee [full documentation](docs/user-guide.md) for optional parameters and advanced usage.\n\n## Member Management Tools\n\nWhen creating or updating tasks, you can assign users using the `assignees` parameter. The parameter accepts an array of user IDs, emails, or usernames:\n\n**Creating tasks with assignees:**\n```json\n{\n  \"name\": \"New Task\",\n  \"description\": \"This is a new task.\",\n  \"assignees\": [\"jdoe@example.com\", \"Jane Smith\"]  // Emails, usernames, or user IDs\n}\n```\n\n**Updating task assignees:**\n```json\n{\n  \"taskId\": \"abc123\",\n  \"assignees\": [\"newuser@example.com\"]  // Replace existing assignees\n}\n```\n\nThe member management tools help resolve user references when needed.\n\n## Prompts\n\nNot yet implemented and not supported by all client apps. Request a feature for a Prompt implementation that would be most beneficial for your workflow (without it being too specific). Examples:\n\n| Prompt                                             | Purpose                   | Features                                  |\n| -------------------------------------------------- | ------------------------- | ----------------------------------------- |\n| [summarize_tasks](docs/user-guide.md#prompts)      | Task overview             | Status summary, priorities, relationships |\n| [analyze_priorities](docs/user-guide.md#prompts)   | Priority optimization     | Distribution analysis, sequencing         |\n| [generate_description](docs/user-guide.md#prompts) | Task description creation | Objectives, criteria, dependencies        |\n\n## Error Handling\n\nThe server provides clear error messages for:\n\n- Missing required parameters\n- Invalid IDs or names\n- Items not found\n- Permission issues\n- API errors\n- Rate limiting\n\nThe `LOG_LEVEL` environment variable can be specified to control the verbosity of server logs. Valid values are `trace`, `debug`, `info`, `warn`, and `error` (default).\nThis can be also be specified on the command line as, e.g. `--env LOG_LEVEL=info`.\n\n\n## License\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","readmeFilename":"README.md"}