Skip to main content
Glama
javerthl

ServiceNow MCP Server

by javerthl

update_user

Modify user details in ServiceNow, including name, email, department, roles, and account status, using the user ID to identify the record.

Instructions

Update an existing user in ServiceNow

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
activeNoWhether the user account is active
departmentNoDepartment the user belongs to
emailNoEmail address of the user
first_nameNoFirst name of the user
last_nameNoLast name of the user
locationNoLocation of the user
managerNoManager of the user (sys_id or username)
mobile_phoneNoMobile phone number of the user
passwordNoPassword for the user account
phoneNoPhone number of the user
rolesNoRoles to assign to the user
titleNoJob title of the user
user_idYesUser ID or sys_id to update
user_nameNoUsername for the user

Implementation Reference

  • Main handler function that implements the logic for updating a ServiceNow user via API PATCH request, handling optional fields, password updates, role assignments, and error handling.
    def update_user( config: ServerConfig, auth_manager: AuthManager, params: UpdateUserParams, ) -> UserResponse: """ Update an existing user in ServiceNow. Args: config: Server configuration. auth_manager: Authentication manager. params: Parameters for updating the user. Returns: Response with the updated user details. """ api_url = f"{config.api_url}/table/sys_user/{params.user_id}" # Build request data data = {} if params.user_name: data["user_name"] = params.user_name if params.first_name: data["first_name"] = params.first_name if params.last_name: data["last_name"] = params.last_name if params.email: data["email"] = params.email if params.title: data["title"] = params.title if params.department: data["department"] = params.department if params.manager: data["manager"] = params.manager if params.phone: data["phone"] = params.phone if params.mobile_phone: data["mobile_phone"] = params.mobile_phone if params.location: data["location"] = params.location if params.password: data["user_password"] = params.password if params.active is not None: data["active"] = str(params.active).lower() # Make request try: response = requests.patch( api_url, json=data, headers=auth_manager.get_headers(), timeout=config.timeout, ) response.raise_for_status() result = response.json().get("result", {}) # Handle role assignments if provided if params.roles: assign_roles_to_user(config, auth_manager, params.user_id, params.roles) return UserResponse( success=True, message="User updated successfully", user_id=result.get("sys_id"), user_name=result.get("user_name"), ) except requests.RequestException as e: logger.error(f"Failed to update user: {e}") return UserResponse( success=False, message=f"Failed to update user: {str(e)}", )
  • Pydantic BaseModel defining the input schema/parameters for the update_user tool, including all updatable user fields.
    class UpdateUserParams(BaseModel): """Parameters for updating a user.""" user_id: str = Field(..., description="User ID or sys_id to update") user_name: Optional[str] = Field(None, description="Username for the user") first_name: Optional[str] = Field(None, description="First name of the user") last_name: Optional[str] = Field(None, description="Last name of the user") email: Optional[str] = Field(None, description="Email address of the user") title: Optional[str] = Field(None, description="Job title of the user") department: Optional[str] = Field(None, description="Department the user belongs to") manager: Optional[str] = Field(None, description="Manager of the user (sys_id or username)") roles: Optional[List[str]] = Field(None, description="Roles to assign to the user") phone: Optional[str] = Field(None, description="Phone number of the user") mobile_phone: Optional[str] = Field(None, description="Mobile phone number of the user") location: Optional[str] = Field(None, description="Location of the user") password: Optional[str] = Field(None, description="Password for the user account") active: Optional[bool] = Field(None, description="Whether the user account is active")
  • Tool registration entry in the get_tool_definitions() function's dictionary, mapping 'update_user' to its handler, schema, return type hint, description, and serialization method for MCP server usage.
    "update_user": ( update_user_tool, UpdateUserParams, Dict[str, Any], # Expects dict "Update an existing user in ServiceNow", "raw_dict", ),
  • Import and export of update_user function in the tools package __init__.py, making it available for import in tool_utils.py.
    from servicenow_mcp.tools.user_tools import ( create_user, update_user, get_user, list_users, create_group, update_group, add_group_members, remove_group_members, list_groups, )

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

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