MCP SSH Docker服务器
提供SSH和Docker命令执行功能的消息控制协议(MCP)服务器。此服务器允许您通过标准化的接口在远程系统和Docker容器上执行命令。
特性
- 在远程系统上执行SSH命令
- Docker容器命令执行
- 实时命令输出流
- 长时间运行的命令的进度报告
- 结构化JSON输出支持
- 命令取消支持
- 连接和命令超时
- 全面的错误处理
先决条件
- Python 3.7+
- SSH访问目标系统
- 目标系统上安装了Docker(用于Docker命令)
安装
使用pip
pip install mcp-ssh-frr来源
- 克隆存储库:
git clone https://github.com/aweher/mcp-ssh-frr.git
cd mcp-ssh-frr- 创建并激活虚拟环境:
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate- 安装依赖项:
pip install -r requirements.txt- 在开发模式下安装软件包:
pip install -e .- 配置SSH:
- 将您的SSH私钥放入 ./config/id_rsa
- 设置环境变量:
export SSH_HOST="your-remote-host"
export SSH_USER="your-username" # Defaults to root
export SSH_PORT="22" # Optional, defaults to 22- 别忘了将你的公钥添加到 authorized_keys 上的文件 your-remote-host
用法
启动服务器
python mcp_ssh_docker_server.py可用工具
1.SSH命令执行(ssh_exec)
在远程系统上执行任何命令:
{
"name": "ssh_exec",
"args": {
"command": "ls",
"args": ["-la", "/etc"],
"stream": false, # Set to true for real-time output
"structured_output": false # Set to true for JSON output
}
}2.Docker命令执行(ssh_exec_docker)
在Docker容器中执行命令:
{
"name": "ssh_exec_docker",
"args": {
"container": "my-container",
"command": "vtysh",
"args": ["-c", "show ip bgp"],
"stream": false,
"structured_output": false
}
}列出可用容器:
{
"name": "ssh_exec_docker",
"args": {
"list_containers": true,
"structured_output": false
}
}输出格式
- 文本输出(默认):
$ command arg1 arg2
(exit code 0)
output line 1
output line 2- 结构化JSON输出:
{
"command": "command arg1 arg2",
"exit_code": 0,
"stdout": "output line 1\noutput line 2",
"stderr": "",
"duration": 0.123,
"metadata": {
"container": "my-container" // For Docker commands
}
}- 进度更新(流式传输时):
[progress] 45% - Bytes read: 1024配置
超时
- SSH连接超时:10秒
- 命令执行超时:30秒
- 流最大时间:300秒(5分钟)
缓冲区大小
- 流缓冲区大小:1024字节
错误处理
服务器处理各种错误情况:
- 连接超时
- 身份验证失败
- 命令执行错误
- Docker容器错误
- 命令取消
安全
- 使用基于SSH密钥的身份验证
- 命令参数已正确转义
- 无命令注入漏洞
- 安全连接处理
贡献
- 分叉存储库
- 创建要素分支
- 提交您的更改
- 推到分支
- 创建拉取请求
许可证
GPLv3
作者
Ariel S.Weher

