add_group_members
Add users to an existing ServiceNow group by specifying group ID and member identifiers to manage group membership and access permissions.
Instructions
Add members to an existing group in ServiceNow
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | Group ID or sys_id | |
| members | Yes | List of user sys_ids or usernames to add as members |
Implementation Reference
- The main handler function that implements the add_group_members tool. It iterates over the list of members, resolves usernames to sys_ids using get_user if necessary, and creates sys_user_grmember records via POST requests to the ServiceNow API.def add_group_members( config: ServerConfig, auth_manager: AuthManager, params: AddGroupMembersParams, ) -> GroupResponse: """ Add members to a group in ServiceNow. Args: config: Server configuration. auth_manager: Authentication manager. params: Parameters for adding members to the group. Returns: Response with the result of the operation. """ api_url = f"{config.api_url}/table/sys_user_grmember" 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 # Create group membership data = { "group": params.group_id, "user": user_id, } try: response = requests.post( api_url, json=data, headers=auth_manager.get_headers(), timeout=config.timeout, ) response.raise_for_status() except requests.RequestException as e: logger.error(f"Failed to add member '{member}' to group: {e}") success = False failed_members.append(member) if failed_members: message = f"Some members could not be added to the group: {', '.join(failed_members)}" else: message = "All members added to the group successfully" return GroupResponse( success=success, message=message, group_id=params.group_id, )
- Pydantic BaseModel defining the input schema for the add_group_members tool, including group_id (str) and members (list of str: sys_ids or usernames).class AddGroupMembersParams(BaseModel): """Parameters for adding members to 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 add as members" )
- src/servicenow_mcp/utils/tool_utils.py:815-821 (registration)Tool registration in the central get_tool_definitions() function's dictionary. Maps the tool name to its handler (aliased import), input schema (AddGroupMembersParams), expected return type, description, and serialization method ('raw_dict')."add_group_members": ( add_group_members_tool, AddGroupMembersParams, Dict[str, Any], # Expects dict "Add members to an existing group in ServiceNow", "raw_dict", ),