使用说明
SSH MCP服务器
SSH MCP(模型上下文协议)服务器,允许通过SSH在远程主机上执行命令。服务器一次保持与一台主机的持久SSH连接,允许在不重新连接的情况下高效执行多个命令。
特性
- 持久SSH连接:一次维护一个SSH连接,以便高效执行命令
- 双重身份验证:支持密码和私钥身份验证方法
- 命令执行:使用可选的工作目录和超时控制执行命令
- 结构化输出:返回详细的JSON响应,包括退出代码、stdout、stderr和时间戳
- 错误处理:使用适当的MCP错误代码进行全面的错误处理
- 连接管理:用于连接、断开连接和检查连接状态的工具
安装
- 克隆存储库
- 安装依赖项:
npm install
发展
构建并运行
# Build the TypeScript code
npm run build
# Run the built server
npm start
# Build and run in one step (development)
npm run dev
测试
# Run all tests
npm test
# Run tests in watch mode (for development)
npm run test:watch
# Run tests with coverage report
npm run test:coverage
用法
SSH MCP服务器提供四种主要工具来管理SSH连接和执行命令:
1.连接到SSH服务器
{
"name": "ssh_connect",
"arguments": {
"host": "example.com",
"username": "user",
"port": 22,
"password": "your-password"
}
}
或者使用私钥身份验证:
{
"name": "ssh_connect",
"arguments": {
"host": "example.com",
"username": "user",
"port": 22,
"privateKey": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----",
"passphrase": "optional-passphrase"
}
}
2.执行命令
{
"name": "ssh_exec",
"arguments": {
"command": "ls -la",
"timeout": 30000,
"workingDirectory": "/home/user"
}
}
3.检查连接状态
{
"name": "ssh_status",
"arguments": {}
}
4.断开连接
{
"name": "ssh_disconnect",
"arguments": {}
}
刀具参数
ssh-connect
必修的:
host:SSH主机名或IP地址username:SSH用户名
可选:
port:SSH端口(默认值:22)password:身份验证密码privateKey:用于基于密钥的身份验证的私钥内容passphrase:加密私钥的密码
注: 必须提供 password 或 privateKey 用于身份验证。
ssh_exec
必修的:
command:要执行的命令
可选:
timeout:命令超时(毫秒)(默认值:30000)workingDirectory:命令执行的工作目录
ssh状态
无需参数。
ssh断开连接
无需参数。
工作流程
- 连接:使用
ssh_connect建立与SSH服务器的连接 - 执行:使用
ssh_exec在连接的服务器上多次运行命令 - 开关:使用
ssh_disconnect然后ssh_connect切换到其他服务器 - 状态:使用
ssh_status检查当前连接详细信息
响应格式
命令执行返回结构化JSON,其中包含:
exitCode:命令退出代码stdout:标准输出stderr:标准误差输出timestamp:执行时间戳success:布尔值,指示命令是否成功
错误处理
服务器通过正确的MCP错误代码提供全面的错误处理,用于:
- 连接失败
- 身份验证错误
- 命令执行超时
- 网络问题
- 无效参数
文件结构
src/index.ts:启动MCP服务器的入口点src/ssh-mcp-server.ts:主SSH MCP服务器实现tests/:服务器功能的Jest单元测试build/:TypeScript编译输出package.json:将CLI二进制文件定义为ssh-mcp-server
许可证
该项目根据MIT许可证获得许可。