Prototype · Preview: every server in the official registry, synced every 30 minutes. Sign in with Google to write reviews.Prototype · updated every 30 min
PopNx MCPMCP servers for people who use AI · explained in plain words

Replit SSH

by mindstoneversion 0.2.2i★ 14 (Stars for the whole repo)iRuns on your computer
Registry nameio.github.mindstone/mcp-server-replit-ssh

How to install

What it does

Read, write, list, and check files on Replit projects over SSH/SFTP, plus SSH key setup.

  • Connects Runs on your computer
  • Account or key Needs MCP_REPLIT_SSH_STRICT_HOST_KEY
  • Category Developer tools

Install

Pick the AI app you use, then copy the settings.

Passed 2/3 checks · Runs on your computer · ✓ Commands checked Nov 14, 2026

First: which AI do you use?

Pick your app and the steps appear below.

Works with Claude, with some setup first

You need a Replit SSH key (create it on the maker’s site) · Install Node.js on your computer first (one time) · Only the Claude desktop app (Windows or Mac), not the web or phone

Let AI install it

Copy this message into a Claude chat. The AI checks your computer, tells you which file it will change, and waits for your OK every time.

Please install the MCP server Replit SSH for Claude on this computer, in this order: 1) Check Node.js with node -v. If it is missing, tell me to install it from https://nodejs.org/en/download; do not install it yourself. 2) Use only this config (already checked by PopNx MCP): { "mcpServers": { "replit-ssh": { "command": "npx", "args": [ "-y", "@mindstone/mcp-server-replit-ssh" ], "env": { "MCP_REPLIT_SSH_STRICT_HOST_KEY": "your-value" } } } } 3) Tell me the full path of the file you will change, or the command you will run, and wait for my OK. 4) For MCP_REPLIT_SSH_STRICT_HOST_KEY, leave "your-value" in place and tell me to paste the real value myself into the file or the app’s field. Never ask me to type a key in chat. 5) Do what we agreed, then check that the Replit SSH tools really show up.

This message has no key in it. If a key is needed, the AI will ask you to paste it yourself into the file or the app’s field.

  1. Install Node.js (if you don’t have it)

    Already installed? Check first · Open Terminal, type this command and press Enter

    node -v
    • A version number such as v26.13.1 = installed, skip this step
    • "command not found" (on Windows: "is not recognized") = not installed yet, or installed but Terminal needs to be closed and reopened
    How to open Terminal

    Mac: press ⌘ + Space, type Terminal, press Enter

    Windows: open Start, type Windows PowerShell, then Open

    Not installed: Open the official download page, pick the LTS version and the click-through installer: .pkg on Mac · .msi on Windows. Double-click and follow it to the end. No curl command needed

    Open the Node.js download page ↗

    When it’s done, close Terminal, open it again and run the same command. You should see a version number: node -v

    Install once; it works for everything that needs Node.js

  2. Sign up and create a Replit SSH key

    Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.

    How to get a key is in the maker’s README below

  3. Open the Claude desktop app’s settings file

    SettingsDeveloperEdit Config

  4. Paste these settings and save the file

    {
      "mcpServers": {
        "replit-ssh": {
          "command": "npx",
          "args": [
            "-y",
            "@mindstone/mcp-server-replit-ssh"
          ],
          "env": {
            "MCP_REPLIT_SSH_STRICT_HOST_KEY": "your-value"
          }
        }
      }
    }

    Paste the key only into the app’s field, never into a chat or to anyone

  5. Quit Claude and open it again

  6. Try it

    Use Replit SSH and tell me what you can do for me, then show me one thing

    ✓ If Claude says it is using Replit SSH or shows a Replit SSH tool in the answer, you are connected

2 optional setting(s) (works without them)

The command above works without these. Add them only if you want to change something, following the maker’s description.

  • REPLIT_SSH_REQUEST_TIMEOUT_MS Optional per-request timeout in milliseconds (default 60000, max 600000). · default 60000
  • 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, then $HOME/.replit-mcp/known_hosts.

Descriptions are as written by the maker.

Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version

ChatGPT cannot connect Replit SSH yet

Replit SSH runs on your computer, but ChatGPT can only connect servers that run on the web

What you can do instead

