ssh_discoverLABSCO SUMMARY
Preview variants on the operations that cannot be undone.
Removing a device, purging records, decommissioning a host — each has a matching preview call, so an agent can show its work before anything is destroyed. Credential handling is the other thing worth noting: register a host once and the server injects the credentials on every later connection, with key-based entries storing the key file path in the keyring rather than the key itself. Log output is filtered for credential redaction.
What it is
A Python MCP server for managing homelab infrastructure. It onboards a host by creating a managed admin user over SSH, then gives an assistant a broad surface — hardware discovery, service deployment, VM control, topology mapping — with credentials held in the OS keyring rather than typed each time.
What you get
- Host onboarding and hardware discovery over SSH: create the managed user, confirm passwordless access, then gather hardware and software detail —
setup_mcp_admin,verify_mcp_admin,ssh_discover,ssh_execute_command - Network topology: discover and map devices in bulk, read the sitemap, analyse the topology and track what changed —
discover_and_map,bulk_discover_and_map,get_network_sitemap,analyze_network_topology,get_device_changes - Service installation from YAML templates — Jellyfin, Pi-hole, Ollama, Home Assistant and more — with requirement checks first —
list_available_services,check_service_requirements,install_service,get_service_status - VM and container lifecycle for Docker and LXD workloads —
deploy_vm,control_vm,get_vm_status,list_vms,get_vm_logs,remove_vm - Proxmox operations plus community script discovery —
list_proxmox_resources,create_proxmox_lxc,create_proxmox_vm,clone_proxmox_vm,manage_proxmox_vm,search_proxmox_scripts - State-managed infrastructure with drift detection, backups and rollback, and Ansible playbook execution —
deploy_infrastructure,scan_infrastructure_drift,create_infrastructure_backup,rollback_infrastructure_changes,run_ansible_playbook - Destructive operations paired with a preview variant that shows what would happen first —
remove_device_preview,purge_devices_preview,decommission_device_preview
Requirements
SSH access to the machines you want managed. The server generates its own key pair on first run at ~/.ssh/mcp_admin_rsa. Install with uvx homelab-mcp — the package is homelab-mcp (version 1.8.0) — or clone and run uv sync && uv run python run_server.py. Credentials are stored in the OS keyring, libsecret on Linux and Keychain on macOS, falling back to environment variables on headless servers. Proxmox credentials are registered the same way with --type proxmox.
Setup effort
One command — uvx homelab-mcp
USE CASES
Bringing a new machine under management
Create the managed admin user over SSH, confirm passwordless access works, then discover its hardware and software.
Working out what is actually on the network
Run bulk discovery, read the sitemap, and analyse the topology — then check what changed since last time.
Installing a service without the usual yak-shaving
List the available service templates, check the target meets the requirements, install, and confirm it came up.
Retiring a host safely
Run the decommission preview to see the full effect, then execute it once the plan reads correctly.
Catching configuration drift
Scan for drift against the managed state, back up before changing anything, and roll back if the change goes wrong.
58 tools
Listed in project docs. Your client may show a different list.
setup_mcp_adminverify_mcp_adminssh_execute_commandstart_interactive_shellupdate_mcp_admin_groupsdiscover_and_mapbulk_discover_and_mapget_network_sitemapanalyze_network_topologysuggest_deploymentsget_device_changesupdate_device_fingerprintupdate_device_fingerprint_previewremove_deviceremove_device_previewpurge_devicespurge_devices_previewpurge_failed_discoveriesdeploy_infrastructureupdate_device_configdecommission_devicedecommission_device_previewscale_servicesvalidate_infrastructure_changescreate_infrastructure_backuprollback_infrastructure_changesscan_infrastructure_driftdeploy_vmcontrol_vmget_vm_statuslist_vmsget_vm_logsremove_vmlist_available_servicesget_service_infocheck_service_requirementsinstall_serviceget_service_statusplan_terraform_servicedestroy_terraform_servicerefresh_terraform_servicecheck_ansible_servicerun_ansible_playbookregister_serverlist_registered_serversupdate_server_credentialsremove_serversearch_proxmox_scriptsget_proxmox_script_infolist_proxmox_resourcesget_proxmox_node_statusget_proxmox_vm_statusmanage_proxmox_vmcreate_proxmox_lxccreate_proxmox_vmclone_proxmox_vmdelete_proxmox_vmBEFORE YOU INSTALL
What to know first
Tools you get
58 tools named in the project's documentation.
Requires
uvx on PATH
Where it runs
Both documented setups run the server on your machine.
INSTALLATION
Connect your client
Server setup
uvx homelab-mcpMCP Clients
Claude Desktop — uvx
{
"mcpServers": {
"homelab": {
"command": "uvx",
"args": [
"homelab-mcp"
]
}
}
}Claude Desktop — local build
{
"mcpServers": {
"homelab": {
"command": "uv",
"args": [
"run",
"python",
"run_server.py"
],
"cwd": "<YOUR_PATH_TO_HOMELAB_MCP>"
}
}
}