SSH MCP服务器(Python)
SSH提供连接功能MCP(Model Context Protocol)服务器Python实施。FastMCP使用库uv中所述修改相应参数的值。
📁 项目结构
ssh_mcp_server_python/
├── pyproject.toml # プロジェクト設定とビルド設定
├── uv.lock # 依存関係ロックファイル
├── src/ # ソースコード
│ └── ssh_mcp_server_python/
│ ├── __init__.py # パッケージ初期化
│ └── main.py # メインサーバー実装
├── .env # 環境設定(要作成)
├── .env.example # 環境設定テンプレート
├── start.bat # Windows起動スクリプト
├── start.sh # Linux/Mac起動スクリプト
├── test_tools_list.py # ツールリストテスト
├── validate.py # 設定検証スクリプト
└── README.md # このファイル机能
- SSH接続管理:支持密码和私钥身份验证
- 执行远程命令:也可以指定工作目录
- 文件传输: SFTP通过上传下载
- 系统信息获取:获取有关连接的详细信息
- 自动设定検证:自动检查设置有效性
- 详细日志输出:便于调试的日志功能
前提条件
- Python 3.10以上
- uv(Python 包管理器)
uv安装:
# Windows (PowerShell)
irm https://astral.sh/uv/install.ps1 | iex
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh快速启动
1.设置依赖关系
uv sync此命令执行以下操作:
- 自动创建虚拟环境
- 必需的Python安装软件包
- 生成锁定文件(uv.lock)
2. SSH设置连接信息
.env编辑文件SSH请设置连接信息:
# 基本設定
UBUNTU_SSH_HOST=192.168.1.100
UBUNTU_SSH_PORT=22
UBUNTU_SSH_USERNAME=your_username
# パスワード認証の場合
UBUNTU_SSH_PASSWORD=your_password
# または秘密鍵認証の場合
UBUNTU_SSH_PRIVATE_KEY_PATH=/path/to/your/private/key
UBUNTU_SSH_PRIVATE_KEY_PASSPHRASE=your_passphrase_if_needed3.启动服务器
# uvを使った実行(推奨)
uv run ssh-mcp-server
# または起動スクリプトを使用
# Windows
start.bat
# Linux/Mac
./start.sh可用工具
|工具名称|说明|主要参数| |---------|------|----------------| | connect_ssh | SSH接続を確立 | 主机、用户名、密码/private_key| | execute_命令 执行远程命令command, cwd(工作目录) | 上传文件 上传文件local_path, remote_path | | 下载文件 下载文件remote_path, local_path | | disconnect_ssh | SSH断开连接|无| | get_system_info |获取系统信息|无|
工具详细信息
- connect_ssh:未指定参数时使用环境变量(.env)的值
- execute_命令:获取所有标准输出、标准错误和结束代码
- 上传文件/下载文件:带目录自动创建功能
- get_system_info: uname、磁盘使用量、内存、进程信息等
手动设置(详细信息)
安装相关性
# uvを使用(推奨)
uv sync
# または従来のpip
pip install fastmcp paramiko python-dotenv所需的软件包:
fastmcp-MCP(模型上下文协议)サーバーフレームワークparamiko- SSH/SFTP客户机python-dotenv- 環境変数管理
在开发环境中运行
# 開発モードでの実行
uv run python src/ssh_mcp_server_python/main.py
# または仮想環境を有効化して実行
uv shell
python src/ssh_mcp_server_python/main.py设定検证
可以检查配置是否正确:
uv run python validate.py此命令检查:
.env文件存在- 确认必填项
- 确认私钥文件的存在
- Python软件包安装
测试运行
检查工具列表:
uv run python test_tools_list.pyVS代码/克劳德桌面での設定
VS Code MCP设定
VS Code单击功能区上Copilot进行动态观察时的轴心点mcp.json请在文件中添加以下设置:
文件位置:
- 窗户:
%APPDATA%\Code\User\mcp.json - macOS:
~/Library/Application Support/Code/User/mcp.json - Linux:
~/.config/Code/User/mcp.json
{
"servers": {
"ssh-mcp-server": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/your/ssh_mcp_server_python",
"ssh-mcp-server"
],
"env": {
"UBUNTU_SSH_HOST": "192.168.56.103",
"UBUNTU_SSH_PORT": "22",
"UBUNTU_SSH_USERNAME": "your_username",
"UBUNTU_SSH_PASSWORD": "your_password"
}
}
}
}Claude Desktop设定
Claude Desktop使用时,在配置文件中添加以下内容:
文件位置:
- 窗户:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"ssh-server": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/your/ssh_mcp_server_python",
"ssh-mcp-server"
],
"env": {
"UBUNTU_SSH_HOST": "192.168.56.103",
"UBUNTU_SSH_PORT": "22",
"UBUNTU_SSH_USERNAME": "your_username",
"UBUNTU_SSH_PASSWORD": "your_password"
}
}
}
}设置要点
- 路径设置:
--directory请根据您的环境更改路径 - 环境变数: SSH连接信息为
.env在文件或配置文件中指定 - 安全性:密码不在配置文件中
.env推荐文件
使用方法
这个服务器Model Context Protocol进行动态观察时的轴心点。MCP客户端(例如:Claude Desktop、VS Code),模板名称将采用不同的格式。
基本使用流程
connect_ssh单击功能区上SSH建立连接execute_command执行远程命令- 根据需要
upload_file/download_file文件传输 get_system_info获取系统信息- 作业完了后、
disconnect_ssh断开连接
使用示例:Docker构建执行
1. connect_ssh() でSSH接続
2. execute_command("docker run --rm -v /home/user/project:/workspace -w /workspace ubuntu-dev bash -c './Build.sh'")
3. disconnect_ssh() で切断示例:文件传输和脚本执行
1. connect_ssh() でSSH接続
2. upload_file("local_script.py", "/tmp/script.py")
3. execute_command("python3 /tmp/script.py", cwd="/tmp")
4. download_file("/tmp/output.txt", "result.txt")
5. disconnect_ssh() で切断故障排除
常见问题
- 连接错误:
.env检查文件设置 - 验证错误:确认密码或私钥设置
- 程序包错误:
uv sync执行 - 缺少命令:
uv run ssh-mcp-server确认路径
uv命令问题
# 間違い
uv python test_tools_list.py
# 正しい
uv run python test_tools_list.py检查日志
服务器运行时将输出详细的日志。可以确认连接和命令执行的状况。
调试模式
单击功能区上的src/ssh_mcp_server_python/main.py中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')安全注意事项
.env文件包含敏感信息,请勿包含在版本控制中- SSH连接仅在可信网络上使用
- 请注意私钥文件的权限设置(通常为600)
- 在生产环境中,建议使用环境变量管理凭据
技术仕样
- 程序设计语言:Python 3.10+
- MCP框架结构:FastMCP 2.11.2
- 包管理器:紫外线
- 项目结构:src布局
- SSH/SFTP程序库:paramiko
- 设定管理:python dotenv
开发人员信息
uvの特徴
- 高速:传统pip更快的软件包解析安装
- 再现可能: uv.lock可靠的依赖关系管理
- 简单的:集成虚拟环境和包管理
src-layout采用结构
- 标准的: Python业界广泛采用的结构
- 分离:明确分离源代码和项目文件
- 测试:正确隔离测试文件和源代码
许可证
MIT许可证
