Replit SSH
Overview
Description from the maker (original English)
Read, write, list, and check files on Replit projects over SSH/SFTP, plus SSH key setup.
PopNx MCP’s three pillars
These three are never merged into one score: opinions, measurements and popularity are different things.
- User voiceiNo reviews yetReviews open together with accounts in a later step
- Our basic checksi2 of 2 passedChecked from public information; code not scanned yet
- UsageiEarly↓ 114/wk · ★ 14
What you can do with it
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
- Connection: Runs on your computer
- Transport: stdio
- Category: Developer tools
Install
Pick the AI app you use, then copy the settings.
Before you install
- Basic checks: 2 of 2 passed
- Runs on your computer with your user’s permissions (files, network, apps).
- You fill in yourself:
REPLIT_SSH_REQUEST_TIMEOUT_MS,MCP_REPLIT_SSH_STRICT_HOST_KEY,MCP_REPLIT_SSH_KNOWN_HOSTS_PATH
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"replit-ssh": {
"command": "npx",
"args": [
"-y",
"@mindstone/mcp-server-replit-ssh"
],
"env": {
"REPLIT_SSH_REQUEST_TIMEOUT_MS": "your-value",
"MCP_REPLIT_SSH_STRICT_HOST_KEY": "your-value",
"MCP_REPLIT_SSH_KNOWN_HOSTS_PATH": "your-value"
}
}
}
}Run this in your terminal
claude mcp add replit-ssh --env REPLIT_SSH_REQUEST_TIMEOUT_MS=your-value --env MCP_REPLIT_SSH_STRICT_HOST_KEY=your-value --env MCP_REPLIT_SSH_KNOWN_HOSTS_PATH=your-value -- npx -y @mindstone/mcp-server-replit-sshFill in the empty values before running it.
Or copy the settings yourself
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"replit-ssh": {
"command": "npx",
"args": [
"-y",
"@mindstone/mcp-server-replit-ssh"
],
"env": {
"REPLIT_SSH_REQUEST_TIMEOUT_MS": "your-value",
"MCP_REPLIT_SSH_STRICT_HOST_KEY": "your-value",
"MCP_REPLIT_SSH_KNOWN_HOSTS_PATH": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Or copy the settings yourself
Paste into .vscode/mcp.json in your project
{
"servers": {
"replit-ssh": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@mindstone/mcp-server-replit-ssh"
],
"env": {
"REPLIT_SSH_REQUEST_TIMEOUT_MS": "your-value",
"MCP_REPLIT_SSH_STRICT_HOST_KEY": "your-value",
"MCP_REPLIT_SSH_KNOWN_HOSTS_PATH": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
Values you fill in
REPLIT_SSH_REQUEST_TIMEOUT_MSenvOptional per-request timeout in milliseconds (default 60000, max 600000).MCP_REPLIT_SSH_STRICT_HOST_KEYenvSet to 1 to require pre-populated known-hosts entries. When unset (default), unknown hosts are recorded on first contact (OpenSSH `accept-new` behaviour); a fingerprint mismatch always fails closed.MCP_REPLIT_SSH_KNOWN_HOSTS_PATHenvExplicit path to the connector's SSH known-hosts file. Defaults to $MCP_WORKSPACE_PATH/.replit-ssh-known-hosts, then $HOME/.replit-mcp/known_hosts.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Which apps can use it
Based on how this server connects and on each app’s own docs, checked Nov 10, 2026.
Run on your computer in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
What it can do
Runs on your computer; the tool list appears in your AI app after you install it.
Basic checksi
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 10, 2026
- ✓ Pass
Maker matches the repo
The registry name was verified with the GitHub account mindstone, which owns the repo
- ✓ Pass
Still maintained
Code last changed today
- … Not checked yet
Has a licence
We have not read this repo from GitHub yet
- – Not applicable
Endpoint responds
This one runs on your computer; there is no internet endpoint
- – Not applicable
Sign-in with OAuth
Runs on your computer and uses local settings instead
- … Not checked yet
No hidden instructions in tool descriptions
Runs on your computer; we can only read tool lists from internet endpoints
Compared with others in Developer toolsi
- More stars than 90% of the other 5724 servers in this category
- Published to the registry more recently than 28% of the other 5724 servers in this category
- Basic checks equal to or better than 100% of the other 5724 servers in this category
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
Common questions
Is Replit SSH safe?
It passed 2 of 2 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
What keys or codes does it need?
The registry does not list a required key, though some servers ask you to sign in on first use.
Does it run on my computer or in the cloud?
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
Is it still maintained?
The GitHub repo last changed today, and the latest version (0.2.2) reached the registry 3 months ago.
Which apps can use it?
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
What can I use instead?
In the same category: REA, Netdata, Front-End Checklist
Alternatives
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Netdata
Real-time infrastructure monitoring with metrics, logs, alerts, and ML-based anomaly detection.
Front-End Checklist
Review frontend code and live pages against 386 quality-gated web development rules.
README from the maker
Open the README
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
@mindstone/mcp-server-replit-ssh
Replit SSH MCP server — read, write, list, search, stat, move, and delete files on Replit projects over SSH/SFTP, plus one-shot generation of the local SSH key and ~/.ssh/config block.
*Local Replit SSH MCP. Connects from the operator's machine to *.replit.dev hosts only, writes are atomic with SHA-256 read-back, and the ~/.ssh/config rewrite parses via AST rather than Match exec shell evaluation.*
Status
- Version: 0.2.2 · npm
- Auth: Local SSH key on disk (
~/.ssh/rebel-replitby default; resolved via~/.ssh/configIdentityFileif set). No env-var-supplied secrets. - Tools: 9 (connection, files, ssh-setup)
- Surface: local-protocol
- Machine-readable:
STATUS.json
Why this exists
Replit ships a hosted "Agent" experience but does not publish an MCP server for the SSH/SFTP surface its Core users get. The community options at the time we built this either shelled out to the system ssh binary (so connection failures surfaced as generic non-zero exit codes) or parsed ~/.ssh/config with the upstream ssh-config@5.1.0 package, which evaluates Match exec " " blocks by running them through the shell — that is local code execution against any consumer that reads a user-controlled config file. We wrote our own so that the host application can read, list, and atomically write files on a Replit project from the operator's own machine, with a host allow-list pinned to *.replit.dev, a safe AST-only config evaluator, SHA-256 read-back verification on every write, and a structured recovery contract on every tool error.
Example interaction
"List the files in my Replit project, then read
package.jsonand tell me which scripts are defined."
Tools the host calls:
replit_check_connection— verifies SSH connectivity and SFTP support, returns latency.replit_list_files— lists files and directories at..replit_read_file— readspackage.jsonfrom the project root as UTF-8 text.
Response (trimmed):
{
"ok": true, "files": [ { "name": "package.json", "type": "file", "size": 612 }, { "name": "src", "type": "directory" } ], "package": { "scripts": { "dev": "node src/index.js", "test": "vitest run" } } }
Requirements
- Node.js 20+
- npm
- A Replit account with SSH access (Replit Core or higher)
- A live
*.replit.devhost from a Replit project (open the project, click SSH → Connect → Connect manually, copy the host and username) - An SSH key registered with Replit at replit.com/account#ssh-keys. Run
replit_setup_sshonce to generate one if you do not already have one.
One-click install
After clicking the button, your host will prompt you to fill: REPLIT_SSH_REQUEST_TIMEOUT_MS.
Manual config for Claude Desktop / Claude Code / Goose / Continue.dev (Replit SSH)
{
"mcpServers": { "Replit SSH": { "command": "npx", "args": [ "-y", "@mindstone/mcp-server-replit-ssh" ], "env": { "REPLIT_SSH_REQUEST_TIMEOUT_MS": "60000" } } } }
Quick Start
Install & build
cd <path-to-repo>/connectors/replit-ssh
npm install npm run build
npx (once published)
npx -y @mindstone/mcp-server-replit-ssh
Local
node dist/index.js
Configuration
This server has no required environment variables. Authentication is via the local SSH key resolved through ~/.ssh/config.
Optional environment variables
REPLIT_SSH_REQUEST_TIMEOUT_MS— per-request timeout in milliseconds (default:60000, max600000). Tool-level timeout for SFTP operations; the lower-level TCP/SSH handshake uses a separate 30-second budget.MCP_REPLIT_SSH_STRICT_HOST_KEY— set to1to require pre-populated known-hosts entries. When unset (default), unknown hosts are recorded on first contact (matches OpenSSH'sStrictHostKeyChecking=accept-new); a fingerprint mismatch on a subsequent connect always fails closed regardless of this flag. See the SSH host-key verification entry in *Security notes* below.MCP_REPLIT_SSH_KNOWN_HOSTS_PATH— explicit path to the connector's SSH known-hosts file. Defaults to$MCP_WORKSPACE_PATH/.replit-ssh-known-hosts, falling back to$HOME/.replit-mcp/known_hosts. The file is created with mode0o600and the parent directory with mode0o700.
Host configuration examples
Claude Desktop / Cursor
{
"mcpServers": { "ReplitSSH": { "command": "npx", "args": ["-y", "@mindstone/mcp-server-replit-ssh"] } } }
Local development (no npm publish needed)
{
"mcpServers": { "ReplitSSH": { "command": "node", "args": [" /connectors/replit-ssh/dist/index.js"] } } }
After the host launches the server, run replit_setup_ssh once to generate the local key, then add the printed public key to replit.com/account#ssh-keys.
Tools (9)
Read
replit_check_connection— verify SSH connectivity, working directory, and SFTP support. Setverbose=truefor handshake/auth diagnostics.replit_list_files— list files and directories at a path (relative to the project root). Default path is.. Entry types arefile/directory/symlink(symlinks are reported as links, not followed — consistent withreplit_stat).replit_read_file— read a file (capped at 1 MiB; larger files fail withFILE_TOO_LARGErather than being truncated silently). UTF-8 text by default; binary files (detected via null-byte scan) are returned as base64.replit_search_files— recursive search by file-name substring and/or text-content substring (case-insensitive), with result caps (max_results, default 50) and a depth cap (max_depth, default 4). Content search skips binary files and files over 1 MB. Returns matching paths and, for content matches, up to 5 matching lines per file with line numbers (lineMatchesTruncated: truewhen a file has more).replit_stat— file/directory metadata (type, size, permissions, mtime/atime) without reading contents. Symlinks are reported as typesymlink(vialstat), not followed.
Write
replit_write_file— atomic write viatemp + ext_openssh_renamewith SHA-256 read-back verification. Fails closed if the server doesn't support atomic overwrite and the target already exists (we neverunlink + rename, which opens a data-loss window).replit_move— move or rename a file or directory. Never overwrites: fails withDESTINATION_EXISTSif the destination path is taken. The destination parent directory must already exist.replit_delete_file— permanently delete a file (files only, not directories). Deletion is irreversible on Replit — there is no trash — so the tool carriesdestructiveHint: trueand relies on the host's tool-approval layer as the gate.replit_setup_ssh— generate an Ed25519 key pair at~/.ssh/rebel-replit, write public/private files with mode0600(oricaclsACL on Windows), and append a*.replit.devblock to~/.ssh/config. Idempotent by default; passforce_regenerate=trueto replace the existing key (you will need to re-register the new public key with Replit).
Security notes
- Host allowlist. Only
*.replit.devhosts are accepted, case-insensitive suffix match. Any other host is rejected before the SSH connection is opened. - `~/.ssh/` mutation surface.
replit_setup_sshwrites to the operator's home directory (~/.ssh/rebel-replit,~/.ssh/rebel-replit.pub,~/.ssh/config). Configuration rewrites use a safe AST-only evaluator that skipsMatch execblocks entirely, rather than the upstreamssh-config.compute()which wouldspawnSyncthem through the shell. - Path traversal. SFTP file paths are POSIX-normalized after rejecting absolute paths and any
..segments — relative paths only, no escape from the project root. - Atomic write invariant.
replit_write_filewrites to a randomized temp filename, renames via OpenSSH's POSIX rename extension (ext_openssh_rename), and verifies the final file's SHA-256 against the expected hash. If the server lacks the extension and the target file already exists, the write fails rather than falling back tounlink + rename. - Read-back verification. Every
replit_write_filere-reads the final file and asserts SHA-256 equality before returningverified: true. - SSH host-key verification. Every outbound SSH connection passes an explicit
hostVerifierto ssh2 that pins server fingerprints in a per-user known-hosts file (mode0o600). The default behaviour mirrors OpenSSH'sStrictHostKeyChecking=accept-new: the first time the connector reaches a host, the SHA-256 fingerprint is recorded and a notice is logged to stderr; on subsequent connects, a mismatch fails closed withHOST_KEY_MISMATCH. Pins are keyed by the stable proxy suffix (first DNS label stripped, e.g.riker.replit.dev) because Replit rotates the per-project hostname on every restart — a rotated hostname presenting a *different* key than the recorded suffix pin fails closed. The stripping stops at three labels: a three-label host pins under its full hostname, and a barereplit.deventry is never consulted as a pin, so no single entry can act as a universal pin for every Replit host. The known-hosts file accepts both nativeSHA256:…lines and OpenSSHssh-keyscanoutput (), and honours@revokedmarkers as an active refusal (HOST_KEY_REVOKED) like OpenSSH does — a revoked key fails closed even if it is also pinned as valid. Operators who need fail-closed first-contact setMCP_REPLIT_SSH_STRICT_HOST_KEY=1and pre-populate the known-hosts file out-of-band (e.g.ssh-keyscan riker.replit.dev > "$MCP_WORKSPACE_PATH/.replit-ssh-known-hosts"from a trusted network). Added in 0.1.2 to close audit findingreplit-ssh-001. - Untrusted-content envelopes. Content from
replit_read_file, directory-entry names fromreplit_list_files, matched paths/lines fromreplit_search_files, and the peer-authored fields fromreplit_check_connection(server version, working directory, and diagnostic event details such as the server banner and keyb