Remote Session Mcp

Created By
kayoch1n3 months ago
A Model Context Protocol (MCP) server that enables AI assistants to manage persistent SSH sessions and execute commands on remote servers.
Overview

Remote Session MCP Server

A Model Context Protocol (MCP) server that enables AI assistants to manage persistent SSH sessions and execute commands on remote servers.

Key Advantages

Persistent Sessions with State

Unlike SSH tools that execute single commands in isolation, this server uses invoke_shell() to maintain interactive shell sessions where state persists across multiple commands:

CapabilityPersistent SessionsSingle-Command
Working directory (cd)PersistsLost after each command
Environment variables (export)PersistsLost after each command
Multi-step workflowsNatural flowRequires manual context passing
AI context awarenessTracks pwd automaticallyNo state tracking

Typical workflow:

create → execute("cd /app") → execute("export ENV=prod") → execute("./deploy.sh") → close

This is ideal for AI-driven deployment, debugging, and server management tasks where commands build on each other.

Automatic SSH Config Integration

  • Parses ~/.ssh/config automatically for connection parameters
  • Supports key-based authentication, custom ports, jump hosts, and all standard SSH options
  • No need to hardcode credentials or connection details

Installation

# Using uv (recommended)
uv pip install -e .

# Or using pip
pip install -e .

Usage

1. Configure SSH

Ensure your servers are configured in ~/.ssh/config:

Host production
    HostName 192.168.1.100
    User deploy
    IdentityFile ~/.ssh/id_rsa

2. Run the MCP Server

remote-session-mcp
# Or: python -m remote_session_mcp

3. Claude Code Integration

Create .claude/settings.json or mcp.json in your project:

{
  "mcpServers": {
    "remote-session": {
      "command": "uv",
      "args": ["run", "remote-session-mcp"],
      "cwd": "/path/to/sshmcp"
    }
  }
}

4. Available Tools

ToolDescription
hostsList all hosts from ~/.ssh/config
createCreate a persistent SSH session
executeExecute a command (state persists)
closeClose a session
sessionsList active sessions
uploadUpload a file to remote server
downloadDownload a file from remote server

Example: Deploy an Application

// 1. Create session
{"tool": "create", "arguments": {"host": "production"}}

// 2. Navigate and deploy (state persists)
{"tool": "execute", "arguments": {"session_id": "session_abc", "command": "cd /var/www/myapp"}}
{"tool": "execute", "arguments": {"session_id": "session_abc", "command": "git pull"}}
{"tool": "execute", "arguments": {"session_id": "session_abc", "command": "npm install"}}
{"tool": "execute", "arguments": {"session_id": "session_abc", "command": "sudo systemctl restart myapp"}}

// 3. Close session
{"tool": "close", "arguments": {"session_id": "session_abc"}}

Configuration (Optional)

Create ~/.remote-session/config.json for custom settings:

{
  "enable_raw_output": false,
  "ssh_config_path": "~/.ssh/config"
}
OptionDefaultDescription
enable_raw_outputfalseReturn raw output with only ANSI codes removed
ssh_config_path~/.ssh/configCustom path to SSH config file

Limitations

  • Linux/POSIX Only - Assumes POSIX-compatible shells and commands (pwd, echo $?)
  • Interactive Shell Required - Remote server must support interactive shell sessions
  • Session Timeout - Sessions auto-close after 1 hour of inactivity (configurable)

Server Config

{
  "mcpServers": {
    "remote-session": {
      "command": "remote-session-mcp"
    }
  }
}
Project Info
Created At
3 months ago
Updated At
3 months ago
Author Name
kayoch1n
Star
-
Language
-
License
-
Category

Recommend Servers

View All
Bring your real authenticated browser session to AI coding agents. Local-first MCP server + Chrome MV3 extension. No cloud. No telemetry.
@Cubenest

peek records the user's actual logged-in browser (DOM via rrweb, console events, network metadata, optional response bodies via opt-in Deep capture) through a Chrome MV3 extension. The extension ships events through a native-messaging stdio bridge to a local MCP server (peek-mcp), which persists them to a SQLite database at ~/.peek/sessions.db. AI coding agents (Claude Code, Cursor, Cline, Windsurf) read sessions from the database via 10 MCP tools: Tool What it does list_recent_sessions List recently recorded sessions (id, origin, ts, event count). get_session_summary LLM-readable narrative summary of a session. get_session_console_errors Console errors recorded in a session. get_session_network_errors Failed/notable network requests in a session. get_user_action_before_error Last N user actions before a console error. generate_playwright_repro Generate a runnable Playwright test from a session. get_dom_snapshot Reconstruct the DOM at a given timestamp. query_dom_history Timeline of attribute/text changes for a selector. request_authorization Side-panel consent for write actions (Level 3). execute_action Dispatch a UI action (gated by permission level + destructive blocklist). Why local-first matters Every other "browser session for AI" tool ships to a vendor cloud. peek's SQLite + extension live on the user's machine — no remote endpoints, no telemetry. The privacy policy (docs/peek/PRIVACY_POLICY.md) is the source of truth. Install # 1. Add the MCP server to Claude Code claude mcp add peek -- npx -y @peekdev/mcp # 2. Install the Chrome extension from the Chrome Web Store # (link added once the CWS listing is approved)

a day ago