Skip to main content
Glama
klogins-hash

Terminal SSH MCP Server

by klogins-hash
README.md
# Terminal SSH MCP Server

An MCP (Model Context Protocol) server that provides SSH and terminal access capabilities. This server enables interactive access to Railway containers and local shell execution through the MCP interface.

## Features

- **SSH Access**: Connect to Railway containers via SSH with optional command execution
- **Command Execution**: Run shell commands locally with output capture
- **File Operations**: Read, write, and list files on the system
- **Directory Listing**: Browse directory structures
- **Railway Integration**: Direct SSH access to Railway services using project/environment/service IDs

## Installation

### Local Installation (for Cline/Claude Desktop)

1. Clone this repository:
```bash
git clone https://github.com/klogins-hash/terminal-ssh-mcp.git
cd terminal-ssh-mcp
```

2. Install dependencies and build:
```bash
npm install
npm run build
```

3. Add to your MCP configuration:

**For Cline (VS Code):**
Edit `~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`:

```json
{
  "mcpServers": {
    "terminal-ssh": {
      "command": "node",
      "args": ["/path/to/terminal-ssh-mcp/build/index.js"],
      "disabled": false,
      "autoApprove": []
    }
  }
}
```

**For Claude Desktop:**
Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "terminal-ssh": {
      "command": "node",
      "args": ["/path/to/terminal-ssh-mcp/build/index.js"]
    }
  }
}
```

## Railway Deployment

This server can be deployed to Railway for cloud-based access:

1. Create a new Railway project
2. Deploy from this GitHub repository
3. Railway will automatically:
   - Install dependencies
   - Build the TypeScript
   - Deploy the MCP server

The server will run on Railway and can be accessed via SSH through Railway's CLI.

## Available Tools

### execute_command
Run shell commands locally and capture output.

**Parameters:**
- `command` (required): The shell command to execute
- `cwd` (optional): Current working directory
- `timeout` (optional): Timeout in milliseconds (default: 30000)

### railway_ssh
SSH into a Railway service container.

**Parameters:**
- `project` (required): Railway project ID
- `environment` (required): Railway environment ID
- `service` (required): Railway service ID
- `command` (optional): Command to run in the container (if not provided, returns SSH command)

### read_file
Read file contents.

**Parameters:**
- `path` (required): Path to the file

### write_file
Write content to a file.

**Parameters:**
- `path` (required): Path to the file
- `content` (required): Content to write

### list_directory
List files and directories in a path.

**Parameters:**
- `path` (required): Directory path to list

## Development

### Building
```bash
npm run build
```

### Testing
```bash
npm run start
```

### Development Mode
```bash
npm run dev
```

## Architecture

- **Framework**: MCP SDK (Model Context Protocol)
- **Language**: TypeScript
- **Runtime**: Node.js 22+
- **Transport**: Stdio-based communication

## Security Considerations

- API credentials should not be committed to repositories
- Use environment variables for sensitive configuration
- SSH keys are managed by Railway CLI
- All commands execute with current user permissions

## License

MIT

## Support

For issues and questions, please open an issue on GitHub.