Skip to main content
Glama
ScrumDoLLC

scrumdo-mcp

Official
by ScrumDoLLC

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SCRUMDO_ORGNoYour organization slug.
SCRUMDO_TOKENYesRequired. API token from Settings → API Tokens.
SCRUMDO_PROJECTNoDefault project slug.
SCRUMDO_BASE_URLNoAPI base URL. Default: https://app.spryng.io

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
list_boardsA

List all boards (projects) in the organisation.

Returns each board's slug, name, description, and member count. Use get_board() for full detail on a specific board.

get_boardA

Get a board (project) with its cells (columns), custom field definitions, and key statistics.

Args: project_slug: Board slug to fetch. Defaults to the configured project.

get_board_cellsA

List the columns (cells) of a board.

Each cell has an id, name, and position. Use the id when moving cards.

Args: project_slug: Board slug. Defaults to the configured project.

list_iterationsB

List all iterations (sprints / milestones) in the project.

Args: project_slug: Board slug. Defaults to the configured project.

list_labelsA

List all labels defined in the project.

Args: project_slug: Board slug. Defaults to the configured project.

list_epicsB

List all epics in the project.

Args: project_slug: Board slug. Defaults to the configured project.

list_blockersA

List all active (unresolved) blockers on a card.

Each blocker includes id, reason, blocked_date, blocker (user), is_show_stopper, and external flags.

Args: card_ref: Card reference, e.g. 'ON-914'.

block_cardA

Mark a card as blocked with a reason.

Creates a blocker record on the card. Multiple blockers can exist simultaneously; the card remains blocked until all are resolved.

Args: card_ref: Card reference, e.g. 'ON-914'. reason: Human-readable explanation of what is blocking the card. is_show_stopper: Flag this as a show-stopper blocker (default False). external: Flag as an external dependency (default False).

Returns the created blocker object including its id (needed to unblock).

unblock_cardA

Resolve (unblock) a specific blocker on a card.

If this was the last active blocker, the card's blocked flag is cleared. Use list_blockers() to find the blocker_id.

Args: card_ref: Card reference, e.g. 'ON-914'. blocker_id: Numeric blocker id from list_blockers(). resolution: Optional description of how the block was resolved.

Returns the resolved blocker object.

list_cardsA

List cards on the board with optional filters.

Args: cell_id: Filter by board column (cell) id. iteration_id: Filter by iteration/sprint id. assignee: Filter by assignee username or email. label: Filter by label name. status: Filter by status string. page: Page number (default 1). limit: Results per page (default 25, max 100).

Returns a dict with count, next/previous page URLs, and items list. Each item includes id, local_id, summary, points, cell, assignees, labels, extra_fields (custom fields), and created/updated timestamps.

get_cardA

Get a card's full detail including all custom fields, task list, comment count, labels, assignees, and linked cards.

Args: card_ref: The card reference, e.g. 'ON-914' or 'Q1-42'.

find_cardA

Find a card by its reference ID (e.g. 'ON-914'). Alias for get_card — useful when you only know the ID string.

Args: card_ref: Card reference like 'ON-914'.

create_cardB

Create a new card on the board.

Args: summary: Card title / summary (required). description: Rich text description (markdown supported). points: Story points / estimate. due_date: Due date in YYYY-MM-DD format. cell_id: Board column to place the card in. iteration_id: Iteration/sprint to assign the card to. assignee_ids: List of user IDs to assign. Use list_members() to find ids. label_ids: List of label IDs to attach. extra_fields: Custom field values as {field_id: value} dict.

Returns the full created card object including its assigned reference (e.g. 'ON-915').

update_cardA

Update one or more fields on an existing card.

Only the fields you provide will be changed — omitted fields are untouched.

Args: card_ref: Card reference, e.g. 'ON-914'. summary: New title. description: New description (markdown). points: New story points. due_date: Due date in YYYY-MM-DD format. Pass empty string to clear. iteration_id: Move card to this iteration/sprint id. Use list_iterations() to find ids. assignee_ids: Replace assignee list. Use list_members() to find ids. label_ids: Replace label list. extra_fields: Merge into existing custom fields. Existing keys not mentioned here will be preserved.

