使用说明
SSH MCP服务器(TypeScript)
SSH提供连接功能MCP(Model Context Protocol)服务器TypeScript实施。Ubuntu虚拟机SSH来修改标记元素的显示属性VS Code Copilot中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
📁 项目结构
ssh_mcp_server/
├── package.json # プロジェクト設定とビルド設定
├── package-lock.json # 依存関係ロックファイル
├── tsconfig.json # TypeScript設定
├── build/ # コンパイル済みJavaScriptファイル
│ ├── index.js
│ ├── index.js.map
│ ├── index.d.ts
│ └── index.d.ts.map
├── src/ # TypeScriptソースコード
│ └── index.ts # メインサーバー実装
├── test_tools_list.js # ツールリストテスト
├── README.md # このファイル
└── .gitignore # Git除外設定
机能
- SSH接続管理:支持密码和私钥身份验证
- 执行远程命令:也可以指定工作目录
- 文件传输: SFTP通过上传下载
- 系统信息获取:获取有关连接的详细信息
- 环境变量支持:安全管理连接信息
- VS Code连携: GitHub Copilot完全集成
- 详细日志输出:便于调试的日志功能
前提条件
- Node.js: 18.0.0 以上
- npm: Node.js附带的包管理器
- TypeScript:开发时使用(包括在devDependendencies中)
Node.js安装:
# 最新LTS版のインストール
winget install OpenJS.NodeJS.LTS
快速启动
1.设置依赖关系
npm install
此命令执行以下操作:
- 必需的Node.js安装软件包
- TypeScript设置相关开发依赖关系
2.构建项目
npm run build
TypeScript文件JavaScript将条目添加到文档注册表build/输出到目录。
3. SSH设置连接信息
设置环境变量SSH管理连接信息:
# Windows (コマンドプロンプト)
set UBUNTU_SSH_HOST=192.168.56.103
set UBUNTU_SSH_PORT=22
set UBUNTU_SSH_USERNAME=your_username
set UBUNTU_SSH_PASSWORD=your_password
# Windows (PowerShell)
$env:UBUNTU_SSH_HOST="192.168.56.103"
$env:UBUNTU_SSH_PORT="22"
$env:UBUNTU_SSH_USERNAME="your_username"
$env:UBUNTU_SSH_PASSWORD="your_password"
# Linux/macOS
export UBUNTU_SSH_HOST=192.168.56.103
export UBUNTU_SSH_PORT=22
export UBUNTU_SSH_USERNAME=your_username
export UBUNTU_SSH_PASSWORD=your_password
4.启动服务器
# ビルド済みファイルから実行(推奨)
npm start
# または直接実行
node build/index.js
VS Code / Claude Desktop 中的设置
VS Code MCP设定
VS Code单击功能区上Copilot进行动态观察时的轴心点mcp.json请在文件中添加以下设置:
文件位置:
- 视窗:
%APPDATA%\Code - Insiders\User\mcp.json(Insiders版本)或%APPDATA%\Code\User\mcp.json(安定版) - macOS:
~/Library/Application Support/Code - Insiders/User/mcp.json在工作空间的边缘~/Library/Application Support/Code/User/mcp.json - Linux:
~/.config/Code - Insiders/User/mcp.json在工作空间的边缘~/.config/Code/User/mcp.json
{
"servers": {
"ssh-mcp-server": {
"type": "stdio",
"command": "node",
"args": ["path/to/ssh_mcp_server/build/index.js"],
"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": "node",
"args": ["path/to/ssh_mcp_server/build/index.js"],
"env": {
"UBUNTU_SSH_HOST": "192.168.56.103",
"UBUNTU_SSH_PORT": "22",
"UBUNTU_SSH_USERNAME": "your_username",
"UBUNTU_SSH_PASSWORD": "your_password"
}
}
}
}
按环境变量设置(建议)
考虑到安全性,还可以在系统环境变量中设置:
{
"servers": {
"ssh-mcp-server": {
"type": "stdio",
"command": "node",
"args": ["path/to/ssh_mcp_server/build/index.js"]
}
}
}
使用私钥身份验证:
# パスワードの代わりに秘密鍵を使用
export UBUNTU_SSH_PRIVATE_KEY_PATH="/path/to/your/private/key"
export UBUNTU_SSH_PRIVATE_KEY_PASSPHRASE="your_passphrase_if_needed"
设置要点
- 路径设置:
args请根据您的环境更改路径 - 环境变数: SSH连接信息在设定文件内或环境变量中指定
- 安全性:密码不在配置文件中,建议使用环境变量
VS Code在中使用
- VS Code(GitHub Copilot有效)を起动
- Copilot聊天请求:
- "Ubuntu来定义自定义外观。“
- "docker 请执行命令“
- “上载文件并运行构建”
MCP自动调用服务器Ubuntu VM执行上述操作。
可用的MCP工具
|工具名称|说明|主要参数| |---------|------|----------------| | connect_ssh | SSH接続を确立|host, username, password/private_key | | execute_命令 执行远程命令command, cwd(工作目录) | 上传文件 上传文件local_path, remote_path | | 下载文件 下载文件remote_path, local_path | | disconnect_ssh | SSH断开连接|无| | get_system_info |获取系统信息|无|
工具详细信息
connect_ssh
Ubuntu VM在…之上SSH建立连接。如果省略了参数,则从环境变量中自动获取。
参数:
host(可选):SSH目标主机(环境变量:UBUNTU_SSH_HOST)username(可选):SSH用户名(环境变量:UBUNTU_SSH_USERNAME)port(可选):SSH端口(环境变量:UBUNTU_SSH_PORT、默认值:22)password(可选):密码(环境变量:UBUNTU_SSH_PASSWORD)private_key(可选):私钥内容(环境变量:UBUNTU_SSH_PRIVATE_KEY_PATH)private_key_passphrase(可选):私钥密码短语(环境变量:UBUNTU_SSH_PRIVATE_KEY_PASSPHRASE)
execute_命令
已连接Ubuntu VM执行命令以获取结果。获取所有标准输出、标准错误和结束代码。
参数:
command(必需):要执行的壳命令cwd(可选):运行命令的工作目录
使用例:
- 系统信息获取:
uname -a - Docker容器运行:
docker run --rm ubuntu echo "Hello World" - 文件操作:
ls -la /home/user
上传文件
打开本地文件Ubuntu VM中所述修改相应参数的值。如果目录不存在,则自动创建。
参数:
local_path(必需):本地文件路径remote_path(必需):要上传的VM文件路径
下载文件
Ubuntu VM之后由应用程序进行调用。如果本地目录不存在,则自动创建。
参数:
remote_path(必需):下载源的VM文件路径local_path(必需):目标本地文件路径
get_system_info
Ubuntu VM的明细栏样式中定义的设置。
取得情报:
- 系统信息
- OS 发布信息
- 磁盘使用量
- 内存使用量
- CPU情报
- 网络接口
- 运行进程列表
- 系统运行时间
disconnect_ssh
SSH断开连接并释放资源。建议您在工作完成后务必执行。
使用方法
这个服务器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/kosuke/work/TCPTestApp:/workspace -w /workspace ubuntu-dev bash -c '/workspace/Build.sh'")
3. disconnect_ssh() で切断
示例:文件传输和脚本执行
1. connect_ssh() でSSH接続
2. upload_file("local_script.sh", "/tmp/script.sh")
3. execute_command("chmod +x /tmp/script.sh && /tmp/script.sh", cwd="/tmp")
4. download_file("/tmp/output.txt", "result.txt")
5. disconnect_ssh() で切断
实际的Copilot使用示例
按以下要求MCP自动调用服务器:
- 系统信息确认:请连接Ubuntu获取系统信息
- Docker実行:在Ubuntu上运行以下命令:docker run --rm ubuntu echo 'Hello World'"
- 文件管理:“本地config.json打开VM的,之home/user/请上传到“
- 远程开发:“请连接到虚拟机构建项目并下载结果”
开发调试
在开发模式下运行
# TypeScriptファイルを監視して自動コンパイル
npm run dev
# または手動でのビルドと実行
npm run build
npm start
手动MCP服务器测试
# サーバーを直接起動
npm start
# または
node build/index.js
# ツールリストの確認
node test_tools_list.js
设定検证
测试当前设置和连接是否正常:
# ツールリストの動作確認
node test_tools_list.js
检查日志输出
VS Code Copilot运行时: MCP服务器日志VS Code的输出面板中可以确认:
- VS Code单击功能区上
表示→出力的双曲正切值 - 从下拉列表中MCP选择服务器
在命令行上运行时: 在标准输出中显示详细的日志。
故障排除
常见问题
- 连接错误:确认环境变量的设置
- 验证错误:确认密码或私钥设置
- 构建错误:
npm run build重新运行 - 缺少命令:
node build/index.js确认路径
SSH连接问题
SSH连接错误
- Ubuntu VM单击功能区上SSH确认服务器是否已启动:
sudo systemctl status ssh - 检查防火墙设置:
sudo ufw status - VM的网络设置(端口转发等)的确认
验证错误
- 复查环境变量值
- 确认是否启用了密码验证:
/etc/ssh/sshd_config - 确认私钥权限:
chmod 600 ~/.ssh/id_rsa
VS Code协作问题
MCP配置错误
- mcp.json文件位置和JSON检查语法
- GitHub Copilot确认是否有效
- VS Code 重新启动以反映设置
路径相关错误
- mcp.json的,之
args验证路径是否正确 - 建议使用绝对路径而不是相对路径
调试模式
单击功能区上的src/index.ts中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积
// デバッグレベルのログを有効化
console.log("詳細なデバッグ情報...");
日志确认方法
- VS Code在动态输入提示中单击MCP检查服务器日志
- 在命令行中直接运行服务器以获取调试信息
- SSH如果需要详细的连接日志,请使用服务器代码调整日志级别
安全注意事项
- SSH请安全管理连接凭据
- 建议使用环境变量管理密码
- SSH连接仅在可信网络上使用
- 请注意私钥文件的权限设置(通常为600)
- 在生产环境中,建议使用环境变量管理凭据
系统要求
本地环境
- Node.js: 18.0.0 以上
- npm: Node.js附带的包管理器
- VS代码: GitHub Copilot扩张机能が有效
- 操作系统:Windows 10/11、macOS 10.15+、Linux(Ubuntu 18.04+)
Ubuntu VM环境
- 操作系统: Ubuntu 18.04 LTS 以上
- 安全外壳协议:OpenSSH服务器(
sudo apt install openssh-server) - 网络: SSH可连接的设置(端口22或自定义端口)
- 码头工人:根据需要(
sudo apt install docker.io)
技术仕样
- 程序设计语言:TypeScript 5.x
- 运行时间:Node.js 18.0.0+
- MCP框架结构:@modelcontextprotocol/sdk
- SSH/SFTP程序库:ssh2
- 构建工具:TypeScript编译器(tsc)
- 包管理器:npm
依存关系
本体依存関係:
@modelcontextprotocol/sdk- MCP(Model Context Protocol)服务器SDKssh2- SSH/SFTP客户机zod-架构验证
开発依存关系:
typescript- TypeScript 编译程序@types/node- Node.js型定义
开发人员信息
项目结构特征
- TypeScript:模具安全性和IDE支援事业
- MCP-SDK: Model Context Protocolの标准実装
- 简单配置:以最低的依赖关系实现高功能性
自定义
要自定义项目,请编辑以下文件:
src/index.ts:主服务器逻辑package.json:项目设置和相关性tsconfig.json: TypeScript 编译设置
许可证
MIT许可证
貢献
Issue报告和Pull Request欢迎光临。在有功能追加或改善提案情况下GitHub的,之Issue来定义自定义外观。
参与开发
- 分叉此存储库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - Pull Request创建
