SSH MCP Server
by KinoThe-Kafkaesque
This is a Model Context Protocol (MCP) server implementation that provides SSH capabilities. It allows for secure remote access and execution through the MCP protocol.
Last updated: N/A
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
- 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