Skip to main content
Glama
echelon-ai-labs

ServiceNow MCP Server

update_catalog_category

Update an existing service catalog category in ServiceNow, modifying attributes like title, description, icon, order, parent category, and active status using the Category ID or sys_id.

Instructions

Update an existing service catalog category.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
paramsYes

Implementation Reference

  • Main handler function that performs the PATCH request to update a ServiceNow service catalog category.
    def update_catalog_category(
        config: ServerConfig,
        auth_manager: AuthManager,
        params: UpdateCatalogCategoryParams,
    ) -> CatalogResponse:
        """
        Update an existing service catalog category in ServiceNow.
    
        Args:
            config: Server configuration
            auth_manager: Authentication manager
            params: Parameters for updating a catalog category
    
        Returns:
            Response containing the result of the operation
        """
        logger.info(f"Updating service catalog category: {params.category_id}")
        
        # Build the API URL
        url = f"{config.instance_url}/api/now/table/sc_category/{params.category_id}"
        
        # Prepare request body with only the provided parameters
        body = {}
        if params.title is not None:
            body["title"] = params.title
        if params.description is not None:
            body["description"] = params.description
        if params.parent is not None:
            body["parent"] = params.parent
        if params.icon is not None:
            body["icon"] = params.icon
        if params.active is not None:
            body["active"] = str(params.active).lower()
        if params.order is not None:
            body["order"] = str(params.order)
        
        # Make the API request
        headers = auth_manager.get_headers()
        headers["Accept"] = "application/json"
        headers["Content-Type"] = "application/json"
        
        try:
            response = requests.patch(url, headers=headers, json=body)
            response.raise_for_status()
            
            # Process the response
            result = response.json()
            category = result.get("result", {})
            
            # Format the response
            formatted_category = {
                "sys_id": category.get("sys_id", ""),
                "title": category.get("title", ""),
                "description": category.get("description", ""),
                "parent": category.get("parent", ""),
                "icon": category.get("icon", ""),
                "active": category.get("active", ""),
                "order": category.get("order", ""),
            }
            
            return CatalogResponse(
                success=True,
                message=f"Updated catalog category: {params.category_id}",
                data=formatted_category,
            )
        
        except requests.exceptions.RequestException as e:
            logger.error(f"Error updating catalog category: {str(e)}")
            return CatalogResponse(
                success=False,
                message=f"Error updating catalog category: {str(e)}",
                data=None,
            )
  • Pydantic model defining the input parameters for the update_catalog_category tool.
    class UpdateCatalogCategoryParams(BaseModel):
        """Parameters for updating a service catalog category."""
        
        category_id: str = Field(..., description="Category ID or sys_id")
        title: Optional[str] = Field(None, description="Title of the category")
        description: Optional[str] = Field(None, description="Description of the category")
        parent: Optional[str] = Field(None, description="Parent category sys_id")
        icon: Optional[str] = Field(None, description="Icon for the category")
        active: Optional[bool] = Field(None, description="Whether the category is active")
        order: Optional[int] = Field(None, description="Order of the category")
  • Registration of the tool in the central tool definitions dictionary used by the MCP server.
    "update_catalog_category": (
        update_catalog_category_tool,
        UpdateCatalogCategoryParams,
        str,  # Expects JSON string
        "Update an existing service catalog category.",
        "json_dict",  # Tool returns Pydantic model
    ),

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/echelon-ai-labs/servicenow-mcp'

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