
Fast Mcp Ssh
io.github.klNunoPublished by GitHub account klNunov0.5.1Updated Oct 24, 2026
SSH, SFTP, PTY shells, host-to-host copies and remote screenshots for AI agents. One Rust binary.
The publisher's own server: Fastio
Overview
Local Rust MCP server that gives an AI assistant SSH access to configured hosts: commands, PTY shells, SFTP files, screenshots and port forwards.
- What you can do
- Run commands on remote hosts: one-shot exec, parallel batch, persistent PTY shell, interrupt
- Manage remote files over SFTP: list, stat, download, upload, copy between hosts, write, mkdir, remove, tail
- Inspect hosts: cached host profile, parsed process/disk/memory/network stats, systemd units
- Capture a downscaled screenshot of the remote desktop
- Manage sessions and network: list hosts, ping, disconnect, reload config, close shells, open and close local TCP forwards
- When to use it
- Useful when an assistant needs to operate remote Linux or macOS machines over SSH — running commands, editing files, checking services or grabbing a screenshot — without a Node or Python runtime, and with guards and an audit log around each call.
- Requirements
- Runs as a local stdio process installed with cargo or a prebuilt binary (Linux and macOS x86_64/aarch64, Windows x86_64). Needs a hosts config file at ~/.fast-mcp-ssh/hosts.toml, SSH keys under ~/.fast-mcp-ssh/keys/ , and auth of type key, agent or password. Network access to the target hosts.
Installation
In SourceWeft
- Open Fast Mcp Ssh in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
fast-mcp-ssh
SSH, SFTP and persistent shells for AI agents. One Rust binary, no runtime.
[crates.io] [CI] [License] [Rust 1.89+] [Platform]
An MCP server that gives a model real SSH access:
- One connection per host, held open across calls.
- A PTY shell that remembers
cdandexport. - SFTP instead of
cat > file, and host-to-host copies that skip your disk. - A screenshot of the remote desktop.
- Regex guards before anything leaves your machine.
- An append-only audit log of every call.
Answers come back as TOON, roughly 40 percent fewer tokens than JSON on tabular data.
Install
Or a prebuilt binary from the
latest release,
checked against SHA256SUMS.txt. Linux and macOS ship x86_64 and aarch64,
Windows x86_64.
Copy hosts.example.toml to ~/.fast-mcp-ssh/hosts.toml
and fill in your hosts. Keys go in ~/.fast-mcp-ssh/keys/<name>; auth is
key, agent or password.
Wire it up
.mcp.json, or claude_desktop_config.json for Claude Desktop:
Same block in Claude Code, Cursor, Windsurf, Zed, VS Code Copilot and anything else that speaks MCP over stdio.
In the MCP registry it is
mcp-name: io.github.klNuno/fast-mcp-ssh.
Tools
host is optional on every tool once [defaults] default_host is set.
Every tool carries MCP annotations (readOnlyHint, destructiveHint,
idempotentHint, openWorldHint) so a client can gate destructive calls.
Host-to-host copy
cp moves a file from one configured host to another. The bytes never land on
your disk and never reach the model, and a sha256 is compared on both ends
before success. Guards cover the destination too, so a read-only target still
refuses the write.
Remote screenshots
shot hands the model an image instead of a wall of text. It uses whichever of
grim, gnome-screenshot, spectacle, ImageMagick import or scrot the
host has, covering X11 and wlroots Wayland, and downscales locally so a 4K
screen is not a multi-megabyte payload.
Protocol
Speaks stateless MCP (2026-07-28) and every revision back to 2024-11-05,
picked per peer. Stateless changes three things:
- Confirmations come back as an
input_requiredresult the client answers and retries (SEP-2322), because a server may no longer open a request of its own. Older peers keepelicitation/create. - Long calls hand back a task handle to poll (SEP-2663):
execpast its 60s timeout,tailwithfollow=true. Clients without the extension keep the blocking call. tools/listis sorted, so it is byte-identical between restarts, and carries a one hourttlMs(SEP-2549). A client's prompt cache keeps hitting.
Shells are unaffected. A PTY has always been addressed by the host and
session arguments of the call, which is the explicit handle stateless wants.
Security
Guards run before any SSH packet leaves. deny_patterns refuse outright,
confirm_patterns ask the user, a client that cannot answer is denied, and
read_only = true blocks anything that looks like a write.
Paths are checked on both sides: remote reads of keys, shadow files and cloud
credentials, local writes into your ~/.bashrc or an autostart folder. Every
path-taking tool runs both checks, tail included, and re-checks once the
server has resolved the path, so a symlink cannot launder a blocked target. A
path that will not resolve refuses the call.
Host keys are pinned, TOFU by default, strict and per-host fingerprints
available. Every call lands in ~/.fast-mcp-ssh/audit.log as NDJSON, with
credentials scrubbed.
Guards stop accidents, not an adversary who controls the model. Scope the remote account accordingly. Threat model: SECURITY.md. Version history: CHANGELOG.md.
Benchmark
50 iterations per scenario, same Linux host, same LAN, same SSH key, client on
Windows 11. Medians, lower is better, measured on 0.5.0. Reproduce with
benchmark/, raw runs in
benchmark/results/.
Both alternatives are Node, so ~250 ms of their cold start is the runtime
booting. The steady-state gap is the connection: fast-mcp-ssh holds one SSH
session per host and opens a channel per call, the other two reconnect. Writes
go over SFTP here, through a cat > file heredoc there.
Development
Never write to stdout outside the MCP transport: a stray println! corrupts
the JSON-RPC stream and the client disconnects without an error. tracing
macros go to stderr and are safe.
License
MIT.
Footnotes
-
mcp-ssh-managertruncates that response to 12 KB, so it is not returning the same output.ssh-mcp-serverreturns raw stdout with no exit code, which is why its replies are the shortest and why a failed command looks like a successful one. ↩
Source: README.md at commit 760b74b
Tools
0Version history
2- v0.5.1LatestSep 24, 2026
- v0.5.0Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Other Fast integrations
Fastio
io.fastOfficial publisher
Fastio is a remote MCP endpoint that gives a project one workspace for its files, its team, and its AI agents.

Fast Entity Filing USDOT BOC-3 & 2027 UCR Compliance
com.fastentityfiling
Fast Entity Filing USDOT BOC-3 & 2027 UCR Compliance's hosted MCP server, published by fastentityfiling.com; no sign-in required; Streamable HTTP; 10 tools.

Make Agent Fast
Published by GitHub account abdurshd
Remote MCP server for Make Agent Fast that lets an assistant build customer-service agents, review conversations and leads, and improve answers.

FastOCR
Published by GitHub account fastocr-org
FastOCR lets an assistant OCR local scanned PDFs and images, save searchable PDFs, and convert bank statements to Excel, CSV or QuickBooks files.

Fast Data Actors (via Apify MCP)
Published by GitHub account ichkifokkus
A configuration for Apify's hosted MCP server that exposes Fast Data Actors for YouTube transcripts, Google News/Trends, job postings, document conversion and…