Skip to main content
Glama

remove_group_members

Remove specified users from a group in ServiceNow by providing the group ID and list of user sys_ids or usernames. Simplifies group management via the ServiceNow MCP Server.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
paramsYes

Implementation Reference

  • The main handler function that implements the logic to remove members from a ServiceNow group by finding and deleting sys_user_grmember records.
    def remove_group_members( config: ServerConfig, auth_manager: AuthManager, params: RemoveGroupMembersParams, ) -> GroupResponse: """ Remove members from a group in ServiceNow. Args: config: Server configuration. auth_manager: Authentication manager. params: Parameters for removing members from the group. Returns: Response with the result of the operation. """ success = True failed_members = [] for member in params.members: # Get user ID if username is provided user_id = member if not member.startswith("sys_id:"): user = get_user(config, auth_manager, GetUserParams(user_name=member)) if not user.get("success"): user = get_user(config, auth_manager, GetUserParams(email=member)) if user.get("success"): user_id = user.get("user", {}).get("sys_id") else: success = False failed_members.append(member) continue # Find and delete the group membership api_url = f"{config.api_url}/table/sys_user_grmember" query_params = { "sysparm_query": f"group={params.group_id}^user={user_id}", "sysparm_limit": "1", } try: # First find the membership record 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: success = False failed_members.append(member) continue # Then delete the membership record membership_id = result[0].get("sys_id") delete_url = f"{api_url}/{membership_id}" response = requests.delete( delete_url, headers=auth_manager.get_headers(), timeout=config.timeout, ) response.raise_for_status() except requests.RequestException as e: logger.error(f"Failed to remove member '{member}' from group: {e}") success = False failed_members.append(member) if failed_members: message = f"Some members could not be removed from the group: {', '.join(failed_members)}" else: message = "All members removed from the group successfully" return GroupResponse( success=success, message=message, group_id=params.group_id, )
  • Pydantic model defining the input parameters for the remove_group_members tool.
    class RemoveGroupMembersParams(BaseModel): """Parameters for removing members from a group.""" group_id: str = Field(..., description="Group ID or sys_id") members: List[str] = Field( ..., description="List of user sys_ids or usernames to remove as members" )
  • Registration of the tool in the central tool definitions dictionary used by the MCP server, including function, params, description.
    "remove_group_members": ( remove_group_members_tool, RemoveGroupMembersParams, Dict[str, Any], # Expects dict "Remove members from an existing group in ServiceNow", "raw_dict", ),
  • Import of the remove_group_members function into the tools package namespace.
    remove_group_members,
  • Helper function used by remove_group_members to resolve usernames or emails to user sys_ids.
    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)}"}

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