putty-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@putty-mcpOpen an SSH session to myserver using my ppk key"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PuTTY MCP Server
The full PuTTY toolchain exposed as a Model Context Protocol (MCP) server. Gives AI assistants like Claude complete access to SSH, SCP, SFTP, serial, key management, and more — all through PuTTY's battle-tested Windows tools.
30 tools across 8 categories. Windows-native. Covers every PuTTY executable.
What Makes This Different
Most SSH MCP servers give you basic ssh and scp wrappers. This one wraps the entire PuTTY suite with features you won't find elsewhere:
Persistent interactive sessions — Open a shell, send commands, read output over multiple turns. Background reader threads keep output flowing.
Native PPK v3 key conversion — Converts OpenSSH keys to PuTTY's PPK format in pure Python. No GUI puttygen needed.
Windows Registry integration — Full CRUD for PuTTY saved sessions. Create, read, update, delete sessions programmatically.
Multi-hop SSH — Chain through jump hosts with automatically constructed proxy commands.
Serial port support — Open PuTTY on COM ports with configurable baud, parity, stop bits.
Pageant integration — Load keys into PuTTY's SSH agent.
Related MCP server: SSH MCP Server
Covered Executables
Executable | Purpose |
| GUI terminal sessions (SSH, Telnet, serial, raw) |
| Command-line SSH/Telnet/serial execution |
| SCP/SFTP file transfer |
| Interactive SFTP sessions |
| SSH key agent |
| Key generation (via |
Quick Start
Prerequisites
Python 3.10+
PuTTY installed (all tools)
Windows (PuTTY is Windows-native; registry tools require Windows)
Install
git clone https://github.com/wgthomas/putty-mcp.git
cd putty-mcp
pip install -r requirements.txtConfigure Claude Code / Claude Desktop
Add to your MCP config (~/.claude.json or Claude Desktop settings):
{
"mcpServers": {
"putty": {
"command": "python",
"args": ["/path/to/putty-mcp/putty_mcp.py"],
"env": {}
}
}
}PuTTY executables are auto-detected from C:\Program Files\PuTTY, PATH, or PUTTY_PATH env var.
Tools (30)
GUI Launch (3)
Tool | Description |
| Launch PuTTY with full connection parameters |
| Launch PuTTY from a saved session name |
| Launch PuTTY on a serial port |
Command Execution (3)
Tool | Description |
| Run a single command on a remote host via plink |
| Run commands from a local script file via plink |
| Create SSH tunnel (port forward) or |
Persistent Sessions (5)
Tool | Description |
| Open persistent interactive session (SSH/Telnet/serial/raw) |
| Send command to a session and return new output |
| Read output buffer from a session |
| List all active sessions |
| Close a session and clean up |
File Transfer (5)
Tool | Description |
| Upload file(s) to remote host via pscp |
| Download file(s) from remote host via pscp |
| List remote directory via pscp |
| Execute SFTP commands as a batch via psftp |
| Open persistent PSFTP session for multi-step workflows |
Key Management (6)
Tool | Description |
| Generate SSH key pair (OpenSSH + PPK format) |
| Get fingerprint of an existing key |
| Convert key to different format (RFC4716, PKCS8, PEM, PPK) |
| Extract public key in authorized_keys format |
| Load key(s) into Pageant |
| List keys loaded in Pageant |
Saved Sessions — Registry (4)
Tool | Description |
| List all PuTTY saved sessions |
| Get full config of a saved session |
| Create or update a saved session |
| Delete a saved session |
Utility (2)
Tool | Description |
| Test SSH/Telnet connectivity, returns host key |
| Get SSH host key fingerprint from a server |
Multi-Hop (2)
Tool | Description |
| Open interactive session through a proxy command |
| Execute command on target through one or more jump hosts |
Configuration
Copy config.template.toml to config.toml and adjust as needed:
Setting | Default | Description |
| Auto-detected | Path to PuTTY install directory |
|
| Enable Windows Registry session tools |
|
| Default connection protocol |
|
| Default port |
|
| Max simultaneous interactive sessions |
|
| Session idle timeout |
|
| Output buffer size per session |
| Standard | Default serial parameters (9600/8/N/1) |
Architecture
putty_mcp.py # FastMCP server, all 30 tool definitions
putty_lib/
config.py # Path resolution, TOML config loading
executor.py # Subprocess wrapper (run, spawn, launch_gui)
session_manager.py # Persistent sessions with background readers
registry.py # Windows Registry CRUD for saved sessions
utils.py # Arg building, host parsing, proxy chains
ppk.py # Native Python PPK v3 writerKey Design Decisions
No
shell=True— All subprocess calls use argument listsssh-keygenoverputtygen— Windows puttygen.exe is GUI-only with no batch CLI. All key generation uses Windows OpenSSH'sssh-keygen, then auto-converts to PPK.Native PPK conversion —
putty_lib/ppk.pywrites PPK v3 format from scratch in Python. Supports Ed25519, RSA, ECDSA. No GUI dependency.Thread-safe sessions — Background reader threads with bounded deque buffers and automatic cleanup of timed-out sessions.
Known Limitations
Pageant key listing: Pageant has no reliable CLI flag to list loaded keys as text. The tool tries
ssh-add -Lfirst (requires Pageant started with--openssh-config), falls back to opening the GUI key list window.PPK converter: Handles unencrypted keys only. Passphrase-protected keys need manual puttygen GUI conversion.
Persistent sessions: Return raw ANSI escape codes from remote shells. Functional but noisy.
Windows only: PuTTY is Windows-native. The registry tools require Windows. Core SSH functionality works anywhere plink is available.
Security
No shell=True — All commands use
subprocesswith argument listsNo credential storage — Keys and passwords are passed per-call, never persisted by the server
Registry scoped — Only reads/writes PuTTY's own registry keys under
HKCU\Software\SimonTatham\PuTTY
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/wgthomas/putty-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server