SSH Remote File MCP Server
SSH 远程文件 MCP 服务器
通过 Claude Code 读取、编辑并在远程服务器上运行命令——就像操作本地文件一样。
一个 MCP 服务器,将远程 SSH 主机暴露为一组文件系统工具。注册到 Claude Code 后,你可以让它读取 /home/you/proj/main.py、编辑某个函数、运行 pytest,或在整个远程目录树中执行 grep——它通过 SSH 与服务器通信,并带有路径作用域和命令过滤机制。
中文文档 / Chinese version → · GitHub →
许可证
MIT — 详见 LICENSE。
Related MCP server: claude-ssh-mcp
功能特性
工具 | 用途 |
| 读取远程文件 |
| 创建或覆盖(也可追加)远程文件 |
| 在远程文件内部查找并替换 |
| 列出远程目录(含权限、大小、修改时间) |
| 在远程运行 shell 命令(带安全过滤) |
| 按文件名通配符或内容查找文件 |
| 获取操作系统 / Python / 磁盘 / 内存 / CPU 快照 |
| 获取单个路径的详细状态信息 |
快速开始
# 1. Clone and enter
git clone https://github.com/zhangqi-eiq/server_mcp.git
cd server_mcp
# 2. Install (editable mode — picks up code changes immediately)
python install.py
# 3. Edit your real credentials
# (file is at ~/.ssh-mcp-server/config.json by default)
# 4. Restart Claude Code, then in a chat:
# "show me the env of my server"就这样。install.py 会做三件事:
pip install -e .— 安装软件包。将
config.json(含占位值)复制到~/.ssh-mcp-server/。运行
claude mcp add,让服务器出现在 Claude Code 中。
如果你还没有 claude 命令行工具,可以运行 python install.py --no-register,然后手动添加 MCP 条目(参见 手动配置)。
手动配置
如果你更愿意手动配置,或者 install.py 未能正确注册:
1. 安装软件包
pip install -e .这样会将 ssh_mcp_server 放到 Python 的导入路径中,使得 python -m ssh_mcp_server 可以启动服务器。
2. 创建你的配置
将 config.json 复制到 ~/.ssh-mcp-server/config.json(当 SSH_MCP_CONFIG 未设置时,加载器会在此处查找),然后填入真实值:
mkdir -p ~/.ssh-mcp-server
cp config.json ~/.ssh-mcp-server/config.json
$EDITOR ~/.ssh-mcp-server/config.json3. 注册到 Claude Code
MCP 条目必须通过你安装所用的 Python 解释器来调用服务器。下面的 <python> 应为该解释器的绝对路径(即你激活环境中的 sys.executable,例如 Windows 上的 C:\Users\you\.conda\envs\myenv\python.exe,或 Linux 上的 /home/you/.venv/bin/python)。
选项 A — 用户级作用域,适用于所有项目:
claude mcp add --scope user ssh-remote \
-e SSH_MCP_CONFIG="$HOME/.ssh-mcp-server/config.json" \
-- "<python>" -m ssh_mcp_server选项 B — 项目级作用域,仅适用于当前项目:
在项目根目录创建 .mcp.json:
{
"mcpServers": {
"ssh-remote": {
"command": "<absolute path to python>",
"args": ["-m", "ssh_mcp_server"],
"env": {
"SSH_MCP_CONFIG": "/absolute/path/to/your/config.json"
}
}
}
}注意:Claude Code 会在两个位置查找
mcpServers——~/.claude.json(由claude mcp add管理写入)和~/.claude/settings.json(手动编辑)。上面的 CLI 方式会自动写入正确的位置。
配置参考
config.json 的结构:
{
"ssh": {
"host": "your-server.example.com",
"port": 22,
"username": "your-username",
"auth": {
"type": "password",
"key_path": "",
"password": "your-password",
"key_password": ""
},
"connect_timeout": 10,
"keepalive_interval": 30
},
"allowed_paths": [
"/home/your-username/projects"
],
"security": {
"blocked_commands": ["rm -rf /", "mkfs", ...],
"max_file_size_mb": 50,
"max_output_chars": 100000,
"command_timeout": 30
}
}SSH 连接
字段 | 描述 | 默认值 |
| 服务器地址(IP 或域名) | 必填 |
| SSH 端口 |
|
| 登录用户名 | 必填 |
|
|
|
| 私钥路径(密钥认证) | 当 |
| 登录密码(密码认证) | 当 |
| 私钥的密码短语 | 空 |
| 秒 |
|
| 心跳间隔(秒) |
|
访问控制
allowed_paths— 远程目录白名单。所有文件操作在..规范化后都会对照此列表进行校验。不在列表中的请求将被拒绝。子路径自动继承访问权限(例如/data/proj允许访问/data/proj/sub/file.py)。security.blocked_commands—ssh_run_command拒绝执行的 shell 命令模式列表。默认值覆盖了常见的危险操作(rm -rf /、mkfs、shutdown、fork 炸弹、对块设备的原始写入)。你可以扩展此列表,但绝不应为了"修复"某个合理需求而削弱它——参见 安全模型。
资源限制
字段 | 效果 | 默认值 |
|
|
|
|
|
|
|
|
|
认证方式
基于密钥(推荐)
# On your local machine
ssh-keygen -t ed25519 -C "you@example.com"
# Push the public key to the remote
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server然后在 config.json 中:
"auth": {
"type": "key",
"key_path": "~/.ssh/id_ed25519",
"key_password": ""
}key_password 仅在私钥本身已加密时才需要填写。
基于密码
"auth": {
"type": "password",
"password": "your-password"
}密码以明文形式存储在 config.json 中。建议优先使用密钥认证。
GUI 管理器(可选)
一个基于 Tk 的小型图形界面,可让你管理多个服务器配置并在它们之间切换:
# From source
python server_manager.py
# Or build a standalone Windows exe and put it on PATH
pip install -e ".[gui]" # adds pyinstaller
python build.py
python setup_global.py
# now `SSH-Server-Manager` is on PATH配置保存在 profiles.json 中;切换时会将所选配置复制到 config.json,这样 MCP 服务器会在下次启动时读取到它。
安全模型
该服务器在设计上刻意保持保守。有两层独立的机制保护远程主机:
路径作用域。 每个文件操作都会先进行规范化(解析
..、合并斜杠),然后与allowed_paths对照检查。无法绕过此列表——检查是在远程端路径解析之后由服务器端执行的。命令过滤。
ssh_run_command会拒绝任何匹配security.blocked_commands的命令(子串匹配)。默认列表阻止了递归删除、对块设备的原始写入、系统关机、fork 炸弹以及远程 shell 安装器(curl … | sh)。如果你确实需要允许某些特定操作,可以扩展此列表——但不要削弱它。
该服务器不会做以下事情:
不会以 root 身份在远程运行。请使用非 root 用户进行 SSH 连接。
不会绕过
sudo。如果配置的用户无法sudo,服务器同样无法执行。不提供交互式 shell。长时间运行的进程会被
command_timeout强制终止。
故障排查
症状 | 可能原因 | 解决方法 |
| 服务器注册到了错误的作用域,或 | 使用 |
| 安装到了与 | 使用你打算让 Claude Code 使用的解释器来运行 |
| 配置中仍有占位值 | 编辑 |
| LLM 尝试访问的路径不在 | 将该路径添加到配置中的 |
| LLM 尝试执行了黑名单中的命令 | 如果确实需要,请调整 |
| 凭据错误或用户错误 | 在普通 shell 中用 |
服务器已启动但 Claude Code 不显示任何工具 | VSCode 扩展进程已过期 | 完全退出并重新打开 VSCode |
项目结构
server/
├── ssh_mcp_server/ # MCP server package (the actual product)
│ ├── server.py # tool definitions
│ ├── ssh_client.py # paramiko wrapper
│ ├── security.py # path + command validation
│ └── config.py # config loader
├── server_manager.py # Tk GUI for managing profiles
├── profiles.json # GUI profile store
├── config.json # runtime config template (placeholder values)
├── setup.py # pip-installable package metadata
├── install.py # one-shot installer (install + register)
├── setup_global.py # optional: deploy GUI exe to PATH
├── build.py # optional: PyInstaller wrapper for the GUI
├── SSH-Server-Manager.spec # PyInstaller spec for fine-grained builds
├── requirements.txt # raw dependency pins
├── LICENSE # MIT
├── README.md # this file (English)
└── README.zh.md # Chinese translation许可证
MIT — 完整文本请参见该文件。
This server cannot be deployed
Maintenance
Related MCP Connectors
Work on your own computers from Claude or ChatGPT: run commands, edit and search files.
Use your Mac, Windows or Linux computer from ChatGPT, Claude or Codex: files, commands, documents.
Scoped, audited SSH exec, sessions, and SFTP on your saved servers without exposing credentials
Safe folder access for ChatGPT and Claude: read, write and search files, risky tools opt-in.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables SSH remote access to servers through Claude, allowing users to execute commands, transfer files via SFTP, and manage multiple remote connections using natural language.129MIT
- AlicenseAqualityCmaintenanceEnables Claude to connect to servers via SSH, execute commands, transfer files, and manage connections through natural language.911 npm1MIT
- -licenseNot gradedqualityNot gradedmaintenanceEnables Claude Code to control remote servers via SSH for automated deployment, testing, and operations, including command execution and file transfer.4-
- AlicenseNot gradedqualityFmaintenanceEnables Claude to execute commands on remote servers via SSH, with support for SSH config, private keys, password auth, and agent forwarding.70 npmISC