Skip to main content
Glama
mitm-ssh

mitm-ssh

by code1-de

mitm-ssh

Python 3.11+ Platform MCP License

Tired of Claude running SSH commands behind your back? mitm-ssh sits between Claude and the SSH session so you can watch everything as it happens — just like a real terminal.

The server runs as a separate process in a separate terminal window. You start it, keep it visible, and watch the full SSH session unfold in real time while Claude works.

An MCP server that wraps ssh.exe inside a Windows ConPTY, pipes its stdio through MCP tools, and displays the live terminal output in its own terminal window — like looking over Claude's shoulder. It also helps debug SSH and MCP connection issues by showing connection build-up and tear-down as status messages.

How it works

Claude Code  <--MCP/HTTP-->  mitm-ssh (server.py)  <--stdin/stdout-->  ssh.exe  <-->  remote host

You run the server in a terminal. Claude connects over HTTP and controls the SSH session via MCP tools. You see everything happening in real time — SSH output streams to your terminal, and connect/disconnect events are logged in grey.

Related MCP server: MCP SSH Server

Setup

Designed for Windows (uses ssh.exe). Requires Python 3.11+.

# 1. Start the server (keep this terminal open)
uv run server.py
# or without uv: pip install mcp && python server.py

# 1b. Optional: enable local keyboard input to the SSH session
uv run server.py -i

# 2. Register with Claude Code (once)
claude mcp add -s user -t http mitm-ssh http://127.0.0.1:8022/mcp

MCP Tools

Tool

Description

ssh_connect

Spawn ssh.exe to a host (with optional user, port, identity file)

ssh_run

Send a command + Enter, return output

ssh_send_raw

Send raw text without newline (for prompts, passwords)

ssh_read

Read new output since last read

ssh_read_all

Read recent output from the full buffer

ssh_status

Check if an SSH session is active

ssh_disconnect

Terminate the SSH session

Usage

With the server running, just ask Claude:

Connect to myserver and check disk usage

Claude will call ssh_connect, then ssh_run with df -h, and report back.

Notes

  • Key-based auth recommended — password auth is unreliable without a real PTY

  • ANSI pass-through — ConPTY gives ssh.exe a real terminal, so you get colors and full TUI output

  • Ctrl+C is forwarded to the SSH session (transparent) — use Ctrl+Break to kill the server

  • SSH output is also appended to ssh_output.log

  • Server listens on 127.0.0.1:8022 (localhost only)

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables SSH remote access to servers through Claude, allowing users to execute commands, transfer files via SFTP, and manage multiple remote connections using natural language.
    12
    9
    MIT
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Connects Claude to remote servers via SSH to execute commands, manage files, and browse directories. It allows users to add, edit, and switch between multiple server configurations through natural language conversations.
    -
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables Claude Code to control remote servers via SSH for automated deployment, testing, and operations, including command execution and file transfer.
    4
    -