loading…
Search for a command to run...
loading…
MCP server for Webmin system administration. 61 tools across 12 modules covering system monitoring, services, users, cron, packages, files, storage (SMART + LVM
MCP server for Webmin system administration. 61 tools across 12 modules covering system monitoring, services, users, cron, packages, files, storage (SMART + LVM), security (Fail2ban), MySQL databases, Webmin ACL, and disk quotas. Four-tier safety framework with safe mode on by default. Python, MIT license, Docker and local deployment supported.
License: MIT Python 3.11+ Docker MCP
An MCP (Model Context Protocol) server that provides Claude with tools to manage Linux systems via Webmin's administration interface.
Install (choose one):
From source:
git clone https://github.com/gjenkins20/webmin-mcp-server.git
cd webmin-mcp-server
pip install -e .
With Docker:
docker pull gjenkins20/webmin-mcp-server
Configure -- Create a webmin-servers.json (see Configuration):
{
"default_server": "my-server",
"servers": {
"my-server": {
"host": "192.168.1.100",
"port": 10000,
"username": "admin",
"password": "your-password",
"use_https": true,
"verify_ssl": false,
"safe_mode": true
}
}
}
Add to Claude Desktop (claude_desktop_config.json):
From source:
{
"mcpServers": {
"webmin": {
"command": "python",
"args": ["-m", "src.server"],
"cwd": "/path/to/webmin-mcp-server",
"env": {
"WEBMIN_CONFIG_FILE": "/path/to/webmin-servers.json"
}
}
}
}
With Docker:
{
"mcpServers": {
"webmin": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "/path/to/webmin-servers.json:/app/webmin-servers.json:ro",
"gjenkins20/webmin-mcp-server"
]
}
}
}
The MCP server uses Webmin's XML-RPC API. Ensure your Webmin server is configured:
# Debian/Ubuntu
sudo apt install libxml-parser-perl
# RHEL/CentOS
sudo yum install perl-XML-Parser
Create a webmin-servers.json file to manage multiple Webmin servers. See webmin-servers.example.json for a complete example.
Configuration sources (priority order):
WEBMIN_CONFIG_FILE env var -- path to JSON config fileWEBMIN_SERVERS_JSON env var -- inline JSON string./webmin-servers.json -- local file in current directory~/.config/webmin-mcp/servers.json -- user config directoryWEBMIN_* env vars -- single server (creates "default" alias)For a single server, set environment variables:
export WEBMIN_HOST="your-webmin-server.com"
export WEBMIN_PORT="10000"
export WEBMIN_USERNAME="admin"
export WEBMIN_PASSWORD="your-password"
export WEBMIN_USE_HTTPS="true"
export WEBMIN_VERIFY_SSL="true" # Set to false for self-signed certs
Or create a .env file (see .env.example).
With multi-server configuration, all tools accept an optional server parameter:
"Get system info from pi1" -> Uses pi1 (default)
"Check disk usage on web-server" -> Uses web-server
"List services on server: nas" -> Uses nas
Use list_webmin_servers to see all configured servers and their aliases.
All tools accept an optional server parameter to target a specific Webmin server. See the full API reference for detailed parameters and response formats.
| Category | Tools | Description |
|---|---|---|
| Server | list_webmin_servers, test_server_connection, get_webmin_version |
Manage and test server connections |
| System | get_system_info, get_memory_usage, get_system_time, list_runlevels, list_processes |
System monitoring and information |
| Services | list_services, get_service_status, start_service, stop_service, restart_service, enable_service, disable_service |
Service lifecycle management |
| Users & Groups | list_users, list_groups, create_user, modify_user, delete_user, change_password |
User and group administration |
| Cron | list_cron_jobs, create_cron_job, edit_cron_job, delete_cron_job |
Scheduled task management |
| Network | get_network_info |
Interface and routing details |
| Packages | get_package_info, list_available_updates, get_package_count |
Package information and updates |
| Files | read_file, write_file, delete_file, copy_file, rename_file, create_directory |
Remote file operations |
| Storage | get_disk_usage, list_mounts, list_disks, get_disk_health, list_volume_groups, list_logical_volumes |
Disk, mount, SMART, and LVM management |
| SSH | get_ssh_config |
SSH server configuration |
| Audit | list_webmin_logs, list_backups |
Action logs and backups |
| Security | list_fail2ban_jails, get_fail2ban_status, list_banned_ips |
Fail2ban intrusion prevention |
| Database | list_mysql_databases, list_mysql_users, get_mysql_status |
MySQL database management |
| Webmin ACL | list_webmin_users, get_webmin_user, list_webmin_modules, create_webmin_user, modify_webmin_user, delete_webmin_user |
Webmin user and permission management |
| Disk Quotas | list_quota_filesystems, list_user_quotas, get_user_quota, get_group_quota, set_user_quota |
Disk quota monitoring and management |
The server includes a tiered safety system to prevent accidental damage.
| Tier | Description | Safe Mode |
|---|---|---|
| Read | No system changes | Always allowed |
| Safe | Low-risk changes | Allowed |
| Moderate | Reversible changes | May block critical services |
| Dangerous | Destructive operations | Blocked |
Safe mode is enabled by default. When active:
ssh, webmin, systemd-*, dbus) cannot be stopped/tmp and /var/tmpConfigure per-server in webmin-servers.json:
{
"servers": {
"production": { "safe_mode": true },
"development": { "safe_mode": false }
}
}
Or globally via environment: export WEBMIN_SAFE_MODE=false
docker pull gjenkins20/webmin-mcp-server
docker build -t webmin-mcp-server .
# With config file
docker run --rm -i \
-v /path/to/webmin-servers.json:/app/webmin-servers.json:ro \
gjenkins20/webmin-mcp-server
# With environment variables
docker run --rm -i \
-e WEBMIN_HOST=192.168.1.100 \
-e WEBMIN_USERNAME=admin \
-e WEBMIN_PASSWORD=your-password \
gjenkins20/webmin-mcp-server
| Tag | Description |
|---|---|
latest |
Latest build from main branch |
0.1.0 |
Specific release version |
0.1 |
Latest patch for minor version |
abc1234 |
Specific commit SHA |
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Lint and format
ruff check src tests
ruff format src tests
# Type check
mypy src
See CONTRIBUTING.md for guidelines on contributing to the project.
webmin-mcp-server/
├── src/
│ ├── server.py # MCP server setup
│ ├── webmin_client.py # Webmin API client
│ ├── config.py # Configuration management
│ ├── models.py # Pydantic models
│ └── tools/ # MCP tool implementations
├── tests/ # Test suite
├── docs/
│ ├── api-reference.md # Full API documentation
│ └── webmin_api_map.md # Webmin API endpoint mapping
├── .github/workflows/ # CI/CD (Docker build & push)
├── Dockerfile
└── webmin-servers.example.json
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"webmin-mcp-server": {
"command": "npx",
"args": []
}
}
}Query your database in natural language
Read-only database access with schema inspection.
Interact with Redis key-value stores.
Database interaction and business intelligence capabilities.