Skip to main content
Glama
asaphe
by asaphe

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MAX_RETRIESNoMax retry attempts for failed/rate-limited requests3
API_BASE_URLNoClickUp API base URLhttps://api.clickup.com/api/v2
WORKSPACE_IDYesYour ClickUp workspace (team) ID
REQUEST_TIMEOUTNoHTTP request timeout in seconds15.0
CLICKUP_API_TOKENYesPersonal API token from https://app.clickup.com/settings/apps
SPRINTS_FOLDER_IDNoFolder ID within the space that holds sprint lists. Required for sprint tools.
CLICKUP_TEAM_LABELSNoJSON mapping of team names to label IDs
DEVELOPMENT_SPACE_IDNoSpace ID containing your sprints. Required for sprint tools.
COMPONENT_TEAM_FIELD_IDNoCustom field ID for Component/Team labels

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_current_sprintA

Get the current sprint's info (list ID, name, date range).

Auto-detected by date. Cached per session — use refresh_sprint_cache if the sprint rolled over.

Requires DEVELOPMENT_SPACE_ID and SPRINTS_FOLDER_ID to be configured.

refresh_sprint_cacheA

Clear and re-fetch the cached sprint info.

Use when a sprint rolls over mid-session or if get_current_sprint returns stale data.

get_sprint_tasksA

List tasks in the current sprint, optionally filtered.

Includes tasks directly in the sprint list and tasks tagged for the sprint.

Args: assignee: Filter by assignee. Use "me" for the current user, or a username. status: Filter by status (e.g., "in progress", "done", "todo").

get_taskA

Get detailed info for a task.

Accepts custom IDs (DEV-1234) or UUIDs. Returns status, assignees, description, subtasks, priority, team label, and more.

Args: task_id: Task ID (custom like DEV-1234 or UUID). include_subtasks: Include subtask details (default: true).

create_taskA

Create a new task in a specific list.

For sprint tasks, prefer create_sprint_task which auto-resolves the sprint list.

Args: name: Task title. list_id: Target list ID. Use get_current_sprint or get_workspace_hierarchy to find IDs. Always required, but if parent_task_id names a task in a different list, the task is created there instead (ClickUp requires parent and child to share a list) — see list_id_override in the result. description: Task description (markdown supported). assignee_id: User ID to assign. Use get_current_user to find your ID. status: Initial status. Omitted unless given, so the target list's own default status applies. ClickUp configures status sets per list, so no value is safe to impose on an arbitrary list_id. points: Story points. team: Component/Team label. See list_teams for available values. parent_task_id: Parent task ID for creating subtasks. Its list wins over list_id when the two differ. priority: 1=urgent, 2=high, 3=normal, 4=low.

create_sprint_taskA

Create a task in the current sprint with sensible defaults.

Auto-resolves the current sprint list and (optionally) the current user. If parent_task_id lives in a different list than the current sprint, the task is created there instead (ClickUp requires parent and child to share a list) and will not appear in sprint queries — check list_id_override in the result.

Requires DEVELOPMENT_SPACE_ID and SPRINTS_FOLDER_ID to be configured.

Args: name: Task title. team: Component/Team label. See list_teams for available values. description: Task description. points: Story points. Omitted unless given. assign_to_me: Assign to the authenticated user (default: true). parent_task_id: Parent task ID (custom like DEV-1234 or UUID) for creating subtasks. status: Initial status. Omitted unless given, so the sprint list's own default status applies. Pass an explicit value to override it.

update_taskA

Update fields on a task. Only specified fields are changed.

Args: task_id: Task ID (custom like DEV-1234 or UUID). name: New task name. status: New status (e.g., "done", "in progress", "in review"). priority: 1=urgent, 2=high, 3=normal, 4=low. points: Story points. description: Replace entire description. Use append_description to add text instead. append_description: Append text to existing description (separated by newline). assignee_add: User ID to add as assignee. assignee_remove: User ID to remove from assignees. parent_task_id: Parent task ID to nest this task under (custom like DEV-1234 or UUID), including re-parenting a task that has never had a parent. Setting this also moves the task to the parent's list.

search_tasksA

Search tasks across the workspace.

