ssh-mcp-server
The SSH MCP Server is an implementation of the Model Context Protocol that provides SSH capabilities for secure remote access. It integrates SQLite for data persistence and utilizes TypeScript for better development experience, offering several tools to manage SSH credentials.
SSH MCP Server
A Model Context Protocol (MCP) server implementation that provides SSH capabilities. This server allows for secure remote access and execution through the MCP protocol.
Features
- SSH server implementation using MCP protocol
- SQLite database integration for data persistence
- TypeScript implementation for type safety and better development experience
Prerequisites
- Node.js (v16 or higher recommended)
- npm or yarn package manager
- TypeScript knowledge for development
Installation
Installing via Smithery
To install SSH Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @KinoThe-Kafkaesque/ssh-mcp-server --client claude
Manual Installation
- Clone the repository:
git clone <repository-url>
cd ssh-server
- Install dependencies:
npm install
- Build the project:
npm run build
Usage
Configuration
The server uses a SQLite database (ssh.db
) to store SSH credentials. The
database file will be created automatically when the server starts.
Tools
The server provides the following tools:
ssh_exec
Execute a command over SSH.
Input Parameters:
host
: The host to connect to. (required)command
: The command to execute. (required)username
: The username to use for the SSH connection. (required)privateKeyPath
: The path to the private key file. (required)
Example Usage:
{
"tool_name": "ssh_exec",
"arguments": {
"host": "example.com",
"command": "ls -l",
"username": "user",
"privateKeyPath": "/path/to/private/key"
}
}
Note: The privateKeyPath
must be a valid path to a private key file.
add_credential
Add a new SSH credential.
Input Parameters:
name
: The name of the credential. (required)host
: The host to connect to. (required)username
: The username to use for the SSH connection. (required)privateKeyPath
: The path to the private key file. (required)
Example Usage:
{
"tool_name": "add_credential",
"arguments": {
"name": "my_credential",
"host": "example.com",
"username": "user",
"privateKeyPath": "/path/to/private/key"
}
}
Note: The privateKeyPath
must be a valid path to a private key file.
list_credentials
List all stored SSH credentials.
Input Parameters:
- None
Example Usage:
{
"tool_name": "list_credentials",
"arguments": {}
}
remove_credential
Remove a stored SSH credential.
Input Parameters:
name
: The name of the credential to remove. (required)
Example Usage:
{
"tool_name": "remove_credential",
"arguments": {
"name": "my_credential"
}
}
Starting the server
npm start
The server will start running on the configured port (default settings can be modified in the source code).
Project Structure
src/
- Source code directorybuild/
- Compiled JavaScript outputnode_modules/
- Project dependencies
Dependencies
@modelcontextprotocol/sdk
: MCP protocol implementationsqlite3
: SQLite database drivertypescript
: Development dependency for TypeScript support
Development
To make changes to the project:
- Make your changes in the
src/
directory - Rebuild the project:
npm run build
- Start the server to test your changes:
npm start
License
ISC
Contributing
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a new Pull Request