Returns the full updated card object.

move_cardA

Move a card to a different column (cell) on the board.

Args: card_ref: Card reference, e.g. 'ON-914'. cell_id: Target cell id. Use get_board_cells() to find cell ids.

Returns the updated card.

move_card_to_iterationA

Move a card into an iteration (sprint).

Args: card_ref: Card reference, e.g. 'ON-914'. iteration_id: Target iteration id. Use list_iterations() to find ids.

Returns the updated card.

set_card_fieldA

Set a single custom field on a card without touching other fields.

Args: card_ref: Card reference, e.g. 'ON-914'. field_id: Numeric custom field id. Use list_custom_fields() to look up ids. value: New field value (always a string).

Returns the updated card.

archive_cardB

Archive a card by moving it to the project's Archive iteration. The card is hidden from the board but recoverable via the archive view.

Args: card_ref: Card reference, e.g. 'ON-914'.

assign_cardA

Set the assignees on a card, replacing any current assignees.

Args: card_ref: Card reference, e.g. 'ON-914'. assignee_ids: List of user IDs. Pass an empty list to unassign all.

add_card_labelA

Add a single label to a card, preserving existing labels.

Args: card_ref: Card reference, e.g. 'ON-914'. label_id: Label id to add. Use list_labels() to find ids.

remove_card_labelA

Remove a single label from a card.

Args: card_ref: Card reference, e.g. 'ON-914'. label_id: Label id to remove.

list_tasksA

List all tasks (checklist items) on a card.

Args: card_ref: Card reference, e.g. 'ON-914'.

Returns a list of tasks, each with id, description, complete flag, assignee, and position.

create_taskA

Create a new task on a card.

Args: card_ref: Card reference, e.g. 'ON-914'. description: Task description (plain text or markdown). assignee_id: Optional user ID to assign the task to.

Returns the created task object.

complete_taskB

Mark a task as complete.

Args: card_ref: Card reference, e.g. 'ON-914'. task_id: Task id (from list_tasks).

reopen_taskA

Reopen (un-complete) a task.

Args: card_ref: Card reference, e.g. 'ON-914'. task_id: Task id (from list_tasks).

update_taskB

Update a task's description, completion state, or assignee.

Args: card_ref: Card reference, e.g. 'ON-914'. task_id: Task id (from list_tasks). description: New description (leave None to keep current). complete: True to complete, False to reopen. assignee_id: New assignee user id.

delete_taskA

Delete a task from a card.

Args: card_ref: Card reference, e.g. 'ON-914'. task_id: Task id (from list_tasks).

list_commentsA

List all comments on a card, newest first.

Args: card_ref: Card reference, e.g. 'ON-914'. The card's numeric id is resolved automatically.

Returns a list of comments with id, author, body (markdown), and created timestamp.

add_commentA

Post a comment on a card. Markdown is supported.

Args: card_ref: Card reference, e.g. 'ON-914'. body: Comment text (markdown). Code blocks, lists, and headers all render in the ScrumDo UI.

Returns the created comment object with id and timestamp.

delete_commentA

Delete a comment from a card.

Args: card_ref: Card reference, e.g. 'ON-914'. comment_id: Numeric comment id from list_comments().

list_custom_fieldsA

List all custom field definitions for the board.

Each field has an id, name, field_type, and optional choices. Use the id when calling set_card_field() or update_card(extra_fields=…).

Args: project_slug: Board slug. Defaults to the configured project.

get_card_fieldA

Get the current value of a single custom field on a card.

Args: card_ref: Card reference, e.g. 'ON-914'. field_id: Numeric custom field id from list_custom_fields().

Returns {'field_id': …, 'name': …, 'value': …} or {'field_id': …, 'value': null} if the field is not set.

get_all_card_fieldsA

