mcpField
M
MCP SSH Docker Server

MCP SSH Docker Server

本地服务
github.com/aweher开发工具078 周前更新

关于 MCP SSH Docker Server

MCP SSH Docker Server 提供 MCP 接口,可通过 SSH 在远程系统上运行命令,也可在 Docker 容器内执行命令。它适用于需要命令输出、进度更新和取消功能的客户端。

主要功能

  1. 01通过 SSH 在远程系统运行命令
  2. 02在 Docker 容器内运行命令
  3. 03流式传输命令输出和进度
  4. 04返回结构化 JSON 结果
  5. 05取消命令并设置超时

适用场景

  1. 01在远程主机上运行命令
  2. 02在 Docker 容器中执行命令
  3. 03获取长时间运行命令的实时输出
  4. 04以 JSON 格式获取命令结果

MCP 相关

该 MCP 服务向 MCP 客户端提供 SSH 和 Docker 命令执行工具,包括容器列表查询和命令取消。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP SSH Docker 服务

一个提供 SSH 和 Docker 命令执行能力的消息控制协议(MCP)服务。此服务允许你通过标准化接口在远程系统和 Docker 容器上执行命令。

功能

  • 在远程系统上执行 SSH 命令
  • 在 Docker 容器中执行命令
  • 实时流式传输命令输出
  • 为长时间运行的命令报告进度
  • 支持结构化 JSON 输出
  • 支持取消命令
  • 连接和命令超时设置
  • 全面的错误处理

前提条件

  • Python 3.7+
  • 对目标系统的 SSH 访问权限
  • 目标系统已安装 Docker(用于执行 Docker 命令)

安装

使用 pip
pip install mcp-ssh-frr
从源代码安装
  1. 克隆仓库:
git clone https://github.com/aweher/mcp-ssh-frr.git
cd mcp-ssh-frr
  1. 创建并激活虚拟环境:
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
  1. 安装依赖:
pip install -r requirements.txt
  1. 以开发模式安装软件包:
pip install -e .
  1. 配置 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
      
    • 别忘了将你的公钥添加到 your-remote-host 上的 authorized_keys 文件中

用法

启动服务
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
    }
}
输出格式
  1. 文本输出(默认):
$ command arg1 arg2
(exit code 0)

output line 1
output line 2
  1. 结构化 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
    }
}
  1. 进度更新(流式传输时):
[progress] 45% - Bytes read: 1024

配置

超时
  • SSH 连接超时:10 秒
  • 命令执行超时:30 秒
  • 流式传输最长时间:300 秒(5 分钟)
缓冲区大小
  • 流式传输缓冲区大小:1024 字节

错误处理

此服务可处理各种错误情况:

  • 连接超时
  • 身份验证失败
  • 命令执行错误
  • Docker 容器错误
  • 命令取消

安全性

  • 使用基于 SSH 密钥的身份验证
  • 对命令参数进行适当转义
  • 不存在命令注入漏洞
  • 安全处理连接

贡献

  1. Fork 仓库
  2. 创建功能分支
  3. 提交更改
  4. 推送到分支
  5. 创建 Pull Request

许可证

GPLv3

作者

Ariel S. Weher <ariel[at]weher.net>

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。