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