Skip to main content

Talk to your SSH servers from Claude and other MCP clients.

Project description

Talk2Server

Talk to your SSH servers from Claude and other MCP clients.

Talk2Server is a Model Context Protocol (MCP) server that lets AI assistants run shell commands, read files, and transfer files on remote servers via SSH. It works with Claude Desktop, Claude Code, Cowork, Cursor, Cline, Continue, and any other MCP-compatible client.

You configure your servers once. After that you just talk:

"What's the disk usage on production?" "Show me the last 50 lines of the nginx error log on staging." "Pull /var/log/app/last_run.log from vps to my Desktop."

Why

Managing servers means jumping between terminals, remembering hostnames, typing the same diagnostic commands a hundred times. With Talk2Server, your AI assistant becomes the layer in between. You describe the goal, it runs the commands.

Features

  • Multi-host: configure as many servers as you want, address them by alias.
  • Three credential backends:
    • OS keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service) for strong, OS-managed storage.
    • Plain JSON file at ~/.config/talk2server/credentials.json (mode 0600), AWS-CLI style.
    • Read-only ~/.ssh/config so power users with existing setups get zero-config support.
  • Auto-resolution: if you have a host in ~/.ssh/config, it just works. Otherwise the keychain is checked, then the file.
  • Friendly CLI for adding, listing, testing, and migrating credentials.
  • Works with any MCP client that speaks stdio.

Install

Talk2Server is published on PyPI. The recommended install uses uv:

# Install uv if you don't have it
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install talk2server as a tool (gets you the `talk2server` CLI)
uv tool install talk2server

Or with pip:

pip install talk2server

Set up your first host

talk2server add

You'll be asked where to store credentials (keychain or file), then prompted for hostname, user, port, auth method, and (if needed) password or key path.

Verify it works:

talk2server test myhost

If you see OK, you're good.

Wire it into Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS), %APPDATA%\Claude\claude_desktop_config.json (Windows), or the equivalent on Linux. Add this entry under mcpServers:

{
  "mcpServers": {
    "talk2server": {
      "command": "talk2server-mcp"
    }
  }
}

If you installed with uv tool install, that command is already on your PATH. Otherwise point at the absolute path:

{
  "mcpServers": {
    "talk2server": {
      "command": "/Users/you/.local/bin/talk2server-mcp"
    }
  }
}

Restart Claude. You should see talk2server listed in the connectors panel with no warnings.

Wire it into Claude Code

claude mcp add talk2server -- talk2server-mcp

Available tools

The MCP server exposes:

  • list_hosts() returns all configured server names with hostname/user/port.
  • run_command(host, command, timeout=120) runs a shell command, returns stdout+stderr+exit code.
  • upload_file(host, local_path, remote_path) SCP upload.
  • download_file(host, remote_path, local_path) SCP download.
  • read_remote_file(host, path, max_bytes=200000) cat a remote text file with a size cap.

CLI reference

talk2server add                          # Interactive: add a host
talk2server list                         # Show configured hosts
talk2server list --show-secrets          # Include passwords (use carefully)
talk2server remove <name>                # Delete a host
talk2server test <name>                  # Run a quick SSH connectivity check
talk2server backends                     # Show active backends and write target
talk2server migrate --from file --to keychain

Choosing a backend

Set TALK2SERVER_BACKEND in your MCP client config to pin a backend:

{
  "mcpServers": {
    "talk2server": {
      "command": "talk2server-mcp",
      "env": { "TALK2SERVER_BACKEND": "keychain" }
    }
  }
}

Valid values: auto (default), keychain, file, ssh_config.

In auto mode the read order is: ~/.ssh/config → keychain → file. Writes go to keychain if available, else to the file.

Security

See SECURITY.md for an honest breakdown of what each backend protects against. Short version:

  • Keychain binds credentials to your OS user account; malware running as you can still read them, but file copies to other machines are useless.
  • File is mode 0600 in your home directory. Equivalent in security to ~/.aws/credentials. Good enough for most workflows, not for high-stakes shared machines.
  • ~/.ssh/config stores no passwords; relies entirely on whatever you've already set up (ssh-agent, key files).

License

MIT. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

talk2server-0.1.0.tar.gz (80.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

talk2server-0.1.0-py3-none-any.whl (14.8 kB view details)

Uploaded Python 3

File details

Details for the file talk2server-0.1.0.tar.gz.

File metadata

  • Download URL: talk2server-0.1.0.tar.gz
  • Upload date:
  • Size: 80.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for talk2server-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ed8c58177d4d024efe2e9eaa6d758e6dc123fbc456afd271871160509c875fdd
MD5 15dc706841cbb869a9a8540ebfb216ce
BLAKE2b-256 d9baa32591cf3b0d01b52cdf896e94b0b155bc25760288c031144d756df9dd74

See more details on using hashes here.

File details

Details for the file talk2server-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: talk2server-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 14.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for talk2server-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fcaf02a73878982815a4f161e372bc31ce918cd554dfcdcce334d4fc8b7eb5bc
MD5 406e6dad6c36ed6cbf0f351b8549ed05
BLAKE2b-256 739dcbad86058b04533e3f698a78a54ca182c30582d87fa3daf30b9a591318fb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page