Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Shared SSH PTY runtime for MCP clients with viewer, input lock, async tracking, and policy rules.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
SSH_MCP_CONFIG, SSH_MCP_INSTANCE, VIEWER_PORT, VIEWER_HOST, AUTO_OPEN_TERMINAL, SSH_MCP_MODE, SSH_MCP_LOCAL, SSH_MCP_DEBUG, SSH_HOST, SSH_PORT, SSH_USER, SSH_PASSWORD, SSH_KEY「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"ssh-session": {
"command": "npx",
"args": [
"-y",
"ssh-session-mcp"
],
"env": {
"SSH_MCP_CONFIG": "your-value",
"SSH_MCP_INSTANCE": "your-value",
"VIEWER_PORT": "your-value",
"VIEWER_HOST": "your-value",
"AUTO_OPEN_TERMINAL": "your-value",
"SSH_MCP_MODE": "your-value",
"SSH_MCP_LOCAL": "your-value",
"SSH_MCP_DEBUG": "your-value",
"SSH_HOST": "your-value",
"SSH_PORT": "your-value",
"SSH_USER": "your-value",
"SSH_PASSWORD": "your-value",
"SSH_KEY": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add ssh-session --env SSH_MCP_CONFIG=your-value --env SSH_MCP_INSTANCE=your-value --env VIEWER_PORT=your-value --env VIEWER_HOST=your-value --env AUTO_OPEN_TERMINAL=your-value --env SSH_MCP_MODE=your-value --env SSH_MCP_LOCAL=your-value --env SSH_MCP_DEBUG=your-value --env SSH_HOST=your-value --env SSH_PORT=your-value --env SSH_USER=your-value --env SSH_PASSWORD=your-value --env SSH_KEY=your-value -- npx -y ssh-session-mcp動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"ssh-session": {
"command": "npx",
"args": [
"-y",
"ssh-session-mcp"
],
"env": {
"SSH_MCP_CONFIG": "your-value",
"SSH_MCP_INSTANCE": "your-value",
"VIEWER_PORT": "your-value",
"VIEWER_HOST": "your-value",
"AUTO_OPEN_TERMINAL": "your-value",
"SSH_MCP_MODE": "your-value",
"SSH_MCP_LOCAL": "your-value",
"SSH_MCP_DEBUG": "your-value",
"SSH_HOST": "your-value",
"SSH_PORT": "your-value",
"SSH_USER": "your-value",
"SSH_PASSWORD": "your-value",
"SSH_KEY": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"ssh-session": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"ssh-session-mcp"
],
"env": {
"SSH_MCP_CONFIG": "your-value",
"SSH_MCP_INSTANCE": "your-value",
"VIEWER_PORT": "your-value",
"VIEWER_HOST": "your-value",
"AUTO_OPEN_TERMINAL": "your-value",
"SSH_MCP_MODE": "your-value",
"SSH_MCP_LOCAL": "your-value",
"SSH_MCP_DEBUG": "your-value",
"SSH_HOST": "your-value",
"SSH_PORT": "your-value",
"SSH_USER": "your-value",
"SSH_PASSWORD": "your-value",
"SSH_KEY": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
SSH_MCP_CONFIG envSSH_MCP_INSTANCE envVIEWER_PORT envVIEWER_HOST envAUTO_OPEN_TERMINAL envSSH_MCP_MODE envSSH_MCP_LOCAL envSSH_MCP_DEBUG envSSH_HOST envSSH_PORT envSSH_USER envSSH_KEY envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント Zw-awa で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:SSH_PASSWORD
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(2.7.1)がレジストリに届いたのは6 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, AvaHR
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
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.
Read hiring data and create inactive assessment and questionnaire drafts for human review.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
中文 | English
Persistent shared-terminal runtime for MCP clients over SSH.
ssh-session-mcp gives the user and the AI the same SSH PTY session, adds a browser viewer, tracks who typed what, and makes long-running remote work manageable instead of stateless.
git clone this repository.npx -y ssh-session-mcp --viewerPort=autonpm install -g ssh-session-mcpdocker.io/zwawa/ssh-session-mcpgit clone is only for contributors, source builds, and local development.npx or a global npm install is still the lowest-friction path. Docker is mainly useful when you want a pinned runtime, container-based deployment, or registry-backed distribution.Most SSH-oriented MCP servers can execute commands, but they do not manage terminal state well enough for real collaboration.
ssh-session-mcp focuses on the missing runtime layer:
Key directories and files:
| Path | Purpose |
|---|---|
src/ | Core TypeScript implementation for the MCP server, SSH session runtime, viewer, tools, and config CLIs |
src/viewer-html/ | HTML page generators and browser-side scripts for the terminal viewer |
test/ | Vitest coverage for runtime behavior, viewer contracts, config loading, and repository validation |
docs/ | Supporting documentation such as contracts, failure taxonomy, platform notes, and Docker usage |
docs/examples/ | Example config files for normal and Docker-oriented setups |
scripts/ | Build, version sync, and local operator helper scripts |
deploy/helm/ | Helm chart for Kubernetes deployment in single-node or distributed v0 mode |
site/ | GitHub Pages landing page source |
dist/ | Generated static site output from npm run build:site |
build/ | Generated JavaScript output from npm run build |
Dockerfile | Container image build definition |
docker-compose.yml | Profile-based Docker Compose example |
docker-compose.env.yml | Legacy .env-style Docker Compose example |
server.json | MCP server metadata for marketplace-style distribution |
AGENT.md | Primary agent/operator playbook |
llms-install.md | Agent-focused installation and environment checklist |
.env.example | Legacy single-target environment variable template |
If the goal is to let Claude Code, Codex, or OpenCode install the server automatically, prefer npx -y ssh-session-mcp in the MCP command instead of a prior global install.
For Cline Marketplace and other agent installers, see llms-install.md. This repo is structured to be one-click installable through an npx -y ssh-session-mcp --viewerPort=auto command.
claude mcp add --transport stdio ssh-session-mcp -- npx -y ssh-session-mcp --viewerPort=auto
Windows note from the Claude Code docs: native Windows users should wrap npx with cmd /c for stdio MCP servers.
claude mcp add --transport stdio ssh-session-mcp -- cmd /c npx -y ssh-session-mcp --viewerPort=auto
codex mcp add ssh-session-mcp -- npx -y ssh-session-mcp --viewerPort=auto
OpenCode's opencode mcp add flow is interactive. Choose a local MCP server and use this command:
npx -y ssh-session-mcp --viewerPort=auto
If you prefer config instead of the interactive flow:
{
"$schema": "https://opencode.ai/config.json", "mcp": { "ssh-session-mcp": { "type": "local", "command": ["npx", "-y", "ssh-session-mcp", "--viewerPort=auto"] } } }
This is the closest thing to "automatic installation" for stdio MCP servers today: the MCP client stores the command, and npx -y downloads the package automatically the first time it runs.
npm install -g ssh-session-mcp
ssh-session-mcp-ctl launch --local --viewerPort=auto
This starts a local shell instead of SSH and opens the browser terminal, which is the easiest way to test the MCP runtime before touching a real server.
Use the MCP server binary directly when wiring a client:
# Global install
npm install -g ssh-session-mcp
ssh-session-mcp --viewerPort=auto
# Claude Code
claude mcp add --transport stdio ssh-session-mcp -- ssh-session-mcp --viewerPort=auto
codex mcp add ssh-session-mcp -- ssh-session-mcp --viewerPort=auto
If you prefer npx instead of a global install:
npx -y ssh-session-mcp --viewerPort=auto
Create .env from .env.example:
cp .env.example .env
SSH_HOST=YOUR_DEVICE_HOST
SSH_PORT=22 SSH_USER=YOUR_DEVICE_USER SSH_PASSWORD= SSH_KEY= VIEWER_PORT=auto AUTO_OPEN_TERMINAL=false SSH_MCP_MODE=safe
Then launch:
ssh-session-mcp-ctl launch --viewerPort=auto
For multiple boards or named targets, create ssh-session-mcp.config.json:
{
"defaultDevice": "DEVICE_A_ID", "devices": [ { "id": "DEVICE_A_ID", "host": "DEVICE_A_HOST", "port": 22, "user": "DEVICE_A_USER", "auth": { "passwordEnv": "DEVICE_A_PASSWORD" }, "defaults": { "term": "xterm-256color", "cols": 120, "rows": 40, "autoOpenViewer": true, "viewerMode": "browser" } } ] }
Discovery order:
--config=/path/to/config.jsonssh-session-mcp.config.json.env fallbackImportant:
auth.password is intentionally unsupported. Use auth.passwordEnv or auth.keyPath..env or the parent environment, not in repo-tracked JSON.Public Docker images should be distributed through Docker Hub, with GitHub Container Registry as an optional secondary registry:
docker.io/zwawa/ssh-session-mcp:<version>
docker.io/zwawa/ssh-session-mcp:latest ghcr.io/zw-awa/ssh-session-mcp:
Recommended container launch for a real SSH target:
docker run --rm -i \
-p 8793:8793 \ -e VIEWER_PORT=8793 \ -e VIEWER_HOST=0.0.0.0 \ -e SSH_HOST=YOUR_DEVICE_HOST \ -e SSH_PORT=22 \ -e SSH_USER=YOUR_DEVICE_USER \ -e SSH_PASSWORD \ docker.io/zwawa/ssh-session-mcp:latest
Export the password in your shell first instead of placing it directly on the command line.
Recommended launch for profile-based config:
docker run --rm -i \
-p 8793:8793 \ -e VIEWER_PORT=8793 \ -e VIEWER_HOST=0.0.0.0 \ -e SSH_MCP_CONFIG=/workspace/ssh-session-mcp.config.json \ -v "$PWD/ssh-session-mcp.config.json:/workspace/ssh-session-mcp.config.json:ro" \ -v "/path/to/host/keys:/workspace/keys:ro" \ docker.io/zwawa/ssh-session-mcp:latest
Equivalent Compose example:
docker compose up -d
See docker-compose.yml for a ready-to-run example that mounts ssh-session-mcp.config.json, publishes the viewer on 8793, and uses SSH_KEY_DIR when set or falls back to a dedicated ./keys directory. For the full Docker guide, including the legacy .env compose variant and MCP client config snippets, see docs/docker.md. For a container-oriented profile example, see docs/examples/ssh-session-mcp.config.docker.example.json.
Container-specific notes:
VIEWER_PORT to 8793 when unset so the browser viewer can be published reliably.VIEWER_HOST to 0.0.0.0 inside the container so the mapped port is reachable from the host.AUTO_OPEN_TERMINAL defaults to false in the container because browser auto-open from inside a container is usually not useful.docker-compose.yml, SSH_KEY_DIR overrides the default key mount path. If it is unset, Compose falls back to ./keys, not the repo root..env, or --env-file.npx is still simpler unless your client explicitly prefers containerized commands.Docker-based MCP client command examples:
# Claude Code
claude mcp add --transport stdio ssh-session-mcp -- docker run --rm -i -p 8793:8793 -e VIEWER_PORT=8793 -e VIEWER_HOST=0.0.0.0 docker.io/zwawa/ssh-session-mcp:latest
codex mcp add ssh-session-mcp -- docker run --rm -i -p 8793:8793 -e VIEWER_PORT=8793 -e VIEWER_HOST=0.0.0.0 docker.io/zwawa/ssh-session-mcp:latest
For JSON-based MCP clients, the same pattern works by using docker as the command and passing the remaining run ... docker.io/zwawa/ssh-session-mcp:latest tokens as args.
This is useful when:
For many users, publishing to npm and recommending npx -y ssh-session-mcp --viewerPort=auto is still the lower-friction install path.
The browser viewer is not decorative. It is part of the workflow:
For users:
install -> launch viewer -> connect once -> keep the session alive -> let the AI help
For agents:
ssh-qu冒頭だけを表示しています。続きはリポジトリで読めます