Supports filtering by query text, status, assignee, list, and dates. Returns paginated results with has_more indicator.

Note: query is applied as a client-side filter after fetching each page from the API. The has_more flag reflects the API's pagination state, not whether additional matching results exist. Callers should continue paginating while has_more is true if they need exhaustive results.

Args: query: Text search query (client-side filtered — see note above). status: Filter by status(es). assignee_id: Filter by assignee user ID. Use get_current_user for your ID. list_id: Limit to a specific list. include_closed: Include closed/done tasks (default: false). date_created_after: ISO date or Unix millis — only tasks created after this. date_updated_after: ISO date or Unix millis — only tasks updated after this. page: Page number (0-indexed). Check has_more in response for pagination. subtasks: Include subtasks in results (default: false).

get_my_tasksA

Get tasks assigned to the current user across all lists.

Convenience wrapper around search_tasks with automatic user resolution.

Args: query: Text search query (client-side filtered — see search_tasks). status: Filter by status(es). list_id: Limit to a specific list. date_created_after: ISO date or Unix millis — only tasks created after this. date_updated_after: ISO date or Unix millis — only tasks updated after this. include_closed: Include closed/done tasks (default: false). page: Page number (0-indexed). subtasks: Include subtasks in results (default: true). Inverts search_tasks' own default, since a personal task list is mostly subtasks; pass false to match search_tasks.

get_list_tasksA

Get all tasks in a specific list (backlog, epic, tech debt, etc.).

Args: list_id: List ID. Use get_workspace_hierarchy to discover list IDs. status: Filter by status (e.g., "todo", "in progress"). include_closed: Include closed/done tasks (default: false). subtasks: Include subtasks in results (default: true). Inverts search_tasks' own default; pass false to match it.

move_task_to_listA

Move a task to a different list.

Args: task_id: Task ID (custom like DEV-1234 or UUID). list_id: Target list ID.

bulk_update_tasksA

Update multiple tasks at once. Verify the task_ids list before calling.

This is a convenience tool that applies the same update to multiple tasks. Partial failures are reported — some tasks may succeed while others fail.

Args: task_ids: List of task IDs (custom or UUID). Double-check before calling. status: Set status on all tasks. assignee_add: Add assignee (user ID) to all tasks. team: Set Component/Team label on all tasks. points: Set story points on all tasks.

ensure_task_fieldsA

Check (and optionally fix) that tasks have required fields set.

By default checks assignee, team, and points. Useful for sprint compliance.

Args: task_ids: List of task IDs to check. required_fields: Fields to check. Default: ["assignee", "team", "points"]. fix: If true, apply defaults to fill missing fields. If false, report only. default_assignee_id: User ID to assign if assignee is missing and fix=true. default_team: Team label to set if team is missing and fix=true. default_points: Points to set if missing and fix=true.

delete_taskA

Delete a task permanently. This action cannot be undone.

Args: task_id: Task ID, either a custom ID or ClickUp UUID.

add_task_commentA

Add a comment to a task.

Args: task_id: Task ID (custom like DEV-1234 or UUID). comment_text: Comment text (plain text).

get_task_commentsA

Get all comments on a task.

Args: task_id: Task ID (custom like DEV-1234 or UUID).

get_sprint_reportA

Generate a structured sprint status report.

Returns tasks grouped by assignee with status summary, at-risk flags, unassigned task warnings, and optionally linked GitHub PRs.

Requires DEVELOPMENT_SPACE_ID and SPRINTS_FOLDER_ID to be configured.

Args: team: Filter to a Component/Team label (e.g., "backend", "devops"). If omitted, includes all tasks in the sprint. Requires CLICKUP_TEAM_LABELS to be configured for filtering. include_pr_links: Extract GitHub PR links from task descriptions and comments (default: true). Adds latency for comment fetching.

get_current_userA

Get the current authenticated user's info (ID, username, email).

Cached per session. Use the ID for assignee operations.

get_workspace_hierarchyA

Browse the workspace folder/list hierarchy.

Returns folders and lists in the given space. Use this to discover list IDs for creating tasks or browsing backlogs.

