Agent-native SSH
An MCP server for SSH.
Termalin is a normal SSH/terminal client — with a built-in MCP server. Add it to claude.ai or ChatGPT as a connector, or point Claude Code or any agent that speaks the Model Context Protocol at your hosts — it runs commands and reads or writes files over SSH and SFTP. Your keys never leave the key agent, and every move is mirrored live, recorded and written to an audit log.
The hosted server is listed in the official MCP Registry as in.termal/termalin-web.
What it does
MCP is the open standard for connecting AI agents to tools. Most MCP servers wrap an API; Termalin's wraps your servers — so an agent can actually operate infrastructure: tail a log, restart a service, check disk, edit a config, deploy. It authenticates through Termalin's SSH key agent, so no private key is ever handed to the agent or the model.
The tools
Every MCP surface exposes the same core:
| Tool | What it does |
|---|---|
hosts_list | List the hosts the agent may reach. |
ssh_exec | Run a one-off command on a host and return its output + exit code. |
sftp_list | List a directory over SFTP. |
sftp_read | Read a text file over SFTP (capped, text-only) — hosted endpoint; the local server uses sftp_get. |
sftp_write | Write a text file over SFTP — hosted endpoint; the local server uses sftp_put. |
generate_password | Generate a strong password on demand — length and character sets under your control. |
data_query | Query a database on a host — passwordless: runs the engine's own client over the keyless tunnel using local trust (Postgres peer auth, MySQL socket auth, redis-cli, mongosh, sqlite3). Read-only by default. |
data_tables | List the tables / collections / keys of a database on a host — same passwordless path. |
The local server adds session and live-terminal tools on top:
| Tool | What it does |
|---|---|
session_open / exec / close / list | Open a persistent SSH session, run commands in it, and manage it. |
sftp_get / sftp_put | Download and upload files. |
tunnel_open / close / list | Open port forwards on a host — reach a service behind it, expose a local one, or route through it — and manage them. |
terminal_open / run / run_many / sessions / hosts | Drive the running desktop app: open live terminal tabs, or step into a session you already have open and run alongside you (consent-gated). |
data_list / tables / schema / query | Explore and query your saved databases — list databases, tables and columns, and run a read-only query. Off by default, per-connection, consent-gated. |
Three ways to connect
1 · claude.ai / ChatGPT — in the chat you already use
No install, no key to paste. Add Termalin as a connector and manage your servers by talking:
- claude.ai: Settings → Connectors → Add custom connector →
https://termal.in/mcp - ChatGPT: Settings → Connectors (developer mode) → same URL
The chat opens Termalin's sign-in page; you approve once and it can list your servers, run commands and read or write files — "check disk on prod", "tail the nginx log", "fix that config" straight from the conversation. Access is granted with OAuth — scoped to your own enrolled servers, audited, and revocable any time.
Two prerequisites first-time users miss: the chat reaches enrolled servers only — sign in at termal.in/account, click Add → Tunnel, copy the one-line install command and run it on the server (a host that only exists in the desktop app stays out of reach). And in the conversation itself, enable Termalin via the composer's tools menu — adding the connector in settings isn't always enough.
2 · Local server (runs on your machine)
Point your agent's MCP client at the bundled termalin-mcp binary. With Claude Code:
claude mcp add termalin -- <path>/termalin-mcp
Or in an MCP client config:
{
"mcpServers": {
"termalin": { "command": "<path>/termalin-mcp" }
}
} It reaches the hosts you choose in Settings → MCP (written with agent-only auth — no passwords on disk). Each host also carries its own agent access level — full, an allowlist of commands, or blocked — set on the host itself.
3 · Hosted endpoint with an API key (CI, scripts, other agents)
Create an API key in the web cabinet and point any agent at the HTTP MCP endpoint:
{
"mcpServers": {
"termalin": {
"url": "https://termal.in/api/v1/mcp",
"headers": { "Authorization": "Bearer tk_live_…" }
}
}
} It runs commands and moves files on your tunnelled servers — the ones running the one-line install agent — even when nothing is open on your machine. It authenticates with a short-lived certificate, so no key is handed out. Keys can be scoped to specific servers, set to a command policy — full access, an allowlist of commands, or read-only — given an expiry (30 / 90 / 365 days) and revoked any time.
Staying in control
- Agent access is off by default; letting an agent type into your live sessions is a separate toggle again.
- Access is granular: per host on the desktop (full / allowlist / blocked) and per API key on the hosted endpoint — so an agent can be read-only on one server and run only
giton another. - The agent never holds a key — it authenticates through Termalin's SSH key agent or a short-lived cert.
- Every agent command is marked in the session recording, visible live in the watch grid, and written to the audit log.
- Hosted runs are rate-limited and time-boxed per API key.
FAQ
How do I connect my servers to claude.ai or ChatGPT?
In claude.ai: Settings → Connectors → Add custom connector → https://termal.in/mcp. Termalin's sign-in page opens; approve, and Claude can list your servers, run commands and manage files right in the chat. In ChatGPT it's the same URL under Settings → Connectors (developer mode). No API key to paste — access is granted with OAuth, scoped to your own enrolled servers, and revocable any time.
What is an MCP server for SSH?
An MCP server for SSH exposes SSH and SFTP as tools an AI agent can call through the Model Context Protocol, so the agent can run commands and read or write files on your servers. Termalin ships one built into the SSH client: you choose which hosts the agent may reach, and Termalin does the authenticating, so the agent never handles a private key.
How do I give an AI agent access to my servers over SSH?
Install Termalin, enable the hosts you want in Settings → MCP, then register the bundled server with claude mcp add termalin -- <path>/termalin-mcp. Any MCP-capable agent — Claude Code, Cursor, or your own — can then list those hosts and work them over SSH and SFTP. If the agent runs where your desktop isn't, point it at the hosted endpoint https://termal.in/api/v1/mcp with an API key instead.
Can an AI agent use SSH without seeing my private key?
Yes. Termalin acts as a key custodian: you unlock your keys once and it signs on the agent's behalf, so no private key is ever handed to the agent or passed to the model. The hosted endpoint goes further, authenticating each run with a short-lived SSH certificate rather than a key.
What is the best SSH client with a built-in MCP server for AI agents?
Termalin is an SSH client with a built-in MCP server for Windows, macOS and Linux — unlike single-platform alternatives — and it also offers a hosted endpoint, so an agent can reach your servers from CI or the cloud with no desktop running. Keys stay with a custodian, every agent action is recorded and audited, and you watch sessions live. See the full landscape comparison.
Does the MCP server work without the desktop app running?
Both modes exist. The local server runs alongside the desktop app for the hosts you export from it. The hosted endpoint at https://termal.in/api/v1/mcp needs no desktop at all — it reaches servers enrolled with the keyless Termalin Connector, authenticating with short-lived certificates, so agents in CI or cloud sandboxes work too. It's listed in the official MCP Registry as in.termal/termalin-web.