list_configured_serversLABSCO SUMMARY
Writes are off until you enable them, and then each one still needs its own approval.
An approval is bound to the principal, the capability, the resolved target identity, the resource and the normalized arguments — so approving a restart on one host is not approval to restart another. There is deliberately no raw shell tool: the privileged surface is a fixed list of validated operations, which is the point of the 2.0 rewrite.
What it is
A hardened MCP server for managing mikr.us VPS instances and remote Linux hosts over SSH. Reads and mutations are separate classes, and privileged actions are exposed as specific validated operations rather than a shell.
What you get
- mikr.us API targets and ordinary SSH hosts through the same server
- VPS operations: get_server_info, list_servers, get_server_stats, restart_server, boost_server, get_ports, get_cloud, assign_domain
- Files and services: read_file, write_file, list_directory, tail_file, search_in_files, get_service_status, change_service_state
- System inspection: analyze_disk, check_port, list_processes, terminate_process, get_memory_info, get_network_info, get_process_tree, update_system
- Docker and journald: list_docker_containers, get_docker_logs, get_docker_stats, get_journal_logs, find_system_errors, search_journal_logs
- A response sanitizer over credential fields, so get_db_info does not leak them into the conversation
- SSH host-key verification on by default, with the verified SHA-256 fingerprint bound into mutation identity
Requirements
Python 3.12 or newer; version 2.0.0. Either MIKRUS_API_KEY with MIKRUS_SERVER_NAME, or SSH targets defined in MCP_SERVERS. Writes need MCP_WRITE_ENABLED plus an approval file at MCP_APPROVAL_FILE. Transport is local stdio, or authenticated loopback-only Streamable HTTP.
Setup effort
One command plus a key — .venv/bin/python -m pip install ., then supply credentials
USE CASES
Checking on a server without opening a terminal
Ask for RAM, disk and expiry, then look at filesystem usage.
Working out why a service is down
Inspect the unit, then read its journal output and recent errors.
Restarting something, deliberately
The mutation is held until you approve that exact action on that exact target.
Looking inside a container
List what is running and pull bounded logs for the one that matters.
34 tools
Listed in project docs. Your client may show a different list.
describe_mikrus_capabilitiesget_server_infolist_serversget_server_statsrestart_serverget_logsget_log_by_idboost_serverget_db_infoget_portsget_cloudassign_domainread_filewrite_fileget_service_statuschange_service_stateanalyze_diskcheck_portlist_processesterminate_processupdate_systemlist_directorytail_filesearch_in_filesget_memory_infoget_network_infoget_process_treelist_docker_containersget_docker_logsget_docker_statsget_journal_logsfind_system_errorssearch_journal_logsBEFORE YOU INSTALL
What to know first
Tools you get
34 tools named in the project's documentation.
Requires
- Python 3.12
- MIKRUS_API_KEY in your environment
- MIKRUS_SERVER_NAME in your environment
INSTALLATION
Connect your client
Server setup
.venv/bin/python -m pip install .MCP Clients
Any MCP client — stdio
{
"mcpServers": {
"mikrus": {
"command": "<YOUR_PATH_TO_MIKRUS_MCP>/.venv/bin/python",
"args": [
"-m",
"mikrus_mcp"
],
"env": {
"MIKRUS_API_KEY": "<YOUR_MIKRUS_API_KEY>",
"MIKRUS_SERVER_NAME": "srv123"
}
}
}
}Any MCP client — Docker
docker run --rm -e MIKRUS_API_KEY='<YOUR_MIKRUS_API_KEY>' -e MIKRUS_SERVER_NAME='srv123' mikrus-mcp:2.0.0