What it is: - An MCP server that maintains stateful SSH/terminal sessions for AI assistants - Enables file uploads/downloads (up to 10MB) through existing SSH connections - Works with Cursor IDE, Cursor, VS Code (Cline), and other MCP-compatible tools - No separate SCP/SFTP needed – uses base64 encoding through the terminal session
Why I built this: - AI assistants execute commands statelessly – each SSH command hangs indefinitely, and you can't run follow-up commands in the same session - I needed to debug production servers through Cursor IDE, but the stateless nature made it impossible - Existing solutions required complex scripting or manual intervention
What you can do: - Ask Cursor IDE: "Debug the slow API on prod-server-01" - AI automatically: SSHs in → checks processes → downloads logs → uploads fixes → restarts services - All in one persistent session, no re-authentication needed - Works through jump hosts and bastions
How it works: - Uses PTY (Pseudo-Terminal) for full TTY emulation with state persistence - Smart markers detect command completion automatically - File transfer via base64 encoding through the existing SSH session - Supports parallel sessions for batch operations
Tech stack: - TypeScript + Model Context Protocol SDK - node-pty for terminal emulation - Runs as stdio transport (no network exposure)
This is my second open-source project (first was FastQR, which some of you may remember). I've been using it daily for server management tasks, but I'm sure there are edge cases and improvements to be made.
Security notes: - Uses SSH key authentication (no password storage) - File size limited to 10MB - Recommend using read-only accounts for investigation tasks - All operations are explicit (AI can't run hidden commands)
I'd really appreciate feedback from the community, especially around: - Security considerations I might have missed - Edge cases in terminal emulation - Better ways to handle file transfer - Use cases I haven't thought of
Any criticism, suggestions, or contributions would be greatly appreciated. Thanks for checking it out!