A · Use an app that can connect Replit SSH

  • You need a Replit SSH key (create it on the maker’s site) · Install Node.js on your computer first (one time) · Only the Claude desktop app (Windows or Mac), not the web or phone
  • You need a Replit SSH key (create it on the maker’s site) · Install Node.js on your computer first (one time)
  • You need a Replit SSH key (create it on the maker’s site) · Install Node.js on your computer first (one time)
  • You need a Replit SSH key (create it on the maker’s site) · Install Node.js on your computer first (one time)

B · Others in Developer tools that work with ChatGPT

Picked from the most used in the same category, only ones that connect by address with no key

Works with Claude Code, with some setup first

You need a Replit SSH key (create it on the maker’s site) · Install Node.js on your computer first (one time)

Let AI install it

Copy this message into a Claude Code chat. The AI checks your computer, tells you which file it will change, and waits for your OK every time.

Please install the MCP server Replit SSH for Claude Code on this computer, in this order: 1) Check Node.js with node -v. If it is missing, tell me to install it from https://nodejs.org/en/download; do not install it yourself. 2) Use only this config (already checked by PopNx MCP): claude mcp add --scope user replit-ssh --env MCP_REPLIT_SSH_STRICT_HOST_KEY=your-value -- npx -y @mindstone/mcp-server-replit-ssh 3) Tell me the full path of the file you will change, or the command you will run, and wait for my OK. 4) For MCP_REPLIT_SSH_STRICT_HOST_KEY, leave "your-value" in place and tell me to paste the real value myself into the file or the app’s field. Never ask me to type a key in chat. 5) Do what we agreed, then check that the Replit SSH tools really show up.

This message has no key in it. If a key is needed, the AI will ask you to paste it yourself into the file or the app’s field.

  1. Install Node.js (if you don’t have it)

    Already installed? Check first · Open Terminal, type this command and press Enter

    node -v
    • A version number such as v26.13.1 = installed, skip this step
    • "command not found" (on Windows: "is not recognized") = not installed yet, or installed but Terminal needs to be closed and reopened
    How to open Terminal

    Mac: press ⌘ + Space, type Terminal, press Enter

    Windows: open Start, type Windows PowerShell, then Open

    Not installed: Open the official download page, pick the LTS version and the click-through installer: .pkg on Mac · .msi on Windows. Double-click and follow it to the end. No curl command needed

    Open the Node.js download page ↗

    When it’s done, close Terminal, open it again and run the same command. You should see a version number: node -v

    Install once; it works for everything that needs Node.js

  2. Sign up and create a Replit SSH key

    Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.

    How to get a key is in the maker’s README below

  3. Open Terminal

    Mac: press Command+Space and type Terminal · Windows: open PowerShell

  4. Paste this command and press Enter

    claude mcp add --scope user replit-ssh --env MCP_REPLIT_SSH_STRICT_HOST_KEY=your-value -- npx -y @mindstone/mcp-server-replit-ssh

    Replace “your-value” with your key before pressing Enter

    Paste the key only into the app’s field, never into a chat or to anyone

  5. Type /mcp in Claude Code

    You should see Replit SSH listed as connected

  6. Try it

    Use Replit SSH and tell me what you can do for me, then show me one thing

    ✓ If Claude Code says it is using Replit SSH or shows a Replit SSH tool in the answer, you are connected

2 optional setting(s) (works without them)

The command above works without these. Add them only if you want to change something, following the maker’s description.

  • REPLIT_SSH_REQUEST_TIMEOUT_MS Optional per-request timeout in milliseconds (default 60000, max 600000). · default 60000
  • 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, then $HOME/.replit-mcp/known_hosts.

Descriptions are as written by the maker.

Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version

Works with Cursor, with some setup first

You need a Replit SSH key (create it on the maker’s site) · Install Node.js on your computer first (one time)

Let AI install it

Copy this message into a Cursor chat. The AI checks your computer, tells you which file it will change, and waits for your OK every time.

Please install the MCP server Replit SSH for Cursor on this computer, in this order: 1) Check Node.js with node -v. If it is missing, tell me to install it from https://nodejs.org/en/download; do not install it yourself. 2) Use only this config (already checked by PopNx MCP): { "mcpServers": { "replit-ssh": { "command": "npx", "args": [ "-y", "@mindstone/mcp-server-replit-ssh" ], "env": { "MCP_REPLIT_SSH_STRICT_HOST_KEY": "your-value" } } } } 3) Tell me the full path of the file you will change, or the command you will run, and wait for my OK. 4) For MCP_REPLIT_SSH_STRICT_HOST_KEY, leave "your-value" in place and tell me to paste the real value myself into the file or the app’s field. Never ask me to type a key in chat. 5) Do what we agreed, then check that the Replit SSH tools really show up.

