clickup-mcp
clickup-mcp
ClickUp MCP-Server für Claude – stellt ClickUp-Aufgaben, Spaces, Ordner, Listen und Kommentare als MCP-Tools bereit.
Technologie-Stack: Python 3.12 + uv + FastMCP (Starlette/FastAPI)
Schnellstart
# Install dependencies
cd D:\leo\mcp-server\clickup-mcp
uv sync
# Run in stdio mode (for Claude Desktop)
$env:CLICKUP_API_TOKEN="pk_xxxxx"
uv run clickup-mcpRelated MCP server: Clickup Universal MCP Server
Konfiguration
Kopieren Sie .env.example nach .env und füllen Sie Ihre Werte ein:
Variable | Standard | Beschreibung |
| — | Persönlicher ClickUp-API-Token ( |
|
|
|
|
|
|
|
| HTTP-Server-Port |
|
| API-Basis-URL |
Holen Sie sich Ihren API-Token: ClickUp → Einstellungen → Apps → API-Token
Claude Desktop Einrichtung
Fügen Sie zu claude_desktop_config.json hinzu:
{
"mcpServers": {
"clickup": {
"command": "uv",
"args": ["run", "--directory", "D:/leo/mcp-server/clickup-mcp", "clickup-mcp"],
"env": {
"CLICKUP_API_TOKEN": "pk_xxxxx"
}
}
}
}Transportmodi
stdio (Claude Desktop / CLI)
$env:CLICKUP_API_TOKEN="pk_xxxxx"
uv run clickup-mcpHTTP – Einzelmandant
$env:CLICKUP_API_TOKEN="pk_xxxxx"
$env:MCP_TRANSPORT="http"
$env:MCP_HTTP_PORT="8080"
uv run clickup-mcpHTTP – Gateway / Mehrfachmandant
$env:MCP_TRANSPORT="http"
$env:AUTH_MODE="gateway"
uv run clickup-mcp
# Each request must include: X-Clickup-Token: pk_xxxxxVerfügbare Tools (28)
Tool | Beschreibung |
| Alle Arbeitsbereiche/Teams auflisten |
| Arbeitsbereichsmitglieder auflisten, reduziert auf id/username/email/team_id/role – lösen Sie die E-Mail einer Person in die user_id auf, die |
| Spaces in einem Arbeitsbereich auflisten |
| Space-Details abrufen |
| Ordner in einem Space auflisten |
| Ordnerlose Listen in einem Space auflisten |
| Ordnerdetails abrufen |
| Listen in einem Ordner auflisten |
| Einen Ordner erstellen |
| Einen Ordner aktualisieren |
| Einen Ordner löschen |
| Listendetails abrufen |
| Liste in einem Ordner erstellen |
| Liste in einem Space erstellen |
| Eine Liste aktualisieren |
| Aufgabe anhand der ID abrufen |
| Aufgaben mit Filtern durchsuchen (einzelner Arbeitsbereich, team_id erforderlich) |
| Aufgaben einer Person in ALLEN sichtbaren Arbeitsbereichen in einem Aufruf auflisten, per E-Mail oder user_id – kein team_id, keine manuelle Paginierung/Deduplizierung nötig |
| Eine Aufgabe erstellen |
| Eine Aufgabe aktualisieren |
| Eine Aufgabe löschen |
| Aufgabe in eine andere Liste verschieben |
| Aufgabenkommentare abrufen |
| Einen Kommentar zu einer Aufgabe hinzufügen |
| Eine einzelne Seite aus einem Dokument (v3) abrufen |
| Eine Datei (z. B. ein Bild) als Anhang an eine Aufgabe hochladen |
| Eine Datei hochladen und in einem Aufruf inline in einem neuen Aufgabenkommentar posten |
| Alle EOS-Rocks (quartalsweise Ziele) organisationsweit in einem Aufruf auflisten, normalisiert auf eine feste Status-Enum |
Die ClickUp-Benutzer-ID einer Person finden
Verwenden Sie clickup_list_members. Die native GET /team-Antwort von ClickUp enthält eine
vollständige Mitgliederliste pro Team (teams[].members[].user.{id,username,email}), aber
clickup_get_workspaces entfernt diese, um die Antwort klein zu halten, daher ist es nicht
der richtige Ort, um Personen nachzuschlagen. clickup_list_members liest denselben
zugrundeliegenden Endpunkt und projiziert die Mitgliederliste in eine flache, zweckgerichtete
Form (id/username/email/team_id/role), sodass Aufrufer sie nicht selbst aus dem
vollständigen Arbeitsbereichs-/Team-Objekt extrahieren müssen. clickup_list_tasks_for_person
verwendet intern dieselbe zugrundeliegende Suche, um email -> user_id aufzulösen.
Bekannte Lücke: Das ClickUp-Teammitglied-Objekt hat kein zuverlässiges Feld "ist dieses Mitglied
deaktiviert" – clickup_list_members gibt kein active-Feld zurück,
da nichts Reales dahinterstehen würde (das einzige status-Feld, das
im Rohobjekt vorhanden ist, invited_by.status, beschreibt den Einladenden, nicht das
Mitglied).
clickup_search_tasks gibt bereits status.type zurück
Wie jedes andere Lesetool hier geben clickup_search_tasks und
clickup_get_task das rohe ClickUp-Aufgabenobjekt unverändert weiter –
einschließlich des type-Felds des status-Objekts (open / custom / closed /
done), das die einzige zuverlässige Möglichkeit ist, festzustellen, ob ein
benutzerdefinierter Status als erledigt gilt. Dafür war keine Codeänderung erforderlich; es
war bereits vorhanden. clickup_list_tasks_for_person zeigt es explizit als
status_type auf jeder zurückgegebenen Aufgabe zur Vereinfachung an.
Wie EOS-Rocks in diesem ClickUp-Arbeitsbereich dargestellt werden
Bestätigt am 18.08.2026 durch direkte Inspektion der Felder einer echten Rock-Aufgabe (nicht
geraten): Rocks sind normale ClickUp-Aufgaben, die sich in einer Liste mit dem Namen
"Rocks" befinden (gefunden unter Space "Company" > Ordner "EOS Traction"), die jeweils
dedizierte benutzerdefinierte Felder tragen: Quarter (Dropdown, "Q1 2024".."Q4 2026"),
Rocks Status (On Hold / Off Track / On Track / Completed / Blocked / At
Risk), Rock Type (Company / Individual / Departmental / Team Rock),
Department und Fortschritt entweder über Progress (manuell) oder Progress % (automatisch,
Checklisten-Zusammenfassung). Dies ist weder die ClickUp-Goals-API noch eine
einfache Aufgabenliste ohne Metadaten – es sind Aufgaben plus benutzerdefinierte Felder.
clickup_list_rocks_for_org findet jede Liste mit dem Namen "Rocks" (anhand des Namens,
nicht einer fest codierten ID, falls Spaces/Ordner neu organisiert werden) in jedem
für das Token sichtbaren Arbeitsbereich, liest diese Felder und normalisiert sie:
quarter: ClickUps "Q3 2026"-Label wird in2026-Q3umgewandelt (und zurück, für denquarter-Eingabefilter).status: ClickUps 6 Rohoptionen werden auf den 5-Werte-Vertrag abgebildet (on_track/off_track/done/missed/open) – siehe den_STATUS_MAP-Kommentar inrocks.pyfür die genaue Zuordnung und warummissednie ausgegeben wird (nichts in ClickUps Daten unterscheidet "Zeit abgelaufen" von generischem "off track"; die Ableitung aus einem überfälligen due_date wäre eine unbestätigte Geschäftslogik-Annahme, daher wird dies hier nicht gemacht).measurable: kein dediziertes Feld existiert in dieser Liste. Fallback auf die Aufgabenbeschreibung;null, wenn auch diese leer ist (niemals erfunden).weekly_status: es wurde keine strukturierte Quelle gefunden (weder ein benutzerdefiniertes Feld noch etwas, das von Kommentaren abgeleitet ist) – wird immer als[]zurückgegeben. Falls die Organisation dies auf andere Weise in ClickUp zu verfolgen beginnt, überprüfen Sie dies erneut.
Anhänge und Bilder
ClickUps REST-API hat keine Möglichkeit, eine Datei direkt an einen Kommentar anzuhängen –
nur an eine Aufgabe (POST /task/{task_id}/attachment, was
clickup_attach_task_file kapselt). Es gibt auch keinen Endpunkt zum Löschen/Aktualisieren von
Anhängen; erneutes Hochladen fügt einen neuen Anhang hinzu, anstatt den alten zu ersetzen,
und das Entfernen eines Anhangs erfordert die ClickUp-Web-/Desktop-App.
Bestätigt durch Überprüfung der Tool-Beschreibungen des offiziellen ClickUp-MCP-Servers –
derselbe Split (ein Create Task Comment-Tool ohne Anhangsunterstützung
und ein separates Attach File to Task-Tool).
Damit ein Bild inline in einem Kommentar angezeigt wird, ist der
zugrundeliegende Trick: Laden Sie die Datei zuerst zur Aufgabe hoch und verweisen Sie dann auf die
zurückgegebene URL aus der Dateiantwort mit der Markdown-Bildsyntax im
Kommentartext – ClickUps Kommentar-Renderer zeigt es als echtes Bild inline an,
nicht nur als Link. clickup_create_comment_with_image führt beide
Schritte in einem Aufruf aus:
clickup_create_comment_with_image(task_id, file_content_base64, filename)
# internally:
# 1. POST /task/{task_id}/attachment -> {"url": "...", ...}
# 2. POST /task/{task_id}/comment comment_text = ""Um es stattdessen manuell zu tun (z. B. um anderen Text um das Bild herum hinzuzufügen), rufen Sie die beiden Tools selbst auf:
1. result = clickup_attach_task_file(task_id, file_content_base64, filename)
-> result["url"] is the uploaded file's URL
2. clickup_create_task_comment(
task_id,
comment_text=f""
)API-Referenz
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides integration with ClickUp's API, allowing you to retrieve task information and manage ClickUp data through MCP-compatible clients.
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Clickup's project management tools through the MCP protocol, allowing task and project operations via natural language.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI applications to interact with ClickUp's project management API through the MCP protocol, supporting resources like Teams, Spaces, Goals, and Key Results.4MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage ClickUp workspaces, teams, spaces, folders, lists, tasks, and custom fields via 29 MCP tools with full CRUD operations.825MIT
Related MCP Connectors
ClickUp MCP — wraps the ClickUp REST API v2 (BYO API key)
Monday.com MCP — wraps the Monday.com GraphQL API (BYO API key)
Manage feature requests, votes, roadmaps, and changelogs from any MCP client.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MSPbotsAI/clickup-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server