关于 GitCode 上 MoFix(即昇腾 Model-Agent,仓库地址 gitcode.com/Ascend/model-agent)连接远程服务器的问题,

结论如下:MoFix 本身就内置了"SSH 通用工具"技能,可以直接通过 SSH/隧道方式操作远程服务器;同时也原生支持 MCP 协议(内置 Cannbot、msAgent 等 MCP Server),两条路都走得通,看你想让 Agent 干什么。

两条路线对比

维度路线 A:内置 SSH Skill路线 B:MCP Server 接入
原理Agent 调用 paramiko/sshpass 脚本直连远程主机Agent 通过 MCP 协议连接本地或远程工具服务
适合场景远程跑命令、传文件、查 NPU 状态、做端口转发让 Agent 按需扩展能力(GitCode 仓库管理、外部工具等)
传输方式SSH 协议(22 端口或自定义端口)stdio(本地)/ Streamable HTTP、SSE(远程)
远程访问天然支持(可直接 SSH 到远程 Ascend 服务器)需要 MCP Server 本身在可达网络,或用 SSH 隧道把远程端口映射到本地
配置复杂度低,一次配置主机/用户名/密码即可中,需要写 MCP Server 的 JSON 配置和 Token

路线 A:用 MoFix 自带的 SSH 技能直连远程服务器

昇腾 Model-Agent 的技能库里有专门的"通用工具"分类(共 23 个 Skill),其中就包含 SSH 连接、单元测试、Bug 修复等能力。更具体地说,昇腾生态在 Ascend/agent-skills 和 Ascend/MindIE-SD 仓库里维护了两个非常成熟的 SSH Skill:
1. remote-access(推荐用于直接操作 Ascend 服务器)
这个技能通过 paramiko 提供单连接复用的 SSH 执行通道,核心能力包括:

  • SSH 连接复用:所有远程命令走同一条 paramiko 连接,避免反复连接触发 MaxStartups 限制

  • 容器内执行:支持 docker exec 包装,直接进入容器操作

  • 空闲卡选择:自动跑 npu-smi 扫描 HBM 占用,帮你挑最空闲的 NPU 卡

  • 文件传输:基于同一条连接的 SFTP,还会自动处理 Windows 上传脚本的 CRLF→LF 转换
    安装方式一行命令:

    npx skills add https://github.com/Ascend/MindIE-SD --skill remote-access
    

    2. ssh-dev-suite/connect(更完整的 SSH 套件)
    涵盖 SSH 连接管理、远程命令执行、文件传输(rsync)、容器感知命令、后台任务编排等,依赖 sshpass、rsync、kubectl、docker 等工具。它还有一个专门的 tunnel 子能力,用于 SSH 隧道和端口转发,适合做可视化监测。
    实际使用时,向 MoFix 提供 4 个参数即可:远端 IP、SSH 用户名、密码或密钥、(容器内执行时的)容器名,Agent 会自动复用连接执行后续所有操作。

    路线 B:给 MoFix 挂 MCP Server

    MoFix 的目录结构里有专门的 mcp_servers/ 子目录,内置了 Cannbot 算子调试和 msAgent 性能 Profiling 两大 MCP 智能体,共 144 个算子/调试工具,能自动解析 NPU 日志、定位算子瓶颈。同时,外部 Agent 和 MCP Server 在 mofix 启动时会克隆到临时目录、MCP 化后提供服务,关闭时自动清理。
    如果你想自己写 MCP Server 接入,MoFix 支持三种传输方式,参考 JiuwenSwarm 的配置格式(同类 Agent 通用):

    mcp:
    servers:
      # 本地 stdio:Agent 拉起子进程,最简单
      - name: my-local-tool
        transport: stdio
        command: python
        args: ["path/to/server.py", "--transport", "stdio"]
      # 远程 SSE / Streamable HTTP:连到远端已部署的 MCP 服务
      - name: remote-api
        transport: streamable-http
        url: http://<远程IP>:8000/mcp
        headers:
          Authorization: Bearer your-token-here
    

    对于远程 MCP,经验法则是:本机工具用 stdio,跨网络边界的工具用 Streamable HTTP,别用蹩脚的 wrapper 把 stdio 服务硬暴露到网络上。

    SSH 隧道 + MCP 的组合玩法

    如果远程服务器在内网、Agent 所在机器无法直连,可以先建 SSH 隧道把远程端口映射到本地,再让 MoFix 通过本地地址访问 MCP Server:

    # 本地端口转发:把远程 8000 端口映射到本地 18000
    ssh -fNL 18000:127.0.0.1:8000 user@jump-host
    

    然后 MoFix 的 MCP 配置里写 url: http://127.0.0.1:18000/mcp 即可。这种模式在 core-manager 这类管控系统中也有实际应用,管理机通过 SSH 隧道连目标 Agent 的 loopback HTTP 服务。

    几个需要注意的点

    Token 与凭据管理:SSH 凭据优先级是 MINDIE_SSH_PASSWORD 环境变量 > 交互输入(不回显)> --password 参数;GitCode MCP 的 GITCODE_TOKEN 也要用个人访问令牌,不要明文写进代码。
    主机密钥校验:paramiko 默认走 RejectPolicy,首次连接未知主机时会拒绝。自动化场景可以加载 known_hosts,或显式传 allow_unknown_host=True(仅限可信网络)。
    网络可达性:远程 MCP Server 需要确保 Agent 所在机器能访问到目标端口;SSH 隧道方案则要求能先 SSH 到跳板机。防火墙、安全组规则要提前放通。
    Schema 膨胀:MCP 工具定义会全部注入模型上下文,一个啰嗦的 MCP Server 可能比等效 CLI 多烧 30 倍 token。建议只接当前任务需要的 Server,优先选 schema 精简的实现。

    官方文档入口

  • 昇腾 Model-Agent 仓库(含 Skills、MCP Servers 完整源码):https://gitcode.com/Ascend/model-agent

  • 昇腾 Agent Skills 集合:https://gitcode.com/Ascend/agent-skills(SSH 连接、远程访问等技能都在这里)

  • GitCode MCP Server(用 Go 实现的 GitCode API 封装,支持 STDIO 和 SSE 传输):可通过 gitcode-mcp 启动,配合 GITCODE_TOKEN 环境变量
    一句话总结:想让 MoFix 直接管远程服务器(跑命令、传文件、查卡),用内置的 remote-access Skill 走 SSH 就够了;想让 MoFix 扩展更多工具能力(GitCode 仓库操作、外部服务调用),挂 MCP Server,本地用 stdio、远程用 Streamable HTTP,网络不通就叠一层 SSH 隧道。

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