GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
作者による説明(英語の原文)
Persistent stateful remote SSH sessions for AI agents via MCP + OpenSSH.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
SSH_MCP_ALLOWED_HOSTS, SSH_MCP_CONFIG必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"remote-ssh": {
"command": "npx",
"args": [
"-y",
"@zyluo/remote-ssh-mcp"
],
"env": {
"SSH_MCP_ALLOWED_HOSTS": "your-value",
"SSH_MCP_CONFIG": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add remote-ssh --env SSH_MCP_ALLOWED_HOSTS=your-value --env SSH_MCP_CONFIG=your-value -- npx -y @zyluo/remote-ssh-mcp動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"remote-ssh": {
"command": "npx",
"args": [
"-y",
"@zyluo/remote-ssh-mcp"
],
"env": {
"SSH_MCP_ALLOWED_HOSTS": "your-value",
"SSH_MCP_CONFIG": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"remote-ssh": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@zyluo/remote-ssh-mcp"
],
"env": {
"SSH_MCP_ALLOWED_HOSTS": "your-value",
"SSH_MCP_CONFIG": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
SSH_MCP_ALLOWED_HOSTS envSSH_MCP_CONFIG envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月8日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント the-nine-nation で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.2.0)がレジストリに届いたのは3 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:GitHub, Desktop Commander, Cloudflare MCP
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Remote SSH MCP
Persistent, stateful remote Bash sessions for AI agents
via the Model Context Protocol
Why · Features · How it works · Tools · Quick start · Config · Security · 简体中文
Most agents reach remote machines like this:
bash → ssh host "cmd" → disconnect → repeat
Every call pays the same tax:
| Pain | What happens |
|---|---|
| 🔁 Token waste | Banners, MOTD, login noise, and pwd / whoami probes flood the context |
| 🧊 Lost state | cwd, export, venv activation, and shell side effects vanish |
| 🔌 Unstable | Fresh connects hit timeouts, host-key prompts, ProxyJump, and auth jitter |
| 🌀 Error spiral | The model compensates with longer probe commands → more tokens |
Remote SSH MCP turns a long-lived remote Bash into first-class MCP tools. One session ID keeps working directory, environment variables, and shell side effects. Open a new session when you need a clean environment.
ssh in bash?Concrete gains for agent workflows (multi-step remote work: deploy, debug, build, inspect logs):
| Dimension | One-shot ssh host "…" | Remote SSH MCP |
|---|---|---|
| 💰 Tokens | Each step re-pays connect noise + state probes; models often re-cd / re-pwd | Pay once on ssh_open; later ssh_run returns mostly command output. Structured tools + head/tail caps cut tool-result bloat. In multi-step sessions this commonly cuts remote-tool context by ~50–80% vs reconnect-every-time (exact savings depend on MOTD size and how chatty the model is). |
| ✅ Success rate | *N* steps ≈ *N* handshakes → *N* chances to fail (timeout, jump, agent, host key) | One handshake per session; subsequent commands ride a live shell. Long jobs use running + ssh_peek instead of killing the tool call and restarting. Fewer reconnects → far fewer false “SSH failed” loops mid-task. |
| 🧳 Portability | Remote needs nothing extra — but every agent machine reimplements the same brittle ssh … patterns | Install once on the machine that runs Claude / Cursor / Grok / etc. Remote hosts install nothing (no Node, no MCP daemon, no agent). Only a normal shell account + tools already required for SSH (bash, base64, stty, …). Keys and jump hosts stay in local ~/.ssh/config. |
| 🧠 Model ergonomics | Model invents ssh strings, escapes, and recovery | Stable tools: open → run → peek → close. Session id is the only handle. |
| 🔐 Trust boundary | Easy to over-expose keys or prompt for passwords in-band | OpenSSH client only; tools never accept passwords or private-key material |
Portability in one line: put the MCP on your dev box / AI host; every server already in your SSH config is reachable — zero package install on the remote fleet.
┌─────────────────────────┐ SSH (OpenSSH) ┌──────────────────┐
│ Your laptop / CI agent │ ───────────────────────────► │ prod / staging │ │ Claude · Cursor · Grok │ ~/.ssh/config · agent │ no MCP install │ │ + remote-ssh-mcp │ │ plain Bash OK │ └─────────────────────────┘ └──────────────────┘
Token sketch (illustrative multi-step remote debug):
One-shot path (per step × 8):
ssh wrapper + banner/MOTD + pwd/whoami + re-cd + command output → noise dominates; context fills with reconnect junk
Session path: ssh_open → once (handshake + READY) ssh_run × 8 → mostly the real stdout/stderr (truncated head+tail) → context stays on the work product, not the transport
It does not reimplement SSH. Your system OpenSSH client stays in charge — so ~/.ssh/config, known hosts, the SSH agent, ProxyJump routes, and hardware keys keep working exactly as they already do.
ssh_hosts() → discover allowed Host aliases
ssh_open(host) → session id ssh_run(id, command) → same cwd + env as last time ssh_peek / ssh_interrupt → observe or recover long / stuck work ssh_close(id) → release the shell and connection
ssh_run callsmaxSessions)Include, agent sockets, and ProxyJumpssh_run waits up to wait_sec (default 10s), then returns status: "running" while the remote command continuesdocker pull, builds, downloads, and deploys that must not block the tool call foreverssh_config + optional config / env overrides*, ?, or ! are ignored0600) with hashed commandsTERM=dumb, NO_COLOR, bracketed-paste off — less junk at the sourcestderr, false truncation flags, and request-echo fields so dual content + structuredContent stays cheapssh_hosts returns only safe metadata: alias, hostname, user, port, proxy_jumpIdentityFile, certificates, agent sockets, or ProxyCommandflowchart LR
A[AI Agent] -->|MCP tools| B[Remote SSH MCP] B -->|spawn| C[OpenSSH client] C -->|SSH + PTY| D[Remote Bash] D --> E[(cwd / env / side effects)]
subgraph Local machine B C F[~/.ssh/config agent / keys] C -.-> F end
subgraph Remote host D E end
Typical agent flow
1. ssh_hosts() # pick an alias from the allowlist
| Tool | What it does |
|---|---|
| 🗂️ `ssh_hosts` | List allowed Host aliases (safe metadata only). Pass reload=true after editing ~/.ssh/config |
| 🔓 `ssh_open` | Open a clean persistent shell for an allowed Host alias → returns session id |
| ▶️ `ssh_run` | Run a non-interactive command in an existing session |
| 👀 `ssh_peek` | Latest N lines of output + status; optional wait_sec long-polls while running |
| ⛔ `ssh_interrupt` | Send Ctrl-C and wait for confirmed shell recovery |
| 📋 `ssh_list` | List sessions, cwd, state, idle countdown, and capacity |
| 🔒 `ssh_close` | Tear down remote temp state and close the connection |
| Tool | Key params |
|---|---|
ssh_open | host (required Host alias), optional name label |
ssh_run | id, command, optional wait_sec, optional timeout_sec |
ssh_peek | id, optional lines (default 50, max 1000), optional wait_sec |
ssh_interrupt / ssh_close | id |
ssh_hosts | optional reload boolean |
| Requirement | Notes |
|---|---|
| Node.js | 20 or newer |
| OpenSSH client | System ssh on PATH (or set sshPath) |
| Remote host | Bash + base64, stty, mkdir, cat, rm |
| SSH setup | Host alias in ~/.ssh/config, host key already trusted |
⚠️ First-time host-key confirmation and authentication must be completed in a normal terminal. The MCP server never shows password or trust prompts.
git clone https://github.com/the-nine-nation/remote-ssh-mcp.git
cd remote-ssh-mcp npm install npm run build npm test
Run the server:
node /absolute/path/to/remote-ssh-mcp/dist/index.js
Or install from npm (once published):
npx @zyluo/remote-ssh-mcp
npm install -g @zyluo/remote-ssh-mcp remote-ssh-mcp
Or, after a local package install from this repo, use the remote-ssh-mcp executable.
Most stdio hosts accept a shape like this (outer key may differ by product):
{
"mcpServers": { "remote-ssh": { "command": "node", "args": [ "/absolute/path/to/remote-ssh-mcp/dist/index.js" ], "env": { "SSH_MCP_ALLOWED_HOSTS": "prod,staging" } } } }
Cursor · Claude Desktop · Claude Code · other MCP-capable hosts: point command / args at the bu
冒頭だけを表示しています。続きはリポジトリで読めます