Skip to main content
Glama
JLKmach

ServiceNow MCP Server

by JLKmach

resolve_incident

Resolve ServiceNow incidents by providing resolution codes and notes to close tickets and document solutions.

Instructions

Resolve an incident in ServiceNow

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
incident_idYesIncident ID or sys_id
resolution_codeYesResolution code for the incident
resolution_notesYesResolution notes for the incident

Implementation Reference

  • The main handler function that implements the logic to resolve an incident in ServiceNow by updating its state to resolved, setting close_code and close_notes.
    def resolve_incident( config: ServerConfig, auth_manager: AuthManager, params: ResolveIncidentParams, ) -> IncidentResponse: """ Resolve an incident in ServiceNow. Args: config: Server configuration. auth_manager: Authentication manager. params: Parameters for resolving the incident. Returns: Response with the result of the operation. """ # Determine if incident_id is a number or sys_id incident_id = params.incident_id if len(incident_id) == 32 and all(c in "0123456789abcdef" for c in incident_id): # This is likely a sys_id api_url = f"{config.api_url}/table/incident/{incident_id}" else: # This is likely an incident number # First, we need to get the sys_id try: query_url = f"{config.api_url}/table/incident" query_params = { "sysparm_query": f"number={incident_id}", "sysparm_limit": 1, } response = requests.get( query_url, params=query_params, headers=auth_manager.get_headers(), timeout=config.timeout, ) response.raise_for_status() result = response.json().get("result", []) if not result: return IncidentResponse( success=False, message=f"Incident not found: {incident_id}", ) incident_id = result[0].get("sys_id") api_url = f"{config.api_url}/table/incident/{incident_id}" except requests.RequestException as e: logger.error(f"Failed to find incident: {e}") return IncidentResponse( success=False, message=f"Failed to find incident: {str(e)}", ) # Build request data data = { "state": "6", # Resolved "close_code": params.resolution_code, "close_notes": params.resolution_notes, "resolved_at": "now", } # Make request try: response = requests.put( api_url, json=data, headers=auth_manager.get_headers(), timeout=config.timeout, ) response.raise_for_status() result = response.json().get("result", {}) return IncidentResponse( success=True, message="Incident resolved successfully", incident_id=result.get("sys_id"), incident_number=result.get("number"), ) except requests.RequestException as e: logger.error(f"Failed to resolve incident: {e}") return IncidentResponse( success=False, message=f"Failed to resolve incident: {str(e)}", )
  • Pydantic model defining the input parameters for the resolve_incident tool: incident_id, resolution_code, resolution_notes.
    class ResolveIncidentParams(BaseModel): """Parameters for resolving an incident.""" incident_id: str = Field(..., description="Incident ID or sys_id") resolution_code: str = Field(..., description="Resolution code for the incident") resolution_notes: str = Field(..., description="Resolution notes for the incident")
  • Registration of the resolve_incident tool in the central tool definitions dictionary, including the aliased function, params model, description, and serialization method.
    "resolve_incident": ( resolve_incident_tool, ResolveIncidentParams, str, "Resolve an incident in ServiceNow", "str", ),
  • Import of resolve_incident from incident_tools.py in the tools package __init__.py, making it available for export.
    from servicenow_mcp.tools.incident_tools import ( add_comment, create_incident, list_incidents, resolve_incident, update_incident, )

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