Args: space_id: Space to browse. Defaults to the configured DEVELOPMENT_SPACE_ID. max_depth: How deep to recurse (1=folders only, 2=folders+lists, 3=+sublists).

task_urlA

Get the ClickUp URL for a task. Accepts custom IDs (DEV-1234) or UUIDs.

Args: task_id: Task ID (custom like DEV-1234 or UUID).

add_tag_to_taskB

Add a tag to a task.

Args: task_id: Task ID (custom like DEV-1234 or UUID). tag_name: Tag name to add.

list_teamsA

List available Component/Team labels and their IDs.

Use team names (lowercase) when creating or updating tasks with a team parameter. Returns the configured CLICKUP_TEAM_LABELS mapping, or an empty object if not configured.

check_team_labelsA

Audit configured team label IDs against live ClickUp field options.

Args: space_id: Space to check. Defaults to the configured development space.

create_docA

Create a native ClickUp Doc with one page of content, and return its URL.

Use this for shareable reports/RFCs that need real markdown tables and headers — a task description degrades tables and isn't a durable review surface. The doc is created PRIVATE by default; sharing it with specific people or the workspace is a separate step you take in the ClickUp UI, not something this tool does.

Two sequential API calls (create doc, then create its page) with no rollback: ClickUp's v3 Docs API exposes no delete endpoint for docs or pages, so if the page call fails after the doc call succeeds, an empty Doc is left behind — check the workspace for it if this raises. For the same reason, correcting a mistake (wrong content, a bad title) should use update_doc_page on the existing doc_id/page_id rather than calling create_doc again — a second create_doc call orphans the first Doc with no way to remove it.

Args: name: Doc title. content: Page body. Markdown by default (see content_format). parent_id: Space/Folder/List/Workspace ID to create the doc under. Defaults to the configured development space — which is a Space, so if parent_type is "workspace"/"everything" you must pass a matching parent_id explicitly or the doc lands in the wrong place. parent_type: One of "space", "folder", "list", "everything", "workspace" — must match what parent_id actually refers to. content_format: "text/md" (default) or "text/plain". visibility: "PRIVATE" (default), "PUBLIC", "PERSONAL", or "HIDDEN".

update_doc_pageA

Overwrite an existing Doc page's content in place, and return its URL.

Use this to correct a previously published Doc (wrong content, a bad title) instead of calling create_doc again — the v3 Docs API has no delete endpoint, so a second create_doc call orphans the first Doc with no way to remove it. This edits the original doc_id/page_id directly, so the existing URL keeps working.

Always replaces the full page content — the underlying API also supports append/prepend edit modes, but this tool doesn't expose them: the shared HTTP client retries transport failures, and a retry after a lost response (server applied the edit, client never saw it) would silently double-apply an append/prepend. A retried replace converges to the same content either way, so it's safe.

Args: doc_id: The Doc's ID, as returned by create_doc. page_id: The page's ID, as returned by create_doc. content: New page content, replacing the page in full. name: New page title. Leave unset to keep the existing title. content_format: "text/md" (default) or "text/plain".

get_docA

Get a Doc's metadata — name, parent location, visibility.

Use get_doc_page or get_doc_pages to read page content. ClickUp's public API has no Doc-comment endpoint, so this cannot retrieve comment threads on a Doc.

Args: doc_id: The Doc's ID, as returned by create_doc.

get_doc_pagesA

Get every page of a Doc, content included, as a flat list.

Use this to read a whole multi-page Doc in one call. Sub-pages (nested under a parent page in the ClickUp v3 response) are flattened into the same list alongside their parent, not dropped. For a single known page, get_doc_page avoids fetching pages you don't need.

Args: doc_id: The Doc's ID, as returned by create_doc. content_format: "text/md" (default) or "text/plain". max_page_depth: How many levels of nested sub-pages to include. -1 (default) returns every page.

get_doc_pageA

Get a single Doc page's content.

Mirrors update_doc_page's doc_id/page_id pair — most useful when you already have both IDs from a prior create_doc/update_doc_page call.

Args: doc_id: The Doc's ID, as returned by create_doc. page_id: The page's ID, as returned by create_doc. content_format: "text/md" (default) or "text/plain".

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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/asaphe/clickup-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server