list_users
Retrieve all user accounts from Splunk Enterprise/Cloud to manage access and permissions. Requires administrator privileges.
Instructions
List all Splunk users (requires admin privileges)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- splunk_mcp.py:543-602 (handler)The handler function for the 'list_users' MCP tool. It connects to Splunk, iterates over all users, extracts their details including roles and capabilities, and returns a list of user dictionaries. Registered via @mcp.tool() decorator.@mcp.tool() async def list_users() -> List[Dict[str, Any]]: """List all Splunk users (requires admin privileges)""" try: service = get_splunk_connection() logger.info("👥 Fetching Splunk users...") users = [] for user in service.users: try: if hasattr(user, 'content'): # Ensure roles is a list roles = user.content.get('roles', []) if roles is None: roles = [] elif isinstance(roles, str): roles = [roles] # Ensure capabilities is a list capabilities = user.content.get('capabilities', []) if capabilities is None: capabilities = [] elif isinstance(capabilities, str): capabilities = [capabilities] user_info = { "username": user.name, "real_name": user.content.get('realname', "N/A") or "N/A", "email": user.content.get('email', "N/A") or "N/A", "roles": roles, "capabilities": capabilities, "default_app": user.content.get('defaultApp', "search") or "search", "type": user.content.get('type', "user") or "user" } users.append(user_info) logger.debug(f"✅ Successfully processed user: {user.name}") else: # Handle users without content user_info = { "username": user.name, "real_name": "N/A", "email": "N/A", "roles": [], "capabilities": [], "default_app": "search", "type": "user" } users.append(user_info) logger.warning(f"⚠️ User {user.name} has no content, using default values") except Exception as e: logger.warning(f"⚠️ Error processing user {user.name}: {str(e)}") continue logger.info(f"✅ Found {len(users)} users") return users except Exception as e: logger.error(f"❌ Error listing users: {str(e)}") raise