MCP server for remote hosts from ~/.ssh/config over OpenSSH — host status, commands, background jobs, config & known_hosts management, and llms.txt docs
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio counts 14 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
add_host
-
check_hosts
-
copy_id
-
forget_host
-
get_host
-
list_hosts
-
list_jobs
-
llms_fetch
-
llms_index
-
llms_list_sources
-
llms_search
-
run
-
start
-
trust_host
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 76c1c31 · analyzer v33 · 1d ago
skills & prompt files 1
- agent-rules RenFelyer-mcp-hostops-76c1c31/CLAUDE.md
danger signals1
- suspicious endpoint 93.184.216.34 RenFelyer-mcp-hostops-76c1c31/tests/test_llms.py :144
services.check_url("https://93.184.216.34/llms.txt")
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 51
filesystem 18
- fs RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/core/config/constants.py :10
from pathlib import Path - fs RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/core/config/environment.py :14
from pathlib import Path - fs RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/core/config/logger.py :11
from pathlib import Path - fs RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/core/store.py :23
from pathlib import Path - fs RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/core/utils/hosts.py :15
from pathlib import Path - fs RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/core/utils/sudo.py :21
from pathlib import Path - fs RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/routers/sshconfig/services.py :18
import shutil - fs (weak) RenFelyer-mcp-hostops-76c1c31/tests/test_hosts.py :4
from pathlib import Path - fs (weak) RenFelyer-mcp-hostops-76c1c31/tests/test_hosts_services.py :4
from pathlib import Path - fs (weak) RenFelyer-mcp-hostops-76c1c31/tests/test_llms.py :5
from pathlib import Path - fs (weak) RenFelyer-mcp-hostops-76c1c31/tests/test_logger.py :4
from pathlib import Path - fs (weak) RenFelyer-mcp-hostops-76c1c31/tests/test_probe.py :6
from pathlib import Path
show 6 more
- fs (weak) RenFelyer-mcp-hostops-76c1c31/tests/test_run_command.py :4
from pathlib import Path - fs (weak) RenFelyer-mcp-hostops-76c1c31/tests/test_server.py :12
from pathlib import Path - fs (weak) RenFelyer-mcp-hostops-76c1c31/tests/test_ssh.py :3
from pathlib import Path - fs (weak) RenFelyer-mcp-hostops-76c1c31/tests/test_sshconfig.py :7
import shutil - fs (weak) RenFelyer-mcp-hostops-76c1c31/tests/test_store.py :5
from pathlib import Path - fs (weak) RenFelyer-mcp-hostops-76c1c31/tests/test_sudo.py :3
from pathlib import Path
shell / exec 7
- shell RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/core/utils/hosts.py :14
import subprocess - shell RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/core/utils/probe.py :16
import subprocess - shell RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/core/utils/ssh.py :14
import subprocess - shell RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/routers/sshconfig/services.py :19
import subprocess - shell (weak) RenFelyer-mcp-hostops-76c1c31/tests/test_hosts.py :3
import subprocess - shell (weak) RenFelyer-mcp-hostops-76c1c31/tests/test_probe.py :5
import subprocess - shell (weak) RenFelyer-mcp-hostops-76c1c31/tests/test_sshconfig.py :8
import subprocess
network 3
- net RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/core/utils/probe.py :15
import socket - net RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/routers/llms/services.py :36
import socket - net (weak) RenFelyer-mcp-hostops-76c1c31/tests/test_probe.py :4
import socket
tool registrations 14
- run RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/routers/commands/handlers.py :15
- list_hosts RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/routers/hosts/handlers.py :20
- check_hosts RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/routers/hosts/handlers.py :33
- get_host RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/routers/hosts/handlers.py :48
- start RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/routers/jobs/handlers.py :32
- list_jobs RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/routers/jobs/handlers.py :96
- llms_list_sources RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/routers/llms/handlers.py :30
- llms_index RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/routers/llms/handlers.py :90
- llms_search RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/routers/llms/handlers.py :111
- llms_fetch RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/routers/llms/handlers.py :137
- add_host RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/routers/sshconfig/handlers.py :26
- forget_host RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/routers/sshconfig/handlers.py :86
show 2 more
- copy_id RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/routers/sshconfig/handlers.py :107
- trust_host RenFelyer-mcp-hostops-76c1c31/src/mcp_hostops/routers/sshconfig/handlers.py :122
declared dependencies 5
- fastmcp@>=4.0.2
- anyio@>=4.15.0
- httpx2@>=2.12.0
- pydantic-settings@>=2.15.0
- uvloop@>=0.22.1