Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
Read, write, list, and check files on Replit projects over SSH/SFTP, plus SSH key setup.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
REPLIT_SSH_REQUEST_TIMEOUT_MS, MCP_REPLIT_SSH_STRICT_HOST_KEY, MCP_REPLIT_SSH_KNOWN_HOSTS_PATHNecesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en 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"
}
}
}
}Ejecuta esto en tu 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-sshCompleta los valores vacíos antes de ejecutarlo.
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.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"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"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"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
REPLIT_SSH_REQUEST_TIMEOUT_MS envMCP_REPLIT_SSH_STRICT_HOST_KEY envMCP_REPLIT_SSH_KNOWN_HOSTS_PATH envEsta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 6 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub mindstone, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (0.2.2) llegó al registro hace 3 meses.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Node.js en tu computadora.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, FOGA node
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
A Finch OG Agent cell as an MCP server: read the world, dry-run and take ERC-8414 tenders by policy.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
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.*
~/.ssh/rebel-replit by default; resolved via ~/.ssh/config IdentityFile if set). No env-var-supplied secrets.STATUS.jsonReplit 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.
"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 — 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" } } }
*.replit.dev host from a Replit project (open the project, click SSH → Connect → Connect manually, copy the host and username)replit_setup_ssh once to generate one if you do not already have one.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" } } } }
cd <path-to-repo>/connectors/replit-ssh
npm install npm run build
npx -y @mindstone/mcp-server-replit-ssh
node dist/index.js
This server has no required environment variables. Authentication is via the local SSH key resolved through ~/.ssh/config.
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.{
"mcpServers": { "ReplitSSH": { "command": "npx", "args": ["-y", "@mindstone/mcp-server-replit-ssh"] } } }
{
"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.
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.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).*.replit.dev hosts are accepted, case-insensitive suffix match. Any other host is rejected before the SSH connection is opened.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... segments — relative paths only, no escape from the project root.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.replit_write_file re-reads the final file and asserts SHA-256 equality before returning verified: true.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.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 keybSolo se muestra el principio; lee el resto en el repo