这是一个用 Rust 实现的带有模型上下文协议(MCP)集成的 SSH 客户端服务器,允许大型语言模型(LLMs)连接到 SSH 服务器并利用 SSH 功能。
轻量且高效:
ssh-mcp: 仅 4.3MB 的二进制大小,1.8MB 的内存占用ssh-mcp-stdio: 仅 1.5MB 的二进制大小,2.3MB 的内存使用docker: 仅 27.5MB 的最终镜像大小port_forward 功能)您有两个安装选项:
无需 Rust 工具链 - 只需 Docker!
# 从 Docker Hub 拉取预构建的镜像
docker pull mingyang91/ssh-mcp
# 运行服务器
docker run -p 8000:8000 mingyang91/ssh-mcp
或者自己构建镜像:
# 构建 Docker 镜像
docker build -t ssh-mcp .
# 运行服务器
docker run -p 8000:8000 ssh-mcp
前提条件:
cargo install ssh-mcp
要使用 SSH-MCP 与 mcpServers,向您的 mcpServers JSON 配置添加以下配置:
{
"mcpServers": {
"ssh": {
"command": "ssh-mcp-stdio",
"args": []
}
}
}
{
"mcpServers": {
"ssh": {
"command": "docker",
"args": ["run", "--entrypoint", "ssh-mcp-stdio", "-i", "--rm", "ssh-mcp"]
}
}
}
这将注册 SSH 处理程序,允许 LLM 通过您的 MCP 服务器管理 SSH 连接。
{
"command": "ssh_connect",
"params": {
"address": "example.com:22",
"username": "user",
"password": "password"
}
}
{
"command": "ssh_connect",
"params": {
"address": "example.com:22",
"username": "user",
"key_path": "/path/to/private_key"
}
}
{
"command": "ssh_connect",
"params": {
"address": "example.com:22",
"username": "user"
}
}
响应:
{
"session_id": "c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b",
"message": "成功连接到 user@example.com:22",
"authenticated": true
}
如果连接失败:
{
"error": "连接失败: 连接被拒绝"
}
{
"command": "ssh_execute",
"params": {
"session_id": "c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b",
"command": "ls -la"
}
}
响应:
{
"stdout": "total 32\ndrwxr-xr-x 5 user group 4096 Jan 1 12:00 .\ndrwxr-xr-x 25 user group 4096 Jan 1 12:00 ..\n-rw-r--r-- 1 user group 142 Jan 1 12:00 file.txt\n",
"stderr": "",
"exit_code": 0
}
注意:端口转发默认通过 port_forward 功能标志启用。
{
"command": "ssh_forward",
"params": {
"session_id": "c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b",
"local_port": 8080,
"remote_address": "internal-server",
"remote_port": 80
}
}
响应:
{
"local_address": "127.0.0.1:8080",
"remote_address": "internal-server:80",
"active": true
}
{
"command": "ssh_disconnect",
"params": {
"session_id": "c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b"
}
}
响应:
"会话 c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b 成功断开"
{
"command": "ssh_list_sessions"
}
响应:
[
"c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b",
"d9b4c3a2-5e6f-7g8h-9i0j-1k2l3m4n5o6p"
]
服务器可以通过以下环境变量进行配置:
| 变量 | 描述 | 默认值 |
|---|---|---|
| MCP_PORT | MCP 服务器的端口 | 8000 |
| RUST_LOG | 日志级别 | info |
项目使用 Cargo 功能来启用/禁用某些功能:
| 功能 | 描述 | 默认值 |
|---|---|---|
| port_forward | 启用 SSH 端口转发支持 | 启用 |
要构建不带端口转发的版本:
cargo build --release --no-default-features
欢迎贡献!请随时提交拉取请求。
此项目使用 GitHub Actions 进行持续集成和部署:
CARGO_REGISTRY_TOKEN, DOCKERHUB_USERNAME 和 DOCKERHUB_TOKEN 密钥本项目根据 MIT 许可证授权 - 查看 LICENSE 文件了解详情。