Skip to main content
Glama
JLKmach

ServiceNow MCP Server

by JLKmach

update_changeset

Modify an existing ServiceNow changeset by updating its name, description, state, or assigned developer to reflect current project requirements.

Instructions

Update an existing changeset in ServiceNow

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
changeset_idYesChangeset ID or sys_id
nameNoName of the changeset
descriptionNoDescription of the changeset
stateNoState of the changeset
developerNoDeveloper responsible for the changeset

Implementation Reference

  • The main handler function that executes the update_changeset tool. It validates parameters using UpdateChangesetParams, prepares a PATCH request to the ServiceNow sys_update_set table, and returns the updated changeset or error.
    def update_changeset(
        auth_manager: AuthManager,
        server_config: ServerConfig,
        params: Union[Dict[str, Any], UpdateChangesetParams],
    ) -> Dict[str, Any]:
        """
        Update an existing changeset in ServiceNow.
    
        Args:
            auth_manager: The authentication manager.
            server_config: The server configuration.
            params: The parameters for updating a changeset. Can be a dictionary or a UpdateChangesetParams object.
    
        Returns:
            The updated changeset.
        """
        # Unwrap and validate parameters
        result = _unwrap_and_validate_params(
            params, 
            UpdateChangesetParams, 
            required_fields=["changeset_id"]
        )
        
        if not result["success"]:
            return result
        
        validated_params = result["params"]
        
        # Prepare the request data
        data = {}
        
        # Add optional fields if provided
        if validated_params.name:
            data["name"] = validated_params.name
        if validated_params.description:
            data["description"] = validated_params.description
        if validated_params.state:
            data["state"] = validated_params.state
        if validated_params.developer:
            data["developer"] = validated_params.developer
        
        # If no fields to update, return error
        if not data:
            return {
                "success": False,
                "message": "No fields to update",
            }
        
        # 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",
            }
        
        # Add Content-Type header
        headers["Content-Type"] = "application/json"
        
        # Make the API request
        url = f"{instance_url}/api/now/table/sys_update_set/{validated_params.changeset_id}"
        
        try:
            response = requests.patch(url, json=data, headers=headers)
            response.raise_for_status()
            
            result = response.json()
            
            return {
                "success": True,
                "message": "Changeset updated successfully",
                "changeset": result["result"],
            }
        except requests.exceptions.RequestException as e:
            logger.error(f"Error updating changeset: {e}")
            return {
                "success": False,
                "message": f"Error updating changeset: {str(e)}",
            }
  • Pydantic BaseModel defining the input schema for the update_changeset tool, including required changeset_id and optional fields for update.
    class UpdateChangesetParams(BaseModel):
        """Parameters for updating a changeset."""
    
        changeset_id: str = Field(..., description="Changeset ID or sys_id")
        name: Optional[str] = Field(None, description="Name of the changeset")
        description: Optional[str] = Field(None, description="Description of the changeset")
        state: Optional[str] = Field(None, description="State of the changeset")
        developer: Optional[str] = Field(None, description="Developer responsible for the changeset")
  • MCP tool registration in get_tool_definitions() dictionary, associating 'update_changeset' name with its handler (aliased import), input schema, return type hint, description, and serialization method.
    "update_changeset": (
        update_changeset_tool,
        UpdateChangesetParams,
        str,  # Expects JSON string
        "Update an existing changeset in ServiceNow",
        "json_dict",  # Tool returns Pydantic model
    ),
  • Export of the update_changeset handler function from the tools package __init__ for easy import.
    update_changeset,

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