This message has no key in it. If a key is needed, the AI will ask you to paste it yourself into the file or the app’s field.

  1. Install Node.js (if you don’t have it)

    Already installed? Check first · Open Terminal, type this command and press Enter

    node -v
    • A version number such as v26.13.1 = installed, skip this step
    • "command not found" (on Windows: "is not recognized") = not installed yet, or installed but Terminal needs to be closed and reopened
    How to open Terminal

    Mac: press ⌘ + Space, type Terminal, press Enter

    Windows: open Start, type Windows PowerShell, then Open

    Not installed: Open the official download page, pick the LTS version and the click-through installer: .pkg on Mac · .msi on Windows. Double-click and follow it to the end. No curl command needed

    Open the Node.js download page ↗

    When it’s done, close Terminal, open it again and run the same command. You should see a version number: node -v

    Install once; it works for everything that needs Node.js

  2. Sign up and create a Replit SSH key

    Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.

    How to get a key is in the maker’s README below

  3. Click this button to open Cursor

    Open in Cursor

    Cursor asks you to confirm; click Install

  4. Fill in your key

    In the Replit SSH settings, MCP_REPLIT_SSH_STRICT_HOST_KEY is empty; add your key and save

    Paste the key only into the app’s field, never into a chat or to anyone

  5. Open the AI chat in Cursor in Agent mode

  6. Try it

    Use Replit SSH and tell me what you can do for me, then show me one thing

    ✓ If Cursor says it is using Replit SSH or shows a Replit SSH tool in the answer, you are connected

2 optional setting(s) (works without them)

The command above works without these. Add them only if you want to change something, following the maker’s description.

  • REPLIT_SSH_REQUEST_TIMEOUT_MS Optional per-request timeout in milliseconds (default 60000, max 600000). · default 60000
  • 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, then $HOME/.replit-mcp/known_hosts.

Descriptions are as written by the maker.

Menu names checked against Cursor’s help page on Nov 11, 2026 · your screen may differ slightly by app version

Works with VS Code, with some setup first

You need a Replit SSH key (create it on the maker’s site) · Install Node.js on your computer first (one time)

Let AI install it

Copy this message into a VS Code chat. The AI checks your computer, tells you which file it will change, and waits for your OK every time.

Please install the MCP server Replit SSH for VS Code on this computer, in this order: 1) Check Node.js with node -v. If it is missing, tell me to install it from https://nodejs.org/en/download; do not install it yourself. 2) Use only this config (already checked by PopNx MCP): { "servers": { "replit-ssh": { "type": "stdio", "command": "npx", "args": [ "-y", "@mindstone/mcp-server-replit-ssh" ], "env": { "MCP_REPLIT_SSH_STRICT_HOST_KEY": "your-value" } } } } 3) Tell me the full path of the file you will change, or the command you will run, and wait for my OK. 4) For MCP_REPLIT_SSH_STRICT_HOST_KEY, leave "your-value" in place and tell me to paste the real value myself into the file or the app’s field. Never ask me to type a key in chat. 5) Do what we agreed, then check that the Replit SSH tools really show up.

This message has no key in it. If a key is needed, the AI will ask you to paste it yourself into the file or the app’s field.

  1. Install Node.js (if you don’t have it)

    Already installed? Check first · Open Terminal, type this command and press Enter

    node -v
    • A version number such as v26.13.1 = installed, skip this step
    • "command not found" (on Windows: "is not recognized") = not installed yet, or installed but Terminal needs to be closed and reopened
    How to open Terminal

    Mac: press ⌘ + Space, type Terminal, press Enter

    Windows: open Start, type Windows PowerShell, then Open

    Not installed: Open the official download page, pick the LTS version and the click-through installer: .pkg on Mac · .msi on Windows. Double-click and follow it to the end. No curl command needed

    Open the Node.js download page ↗

    When it’s done, close Terminal, open it again and run the same command. You should see a version number: node -v

    Install once; it works for everything that needs Node.js

  2. Sign up and create a Replit SSH key

    Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.

    How to get a key is in the maker’s README below

  3. Click this button to open VS Code

    Open in VS Code

    VS Code asks you to confirm; click Install

  4. Fill in your key

    In the Replit SSH settings, MCP_REPLIT_SSH_STRICT_HOST_KEY is empty; add your key and save

    Paste the key only into the app’s field, never into a chat or to anyone

  5. Open the AI chat in VS Code in Agent mode

  6. Try it

    Use Replit SSH and tell me what you can do for me, then show me one thing

    ✓ If VS Code says it is using Replit SSH or shows a Replit SSH tool in the answer, you are connected

