Skip to main content
Glama
JLKmach

ServiceNow MCP Server

by JLKmach

list_scrum_tasks

Retrieve scrum tasks from ServiceNow with filters for state, assignment group, timeframe, and custom queries to manage agile workflows.

Instructions

List scrum tasks from ServiceNow

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of records to return
offsetNoOffset to start from
stateNoFilter by state
assignment_groupNoFilter by assignment group
timeframeNoFilter by timeframe (upcoming, in-progress, completed)
queryNoAdditional query string

Implementation Reference

  • The main handler function that implements the list_scrum_tasks tool logic, querying the ServiceNow API for scrum tasks based on parameters.
    def list_scrum_tasks( auth_manager: AuthManager, server_config: ServerConfig, params: Dict[str, Any], ) -> Dict[str, Any]: """ List scrum tasks from ServiceNow. Args: auth_manager: The authentication manager. server_config: The server configuration. params: The parameters for listing scrum tasks. Returns: A list of scrum tasks. """ # Unwrap and validate parameters result = _unwrap_and_validate_params( params, ListScrumTasksParams ) if not result["success"]: return result validated_params = result["params"] # Build the query query_parts = [] if validated_params.state: query_parts.append(f"state={validated_params.state}") if validated_params.assignment_group: query_parts.append(f"assignment_group={validated_params.assignment_group}") # Handle timeframe filtering if validated_params.timeframe: now = datetime.now().strftime("%Y-%m-%d %H:%M:%S") if validated_params.timeframe == "upcoming": query_parts.append(f"start_date>{now}") elif validated_params.timeframe == "in-progress": query_parts.append(f"start_date<{now}^end_date>{now}") elif validated_params.timeframe == "completed": query_parts.append(f"end_date<{now}") # Add any additional query string if validated_params.query: query_parts.append(validated_params.query) # Combine query parts query = "^".join(query_parts) if query_parts else "" # Get the instance URL instance_url = _get_instance_url(auth_manager, server_config) if not instance_url: return { "success": False, "message": "Cannot find instance_url in either server_config or auth_manager", } # Get the headers headers = _get_headers(auth_manager, server_config) if not headers: return { "success": False, "message": "Cannot find get_headers method in either auth_manager or server_config", } # Make the API request url = f"{instance_url}/api/now/table/rm_scrum_task" params = { "sysparm_limit": validated_params.limit, "sysparm_offset": validated_params.offset, "sysparm_query": query, "sysparm_display_value": "true", } try: response = requests.get(url, headers=headers, params=params) response.raise_for_status() result = response.json() # Handle the case where result["result"] is a list scrum_tasks = result.get("result", []) count = len(scrum_tasks) return { "success": True, "scrum_tasks": scrum_tasks, "count": count, "total": count, # Use count as total if total is not provided } except requests.exceptions.RequestException as e: logger.error(f"Error listing stories: {e}") return { "success": False, "message": f"Error listing stories: {str(e)}", }
  • Pydantic model defining the input parameters for the list_scrum_tasks tool, including filters like limit, offset, state, etc.
    class ListScrumTasksParams(BaseModel): """Parameters for listing scrum tasks.""" limit: Optional[int] = Field(10, description="Maximum number of records to return") offset: Optional[int] = Field(0, description="Offset to start from") state: Optional[str] = Field(None, description="Filter by state") assignment_group: Optional[str] = Field(None, description="Filter by assignment group") timeframe: Optional[str] = Field(None, description="Filter by timeframe (upcoming, in-progress, completed)") query: Optional[str] = Field(None, description="Additional query string")
  • Registration of the list_scrum_tasks tool in the central tool definitions dictionary, mapping name to implementation, params model, description, etc.
    "list_scrum_tasks": ( list_scrum_tasks_tool, ListScrumTasksParams, str, # Expects JSON string "List scrum tasks from ServiceNow", "json", # Tool returns list/dict ),
  • Import statements that bring in the list_scrum_tasks function and ListScrumTasksParams model for use in tool registration.
    from servicenow_mcp.tools.scrum_task_tools import ( CreateScrumTaskParams, UpdateScrumTaskParams, ListScrumTasksParams, ) from servicenow_mcp.tools.scrum_task_tools import ( create_scrum_task as create_scrum_task_tool, update_scrum_task as update_scrum_task_tool, list_scrum_tasks as list_scrum_tasks_tool, )
  • Import of list_scrum_tasks into the tools package __init__.py, exposing it for broader use.
    from servicenow_mcp.tools.scrum_task_tools import ( create_scrum_task, update_scrum_task, list_scrum_tasks, )

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/JLKmach/servicenow-mcp'

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