ssh连接MCP服务器
\*\* 这个项目中的所有代码都是由生成式AI创建的。 \*\*
用于SSH连接和文件操作的MCP服务器。
组件
工具
服务器实现了几个与SSH相关的工具:
- 连接:连接到SSH服务器
- 用于覆盖环境变量的可选参数:主机、端口、用户名、密码、key_path、key_passphrase - 返回连接状态
- 断开:断开与SSH服务器的连接
- 无需参数 - 返回断开连接状态
- 执行:在SSH服务器上执行命令
- 必需参数:命令(字符串) - 可选参数:超时(整数,秒,默认值:60) - 返回命令输出(stdout和stderr)和退出状态
- 上传:将文件上传到SSH服务器
- 必需参数:local_path、remote_path - 返回上传状态
- 下载:从SSH服务器下载文件
- 必需参数:remote_path、local_path - 返回下载状态
- 列表文件:列出SSH服务器上某个目录中的文件
- 必需参数:路径 - 返回包含类型和大小信息的文件列表
配置
SSH连接参数可以使用MCP设置中的环境变量进行配置:
SSH_HOST:SSH服务器主机名或IP地址SSH_PORT:SSH服务器端口(默认值:22)SSH_USERNAME:SSH用户名SSH_PASSWORD:SSH密码(如果使用密码身份验证)SSH_KEY_PATH:SSH私钥文件的路径(如果使用密钥身份验证)SSH_KEY_PASSPHRASE:SSH私钥的密码短语(如果需要)
您必须提供 SSH_PASSWORD 或 SSH_KEY_PATH 用于身份验证。
配置示例
MCP配置文件示例见 mcp-config-example.json。您可以将其用作配置SSH MCP服务器的模板:
{
"mcpServers": {
"ssh-connect": {
"command": "uv",
"args": [
"--directory",
"/path/to/ssh-connect",
"run",
"ssh-connect"
],
"env": {
"SSH_HOST": "example.com",
"SSH_PORT": "22",
"SSH_USERNAME": "username",
"SSH_PASSWORD": "password",
"SSH_KEY_PATH": "/path/to/private_key",
"SSH_KEY_PASSPHRASE": "key_passphrase"
}
}
}
}注意:您通常只需提供以下任一信息 SSH_PASSWORD 或 SSH_KEY_PATH (可选 SSH_KEY_PASSPHRASE)不是两者都有。
例子
Python脚本示例在 examples 演示如何使用SSH MCP服务器的目录:
ssh_example.py:显示如何连接到SSH服务器、执行命令、上传/下载文件、列出目录内容和断开连接。
要运行该示例,请执行以下操作:
python examples/ssh_example.py此示例假设SSH MCP服务器已配置并正在运行。
与Cline一起使用
为了帮助Cline了解如何在不阅读README.md文件的情况下使用SSH MCP服务器,提供了以下文件:
cline_ssh_usage_example.md:使用SSH MCP服务器与Cline的快速参考指南,包括示例命令和完整的工作流程。create_test_file.py:创建用于上传/下载测试的测试文件的脚本。test_ssh_mcp.sh:一个shell脚本,用于创建测试文件,并提供使用Cline测试SSH MCP服务器的分步说明。test_ssh_mcp.py:一个Python脚本,演示如何直接从Python使用SSH MCP服务器,而不使用Cline。ssh_mcp_guide.html:一份HTML指南,其中包含使用SSH MCP服务器和Cline的示例和完整工作流程。
使用Cline测试SSH MCP服务器:
./test_ssh_mcp.sh这将创建一个测试文件并显示使用Cline测试SSH MCP服务器的说明。
要直接从Python测试SSH MCP服务器:
./test_ssh_mcp.py这将执行SSH MCP服务器的完整测试,包括连接、执行命令、上传/下载文件和断开连接。
快速启动
安装
一体化设置
对于SSH MCP服务器的完整设置和测试,您可以使用一体化设置脚本:
./setup_and_test.sh此脚本将:
- 安装所需的依赖项
- 在Cline或Claude Desktop(或两者)中安装SSH MCP服务器
- 测试SSH MCP服务器
手动设置
依赖项
在使用SSH MCP服务器之前,您需要安装所需的依赖项:
./install_dependencies.sh此脚本将安装SSH连接所需的paramiko Python包。
自动安装
提供了两个Python脚本来自动安装SSH MCP服务器:
- 对于克莱恩:
./install_ssh_mcp.py- 对于Claude Desktop:
./install_ssh_mcp_claude.py这些脚本将:
- 检测配置文件的位置
- 提示您输入SSH连接参数
- 使用SSH MCP服务器配置更新配置文件
手动安装
克劳德桌面
Claude Desktop配置文件示例见 claude-desktop-config-example.json。这显示了如何在Claude Desktop中配置SSH MCP服务器。
要在Claude Desktop中安装SSH MCP服务器:
- 找到您的Claude Desktop配置文件:
- 在 macOS 上: ~/Library/Application\ Support/Claude/claude_desktop_config.json - 在Windows上: %APPDATA%/Claude/claude_desktop_config.json
- 将SSH MCP服务器配置添加到
mcpServers配置文件中的对象:
{
"mcpServers": {
"ssh-connect": {
"command": "uv",
"args": [
"--directory",
"/path/to/ssh-connect",
"run",
"ssh-connect"
],
"env": {
"SSH_HOST": "example.com",
"SSH_PORT": "22",
"SSH_USERNAME": "username",
"SSH_PASSWORD": "password",
"SSH_KEY_PATH": "/path/to/private_key",
"SSH_KEY_PASSPHRASE": "key_passphrase"
},
"disabled": false,
"autoApprove": []
}
}
}- 重新启动Claude Desktop以应用更改。
注意:确保用实际的SSH连接详细信息替换占位符值。
发展
建筑与出版
准备分发包裹:
- 同步依赖关系并更新锁文件:
uv sync- 构建包分发:
uv build这将在 dist/ 目录。
- 发布到PyPI:
uv publish注意:您需要通过环境变量或命令标志设置PyPI凭据:
- 令牌:
--token或UV_PUBLISH_TOKEN - 或用户名/密码:
--username/UV_PUBLISH_USERNAME和--password/UV_PUBLISH_PASSWORD
测试
测试脚本在 tests 用于验证SSH MCP服务器是否正常工作的目录:
python tests/test_ssh_connect.py此测试脚本使用unittest和mocking来测试SSH MCP服务器的基本功能,而无需实际连接到SSH服务器。
调试
由于MCP服务器在stdio上运行,调试可能具有挑战性。为了达到最佳调试效果 经验,我们强烈建议使用 MCP检查员.
您可以通过以下方式启动MCP检查器 使用此命令:
npx @modelcontextprotocol/inspector uv --directory /path/to/ssh-connect run ssh-connect启动后,检查器将显示一个URL,您可以在浏览器中访问该URL以开始调试。