2 optional setting(s) (works without them)

The command above works without these. Add them only if you want to change something, following the maker’s description.

  • REPLIT_SSH_REQUEST_TIMEOUT_MS Optional per-request timeout in milliseconds (default 60000, max 600000). · default 60000
  • 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, then $HOME/.replit-mcp/known_hosts.

Descriptions are as written by the maker.

Menu names checked against VS Code’s help page on Nov 11, 2026 · your screen may differ slightly by app version

Other apps that use MCP, such as Windsurf, Zed or Gemini CLI, each add servers differently. See how in the app list.

See every app that uses MCP →

JSON settings are under “For developers” below

Stuck? Ask people who use Replit SSH💬 Discussion →
For developers: Terminal commands and JSON settings

Installed on your computer

Claude Code

claude mcp add --scope user replit-ssh --env MCP_REPLIT_SSH_STRICT_HOST_KEY=your-value -- npx -y @mindstone/mcp-server-replit-ssh

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "replit-ssh": {
      "command": "npx",
      "args": [
        "-y",
        "@mindstone/mcp-server-replit-ssh"
      ],
      "env": {
        "MCP_REPLIT_SSH_STRICT_HOST_KEY": "your-value"
      }
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "replit-ssh": {
      "command": "npx",
      "args": [
        "-y",
        "@mindstone/mcp-server-replit-ssh"
      ],
      "env": {
        "MCP_REPLIT_SSH_STRICT_HOST_KEY": "your-value"
      }
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "replit-ssh": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@mindstone/mcp-server-replit-ssh"
      ],
      "env": {
        "MCP_REPLIT_SSH_STRICT_HOST_KEY": "your-value"
      }
    }
  }
}

Values you fill in

  • REPLIT_SSH_REQUEST_TIMEOUT_MS env
    Optional per-request timeout in milliseconds (default 60000, max 600000).
  • MCP_REPLIT_SSH_STRICT_HOST_KEY secret required env
    Set 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_PATH env
    Explicit path to the connector's SSH known-hosts file. Defaults to $MCP_WORKSPACE_PATH/.replit-ssh-known-hosts, then $HOME/.replit-mcp/known_hosts.

Descriptions are as written by the maker.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

At a glance

GitHub starsi
14 (Stars for the whole repo)
This repo holds several MCP listings; its stars count once in rankings
Downloads per weeki
114/wk
Licencei
No licence stated
Connection
Runs on your computer
Latest versioni
0.2.2
Published to registryi
Aug 10, 2026
Code last changedi
Nov 15, 2026
Maker
mindstone
Packages
npm: @mindstone/mcp-server-replit-ssh
Registry status
Active

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

All apps, with pros and cons →

Related guides

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 16, 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 yesterday

  • ! Caution

    Has a licence

    GitHub could not identify the licence type; open the file to check

  • – 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

Published vulnerabilities (OSV.dev)

No entries on OSV.dev for @mindstone/mcp-server-replit-ssh@0.2.2

Checks only this package version, not every dependency · checked Nov 15, 2026

What we check → · JSON

Makers: ask for a re-check or report wrong info

Discussion

Ask, share a tip or report that it does not work. Sorted by what people marked helpful.

No posts yet. Be the first to ask or share.

Posts here are written by users, not the PopNx team.

Sign in to post

User reviews

No reviews yet

Sign in to write a review

Compared with others in Developer toolsi

  • More stars than 0% of the other 5930 servers in this category
  • Published to the registry more recently than 26% of the other 5930 servers in this category
  • Basic checks equal to or better than 44% of the other 5930 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 3 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?

You need to fill in: MCP_REPLIT_SSH_STRICT_HOST_KEY

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 yesterday, 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: GitDiagram, Appllama, Cloudflare MCP, Omnara, Repowise

Similar alternatives

Same category, other makers, commands already checked. Official ones first, then by stars.

Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

GitDiagram

Architecture diagrams, explanations and Mermaid source for public GitHub repositories.

by ahmedkhaleel2004Widely used★ 18.9KUpdated 2 months ago

Runs in the cloud✓ service owner · gitdiagram.comTried by the PopNx team