Get all custom field values currently set on a card.

Returns the full list of custom fields with their names and current values.

Args: card_ref: Card reference, e.g. 'ON-914'.

list_membersA

List members of the organisation or a specific project.

Each member has an id, username, email, display_name, and role.

Args: project_slug: If provided, returns project-level members only. If omitted, returns all org members.

find_memberA

Find a member by name, username, or email.

Args: query: Name, username, or email fragment to search.

Returns matching members from the org member list.

search_cardsA

Full-text search across all cards in the organisation.

Searches card summaries, descriptions, and comments.

Args: query: Search string. Supports partial matches.

Returns a ranked list of matching cards with summary, reference, board name, and a short excerpt.

search_by_field_valueA

Find all cards where a custom field contains a given value.

Useful for finding cards tagged with a specific branch, PR URL, feature flag, or any other custom field content.

Args: field_id: Numeric custom field id from list_custom_fields(). value: Value to match (substring match, case-insensitive). limit: Maximum cards to scan (default 50).

Returns matching card objects.

log_activityA

Write a structured activity log entry to a card.

Entries are stored as machine-parseable comments and rendered in the ScrumDo UI as human-readable updates. They are filterable via get_activity_log().

Args: card_ref: Card reference, e.g. 'ON-914'. action: Short action label, e.g. 'started', 'deployed', 'reviewed', 'snapshot', 'seeded', 'PR opened'. detail: Longer description or context (markdown). agent: Agent/bot name writing the log (e.g. 'claude-code', 'codex', 'github-actions'). user: Human user involved (username or email). environment: Environment name (stage, integration, branch). milestone: Milestone or release tag, if applicable. task_ref: Related task or sub-item reference. extra: Any additional structured data to attach.

Returns the created comment object.

get_activity_logA

Get the structured activity log for a card, with optional filters.

Returns only entries written via log_activity() — plain comments are excluded. Results are newest-first.

Args: card_ref: Card reference, e.g. 'ON-914'. agent: Filter by agent name (substring, case-insensitive). user: Filter by user (substring, case-insensitive). action: Filter by action label (substring, case-insensitive). environment: Filter by environment name (exact). milestone: Filter by milestone tag (exact). limit: Maximum entries to return (default 50).

get_workspace_activityA

Get the activity log across ALL cards in the workspace.

Aggregates log_activity() entries from every card, sorted newest-first. Filterable by agent, user, action type, environment, and milestone.

This is the workspace-level view requested for board observability — answers questions like: • "What did claude-code do today?" • "What was deployed to stage this week?" • "Show me all activity on the book-kit milestone"

Args: action: Filter by action label (substring). agent: Filter by agent name (substring). user: Filter by user (substring). environment: Filter by environment (exact). milestone: Filter by milestone tag (exact). limit: Max entries across all cards (default 100).

NOTE: This scans recent cards; for large boards use per-card get_activity_log() for targeted queries.

list_webhooksA

List all webhooks configured on the project.

Returns each webhook's id, url, events, and active state.

create_webhookA

Create a new webhook on the project.

Args: url: HTTPS endpoint that will receive webhook POST requests. events: List of event names to subscribe to, e.g. ['story.created', 'story.updated', 'story.moved', 'task.completed', 'comment.created']. secret: Optional HMAC secret for payload signature verification.

Returns the created webhook object with its id.

delete_webhookA

Delete a webhook by id.

Args: webhook_id: Webhook id from list_webhooks().

list_time_entriesA

List time entries, optionally filtered to a specific card.

Args: card_ref: Card reference, e.g. 'ON-914'. If omitted, returns all project time entries.

log_timeA

Log time spent on a card.

Args: card_ref: Card reference, e.g. 'ON-914'. minutes: Time spent in minutes. description: What was done during this time. date: ISO date string (YYYY-MM-DD). Defaults to today. user_id: User to log time for. Defaults to the token owner.

Returns the created time entry.

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/ScrumDoLLC/scrumdo-mcp'

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