Skip to main content
Glama
javerthl

ServiceNow MCP Server

by javerthl

get_user

Retrieve specific user details from ServiceNow using user ID, username, or email address to access user information and manage user records.

Instructions

Get a specific user in ServiceNow

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
emailNoEmail address of the user
user_idNoUser ID or sys_id
user_nameNoUsername of the user

Implementation Reference

  • Main handler function for the 'get_user' tool. Queries the ServiceNow sys_user table API using provided user_id, username, or email, returns user details or error.
    def get_user(
        config: ServerConfig,
        auth_manager: AuthManager,
        params: GetUserParams,
    ) -> dict:
        """
        Get a user from ServiceNow.
    
        Args:
            config: Server configuration.
            auth_manager: Authentication manager.
            params: Parameters for getting the user.
    
        Returns:
            Dictionary containing user details.
        """
        api_url = f"{config.api_url}/table/sys_user"
        query_params = {}
    
        # Build query parameters
        if params.user_id:
            query_params["sysparm_query"] = f"sys_id={params.user_id}"
        elif params.user_name:
            query_params["sysparm_query"] = f"user_name={params.user_name}"
        elif params.email:
            query_params["sysparm_query"] = f"email={params.email}"
        else:
            return {"success": False, "message": "At least one search parameter is required"}
    
        query_params["sysparm_limit"] = "1"
        query_params["sysparm_display_value"] = "true"
    
        # Make request
        try:
            response = requests.get(
                api_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 {"success": False, "message": "User not found"}
    
            return {"success": True, "message": "User found", "user": result[0]}
    
        except requests.RequestException as e:
            logger.error(f"Failed to get user: {e}")
            return {"success": False, "message": f"Failed to get user: {str(e)}"}
  • Pydantic schema/model for input parameters to the get_user tool, supporting search by user_id, user_name, or email.
    class GetUserParams(BaseModel):
        """Parameters for getting a user."""
    
        user_id: Optional[str] = Field(None, description="User ID or sys_id")
        user_name: Optional[str] = Field(None, description="Username of the user")
        email: Optional[str] = Field(None, description="Email address of the user")
  • Registration of the 'get_user' tool in the central tool_definitions dictionary used by the MCP server to dynamically register tools, linking the handler, schema, description, and serialization method.
    "get_user": (
        get_user_tool,
        GetUserParams,
        Dict[str, Any],  # Expects dict
        "Get a specific user in ServiceNow",
        "raw_dict",
    ),

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