user_tools.py•11 kB
from typing import Dict, Any, List, Callable
from ..scope.users import (
mikrotik_add_user, mikrotik_list_users, mikrotik_get_user,
mikrotik_update_user, mikrotik_remove_user, mikrotik_disable_user,
mikrotik_enable_user, mikrotik_add_user_group, mikrotik_list_user_groups,
mikrotik_get_user_group, mikrotik_update_user_group, mikrotik_remove_user_group,
mikrotik_get_active_users, mikrotik_disconnect_user, mikrotik_export_user_config,
mikrotik_set_user_ssh_keys, mikrotik_list_user_ssh_keys, mikrotik_remove_user_ssh_key
)
from mcp.types import Tool
def get_user_tools() -> List[Tool]:
"""Return the list of user management tools."""
return [
# User Management tools
Tool(
name="mikrotik_add_user",
description="Adds a new user to MikroTik device",
inputSchema={
"type": "object",
"properties": {
"name": {"type": "string"},
"password": {"type": "string"},
"group": {"type": "string"},
"address": {"type": "string"},
"comment": {"type": "string"},
"disabled": {"type": "boolean"}
},
"required": ["name", "password"]
},
),
Tool(
name="mikrotik_list_users",
description="Lists users on MikroTik device",
inputSchema={
"type": "object",
"properties": {
"name_filter": {"type": "string"},
"group_filter": {"type": "string"},
"disabled_only": {"type": "boolean"},
"active_only": {"type": "boolean"}
},
"required": []
},
),
Tool(
name="mikrotik_get_user",
description="Gets detailed information about a specific user",
inputSchema={
"type": "object",
"properties": {
"name": {"type": "string"}
},
"required": ["name"]
},
),
Tool(
name="mikrotik_update_user",
description="Updates an existing user on MikroTik device",
inputSchema={
"type": "object",
"properties": {
"name": {"type": "string"},
"new_name": {"type": "string"},
"password": {"type": "string"},
"group": {"type": "string"},
"address": {"type": "string"},
"comment": {"type": "string"},
"disabled": {"type": "boolean"}
},
"required": ["name"]
},
),
Tool(
name="mikrotik_remove_user",
description="Removes a user from MikroTik device",
inputSchema={
"type": "object",
"properties": {
"name": {"type": "string"}
},
"required": ["name"]
},
),
Tool(
name="mikrotik_disable_user",
description="Disables a user account",
inputSchema={
"type": "object",
"properties": {
"name": {"type": "string"}
},
"required": ["name"]
},
),
Tool(
name="mikrotik_enable_user",
description="Enables a user account",
inputSchema={
"type": "object",
"properties": {
"name": {"type": "string"}
},
"required": ["name"]
},
),
Tool(
name="mikrotik_add_user_group",
description="Adds a new user group to MikroTik device",
inputSchema={
"type": "object",
"properties": {
"name": {"type": "string"},
"policy": {"type": "array", "items": {"type": "string"}},
"skin": {"type": "string"},
"comment": {"type": "string"}
},
"required": ["name", "policy"]
},
),
Tool(
name="mikrotik_list_user_groups",
description="Lists user groups on MikroTik device",
inputSchema={
"type": "object",
"properties": {
"name_filter": {"type": "string"},
"policy_filter": {"type": "string"}
},
"required": []
},
),
Tool(
name="mikrotik_get_user_group",
description="Gets detailed information about a specific user group",
inputSchema={
"type": "object",
"properties": {
"name": {"type": "string"}
},
"required": ["name"]
},
),
Tool(
name="mikrotik_update_user_group",
description="Updates an existing user group on MikroTik device",
inputSchema={
"type": "object",
"properties": {
"name": {"type": "string"},
"new_name": {"type": "string"},
"policy": {"type": "array", "items": {"type": "string"}},
"skin": {"type": "string"},
"comment": {"type": "string"}
},
"required": ["name"]
},
),
Tool(
name="mikrotik_remove_user_group",
description="Removes a user group from MikroTik device",
inputSchema={
"type": "object",
"properties": {
"name": {"type": "string"}
},
"required": ["name"]
},
),
Tool(
name="mikrotik_get_active_users",
description="Gets currently active/logged-in users",
inputSchema={
"type": "object",
"properties": {},
"required": []
},
),
Tool(
name="mikrotik_disconnect_user",
description="Disconnects an active user session",
inputSchema={
"type": "object",
"properties": {
"user_id": {"type": "string"}
},
"required": ["user_id"]
},
),
Tool(
name="mikrotik_export_user_config",
description="Exports user configuration to a file",
inputSchema={
"type": "object",
"properties": {
"filename": {"type": "string"}
},
"required": []
},
),
Tool(
name="mikrotik_set_user_ssh_keys",
description="Sets SSH public keys for a user",
inputSchema={
"type": "object",
"properties": {
"username": {"type": "string"},
"key_file": {"type": "string"}
},
"required": ["username", "key_file"]
},
),
Tool(
name="mikrotik_list_user_ssh_keys",
description="Lists SSH keys for a specific user",
inputSchema={
"type": "object",
"properties": {
"username": {"type": "string"}
},
"required": ["username"]
},
),
Tool(
name="mikrotik_remove_user_ssh_key",
description="Removes an SSH key",
inputSchema={
"type": "object",
"properties": {
"key_id": {"type": "string"}
},
"required": ["key_id"]
},
),
]
def get_user_handlers() -> Dict[str, Callable]:
"""Return the handlers for user management tools."""
return {
"mikrotik_add_user": lambda args: mikrotik_add_user(
args["name"],
args["password"],
args.get("group", "read"),
args.get("address"),
args.get("comment"),
args.get("disabled", False)
),
"mikrotik_list_users": lambda args: mikrotik_list_users(
args.get("name_filter"),
args.get("group_filter"),
args.get("disabled_only", False),
args.get("active_only", False)
),
"mikrotik_get_user": lambda args: mikrotik_get_user(
args["name"]
),
"mikrotik_update_user": lambda args: mikrotik_update_user(
args["name"],
args.get("new_name"),
args.get("password"),
args.get("group"),
args.get("address"),
args.get("comment"),
args.get("disabled")
),
"mikrotik_remove_user": lambda args: mikrotik_remove_user(
args["name"]
),
"mikrotik_disable_user": lambda args: mikrotik_disable_user(
args["name"]
),
"mikrotik_enable_user": lambda args: mikrotik_enable_user(
args["name"]
),
"mikrotik_add_user_group": lambda args: mikrotik_add_user_group(
args["name"],
args["policy"],
args.get("skin"),
args.get("comment")
),
"mikrotik_list_user_groups": lambda args: mikrotik_list_user_groups(
args.get("name_filter"),
args.get("policy_filter")
),
"mikrotik_get_user_group": lambda args: mikrotik_get_user_group(
args["name"]
),
"mikrotik_update_user_group": lambda args: mikrotik_update_user_group(
args["name"],
args.get("new_name"),
args.get("policy"),
args.get("skin"),
args.get("comment")
),
"mikrotik_remove_user_group": lambda args: mikrotik_remove_user_group(
args["name"]
),
"mikrotik_get_active_users": lambda args: mikrotik_get_active_users(),
"mikrotik_disconnect_user": lambda args: mikrotik_disconnect_user(
args["user_id"]
),
"mikrotik_export_user_config": lambda args: mikrotik_export_user_config(
args.get("filename")
),
"mikrotik_set_user_ssh_keys": lambda args: mikrotik_set_user_ssh_keys(
args["username"],
args["key_file"]
),
"mikrotik_list_user_ssh_keys": lambda args: mikrotik_list_user_ssh_keys(
args["username"]
),
"mikrotik_remove_user_ssh_key": lambda args: mikrotik_remove_user_ssh_key(
args["key_id"]
),
}