** 本项目中的所有代码均由生成式AI创建。 **
一个用于SSH连接和文件操作的MCP服务器。
该服务器实现了几个与SSH相关的工具:
connect: 连接到SSH服务器
disconnect: 从SSH服务器断开连接
execute: 在SSH服务器上执行命令
upload: 将文件上传到SSH服务器
download: 从SSH服务器下载文件
list_files: 列出SSH服务器目录中的文件
可以通过在MCP设置中使用环境变量来配置SSH连接参数:
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了解如何使用SSH MCP服务器而无需阅读README.md文件,提供了以下文件:
cline_ssh_usage_example.md: 使用Cline与SSH MCP服务器的快速参考指南,包括示例命令和完整的流程。create_test_file.py: 创建测试文件的脚本,用于上传/下载测试。test_ssh_mcp.sh: 创建测试文件并提供逐步说明的shell脚本,用于使用Cline测试SSH MCP服务器。test_ssh_mcp.py: 直接从Python使用SSH MCP服务器的示例脚本,不使用Cline。ssh_mcp_guide.html: 包含示例和完整流程的HTML指南,用于使用Cline与SSH MCP服务器。要使用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
此脚本将:
在使用SSH MCP服务器之前,需要安装所需的依赖项:
./install_dependencies.sh
此脚本将安装paramiko Python包,这是进行SSH连接所必需的。
提供了两个Python脚本来自动安装SSH MCP服务器:
./install_ssh_mcp.py
./install_ssh_mcp_claude.py
这些脚本将:
提供了示例Claude Desktop配置文件claude-desktop-config-example.json。这展示了如何在Claude Desktop中配置SSH MCP服务器。
要在Claude Desktop中安装SSH MCP服务器:
查找您的Claude Desktop配置文件位置:
~/Library/Application\ Support/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": []
}
}
}
注意:确保用实际的SSH连接详情替换占位符值。
准备分发包:
uv sync
uv build
这将在dist/目录中创建源码和wheel分布。
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和mock来测试SSH MCP服务器的基本功能,而不实际连接到SSH服务器。
由于MCP服务器通过stdio运行,调试可能会很困难。为了获得最佳调试体验,我们强烈建议使用MCP Inspector。
您可以使用以下命令通过npm启动MCP Inspector:
npx @modelcontextprotocol/inspector uv --directory /path/to/ssh-connect run ssh-connect
启动后,Inspector将显示一个URL,您可以在浏览器中访问该URL开始调试。