Appllama

Study screens, flows and paywalls from top-earning iOS apps, then build from what wins.

by AppllamaWidely used★ 5.2KUpdated 3 months ago

Runs in the cloud✓ service owner · appllama.io

Cloudflare MCP

Cloudflare MCP servers

by cloudflareWidely used★ 4.5KUpdated 14 months ago

Runs in the cloud✓ service owner · mcp.cloudflare.comTried by the PopNx team

Omnara

Deploy durable AI agents with Omnara, an open-source managed-agent platform.

by omnara-aiWidely used★ 3.4KUpdated 2 months ago

Runs in the cloud✓ service owner · omnara.com

Repowise

Codebase intelligence for AI coding agents: graph, git history, docs, decisions, code health.

by repowise-devWidely used↓ 6.5K/wk★ 8.1K Stars for the whole repoUpdated 3 days ago

Computer or cloud✓ service owner · repowise.dev
  • GitDiagram — Runs in the cloud, nothing to install · No key needed
  • Appllama — Runs in the cloud, nothing to install · No key needed
  • Cloudflare MCP — Runs in the cloud, nothing to install · No key needed · In Claude’s directory
  • Omnara — Runs in the cloud, nothing to install · No key needed
  • Repowise — Cloud or install on your computer · No key needed

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-replit by default; resolved via ~/.ssh/config IdentityFile if 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.json and tell me which scripts are defined."

Tools the host calls:

  1. replit_check_connection — verifies SSH connectivity and SFTP support, returns latency.
  2. replit_list_files — lists files and directories at ..
  3. replit_read_file — reads package.json from 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.dev host 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_ssh once 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, max 600000). 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 to 1 to require pre-populated known-hosts entries. When unset (default), unknown hosts are recorded on first contact (matches OpenSSH's StrictHostKeyChecking=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 mode 0o600 and the parent directory with mode 0o700.

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. Set verbose=true for handshake/auth diagnostics.
  • replit_list_files — list files and directories at a path (relative to the project root). Default path is .. Entry types are file/directory/symlink (symlinks are reported as links, not followed — consistent with replit_stat).
  • replit_read_file — read a file (capped at 1 MiB; larger files fail with FILE_TOO_LARGE rather 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: true when a file has more).
  • replit_stat — file/directory metadata (type, size, permissions, mtime/atime) without reading contents. Symlinks are reported as type symlink (via lstat), not followed.
Write
  • replit_write_file — atomic write via temp + ext_openssh_rename with SHA-256 read-back verification. Fails closed if the server doesn't support atomic overwrite and the target already exists (we never unlink + rename, which opens a data-loss window).
  • replit_move — move or rename a file or directory. Never overwrites: fails with DESTINATION_EXISTS if 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 carries destructiveHint: true and 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 mode 0600 (or icacls ACL on Windows), and append a *.replit.dev block to ~/.ssh/config. Idempotent by default; pass force_regenerate=true to replace the existing key (you will need to re-register the new public key with Replit).

Security notes

  • Host allowlist. Only *.replit.dev hosts are accepted, case-insensitive suffix match. Any other host is rejected before the SSH connection is opened.
  • `~/.ssh/` mutation surface. replit_setup_ssh writes to the operator's home directory (~/.ssh/rebel-replit, ~/.ssh/rebel-replit.pub, ~/.ssh/config). Configuration rewrites use a safe AST-only evaluator that skips Match exec blocks entirely, rather than the upstream ssh-config.compute() which would spawnSync them 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_file writes 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 to unlink + rename.
  • Read-back verification. Every replit_write_file re-reads the final file and asserts SHA-256 equality before returning verified: true.
  • SSH host-key verification. Every outbound SSH connection passes an explicit hostVerifier to ssh2 that pins server fingerprints in a per-user known-hosts file (mode 0o600). The default behaviour mirrors OpenSSH's StrictHostKeyChecking=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 with HOST_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 bare replit.dev entry 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 native SHA256:… lines and OpenSSH ssh-keyscan output ( ), and honours @revoked markers 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 set MCP_REPLIT_SSH_STRICT_HOST_KEY=1 and 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 finding replit-ssh-001.
  • Untrusted-content envelopes. Content from replit_read_file, directory-entry names from replit_list_files, matched paths/lines from replit_search_files, and the peer-authored fields from replit_check_connection (server version, working directory, and diagnostic event details such as the server banner and keyb

Only the beginning is shown; read the rest in the repo