关于 MCP Server SSH Server
MCP Server SSH Server 通过 SSH 访问远程安装的 MCP 工具,并将多个 MCP 服务聚合到统一接口。它支持密钥认证和可选的 HTTP 密钥管理 API。
主要功能
- 01通过 SSH 远程访问 MCP
- 02基于密钥的客户端认证
- 03聚合多个 MCP 服务
- 04使用 JSON 配置服务
- 05可选的 HTTP 密钥管理 API
- 06支持提示词、资源、工具和日志
适用场景
- 01访问远程主机上的 MCP 工具
- 02整合多个 MCP 提供方
- 03通过 HTTP 注册客户端密钥
- 04配置本地 MCP 工具集合
MCP 相关
它通过 SSH 代理并合并已配置的 MCP 服务,经由统一接口提供其提示词、资源、工具和日志功能。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP Server SSH 服务
一个安全的 SSH 服务,用于访问和交互远程安装的 MCP(模型上下文协议)工具。此服务允许客户端通过统一的安全接口连接多个 MCP 工具提供方。
功能
- 安全远程访问:通过 SSH 远程访问 MCP 工具
- 基于密钥的身份验证:支持基于密钥的身份验证
- 密钥管理 API:可选的 HTTP API,用于管理 SSH 密钥
- 服务聚合:代理并合并多个 MCP 服务,形成统一接口
- MCP 支持:兼容 MCP 能力,包括:
- 提示词
- 资源
- 工具
- 日志记录
- 动态配置:通过简单的 JSON 配置文件配置可用的 MCP 服务
身份验证流程
%%{init: {'theme':'default', 'themeVariables': { 'primaryColor': '#5D8AA8', 'primaryTextColor': '#fff', 'primaryBorderColor': '#1F456E', 'lineColor': '#5D8AA8', 'secondaryColor': '#006400', 'tertiaryColor': '#fff' }}}%%
sequenceDiagram
participant Host as MCP Host<br>(Claude/Cursor)
participant Client as MCP SSH Client
participant KeySrv as Key Server<br>(HTTP API)
participant SSHSrv as MCP SSH Server
participant MCP as MCP Servers
Note over Client,SSHSrv: Initial Key Exchange & Authentication
Client->>Client: Generate SSH key pair<br>if does not exist
Client->>KeySrv: GET /server_pub_key
KeySrv->>Client: Return server's public key
Client->>Client: Store server key in<br>temporary known_hosts
Client->>KeySrv: POST /register<br>{client_pub_key: "ssh-ed25519 AAAA..."}
KeySrv->>SSHSrv: Store client public key<br>in authorized keys
KeySrv->>Client: {status: "success"}
Note over Client,SSHSrv: Secure SSH Connection
Client->>SSHSrv: SSH handshake with<br>client key authentication
SSHSrv->>SSHSrv: Verify client key<br>against authorized keys
SSHSrv->>Client: Authentication successful
Note over Client,SSHSrv: MCP Communication
Host->>Client: JSONRPC request
Client->>SSHSrv: Forward request<br>over SSH tunnel
SSHSrv->>MCP: Route request to<br>appropriate MCP server
MCP->>SSHSrv: Process and return results
SSHSrv->>Client: Send response over SSH
Client->>Host: Return JSONRPC response
Note over Client,SSHSrv: Session Management
alt Session Termination
Host->>Client: Close connection
Client->>SSHSrv: Terminate SSH session
SSHSrv->>SSHSrv: Clean up resources
end
安装
在由 uv 管理的 Python 项目中,通过以下方式添加为依赖:
uv add m2m-mcp-server-ssh-server
# For key server functionality, include the optional dependency:
uv add m2m-mcp-server-ssh-server[key-server]
或者,对于使用 pip 管理依赖的项目:
pip install m2m-mcp-server-ssh-server
# Or with key server functionality
pip install m2m-mcp-server-ssh-server[key-server]
若要直接从源代码安装:
git clone https://github.com/Machine-To-Machine/m2m-mcp-server-ssh-server.git
cd m2m-mcp-server-ssh-server
pip install -e .
若要在项目中运行服务:
uv run m2m-mcp-server-ssh-server
常见用例
1. 本地开发环境
使用你偏好的 MCP 工具快速设置本地服务:
- 创建配置文件(
servers_config.json):
{
"mcpServers": {
"HackerNews": {
"command": "uvx",
"args": ["mcp-hn"]
},
"major-league-baseball": {
"command": "uvx",
"args": ["mcp_mlb_statsapi"]
}
}
}
- 启动服务,并运行密钥管理 API,以便客户端轻松连接:
uv run m2m-mcp-server-ssh-server --run-key-server
- 使用客户端连接:
uv run m2m-mcp-server-ssh-client --host localhost --port 8022 --use-key-server
2. 远程托管(快速设置)
若要让 MCP 工具可供远程使用:
- 在你的服务上安装:
uv add m2m-mcp-server-ssh-server[key-server]
-
创建包含所需 MCP 工具的配置文件
-
启动服务并绑定到所有网络接口:
uv run m2m-mcp-server-ssh-server --host 0.0.0.0 --run-key-server --key-server-host 0.0.0.0
- 从客户端计算机连接:
uv run m2m-mcp-server-ssh-client --host your-server.example.com --port 8022 --use-key-server
如需更详细的部署说明,请参阅云部署指南。
使用方法
命令行选项
--host:要绑定的 SSH 服务主机地址(默认值:127.0.0.1)--port:SSH 服务监听端口(默认值:8022)--authorized-clients:授权密钥文件的路径(默认值:~/.ssh/authorized_keys)--server-key:服务私钥文件的路径(默认值:~/.ssh/m2m_mcp_server_ssh_server)--passphrase:私钥的口令(可选)--servers-config:服务配置 JSON 文件的路径(默认值:servers_config.json)--log-level:设置日志级别(默认值:INFO)--run-key-server:运行 HTTP 密钥管理服务--key-server-port:HTTP 密钥管理服务的端口(默认值:8000)--key-server-host:HTTP 密钥管理服务的主机(默认值:127.0.0.1)--version:显示版本信息并退出
安全提示:绑定到所有网络接口(0.0.0.0)时,任何能够访问你系统的计算机都可以访问此服务。请务必使用强身份验证,并考虑防火墙等额外的安全措施。
密钥管理服务
你可以选择在 SSH 服务旁运行密钥管理 HTTP 服务,以简化客户端密钥注册:
uv run m2m-mcp-server-ssh-server --run-key-server
此操作会启动:
- 端口 8022 上的 SSH 服务
- 端口 8000 上的密钥管理 HTTP 服务(默认仅限本地主机访问)
密钥管理 API
密钥管理服务提供以下端点:
-
POST /register- 注册客户端公钥- 请求正文:
{"client_pub_key": "ssh-rsa AAAA..."} - 响应:
{"status": "success"}或错误消息
- 请求正文:
-
GET /server_pub_key- 获取服务公钥- 响应:
{"server_pub_key": "ssh-ed25519 AAAA..."}
- 响应:
-
GET /health- 检查服务运行状况- 响应:
{"status": "healthy"}
- 响应:
客户端密钥注册示例:
curl -X POST -H "Content-Type: application/json" \
-d '{"client_pub_key": "ssh-rsa AAAA..."}' \
http://localhost:8000/register
安全注意事项
- 默认绑定到 localhost(127.0.0.1),以提高安全性
- 如果未提供密钥,则会自动生成并设置安全权限
- 默认密钥位置为
~/.ssh/m2m_mcp_server_ssh_server - 私钥使用 0o600 权限(仅所有者可读取)
- 公钥使用 0o644 权限(所有人可读取,所有者可写入)
- 密钥服务对 API 端点进行速率限制
- 输入验证可防止恶意输入
依赖项
- anyio(>=4.5.0)
- asyncssh(>=2.20.0)
- mcp(>=1.1.3)
- pydantic(>=2.0.0)
- aiohttp(>=3.11.16)- 可选,用于密钥服务功能
开发
设置开发环境
git clone https://github.com/Machine-To-Machine/m2m-mcp-server-ssh-server.git
cd m2m-mcp-server-ssh-server
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv pip install -e ".[dev]"
代码质量
# Run linting
uv run ruff check .
# Run formatting check
uv run ruff format --check .
# Run security checks
uv run bandit -r src/
贡献
欢迎为 m2m-mcp-server-ssh-server 提交贡献,帮助拓展和改进该项目。无论是添加新功能、增强现有功能,还是完善文档,你的贡献都很有价值。
欢迎提交拉取请求!欢迎贡献新想法、错误修复或增强内容。
贡献指南
- Fork 仓库
- 创建功能分支:
git checkout -b feature-name - 提交更改:
git commit -am 'Add some feature' - 推送到分支:
git push origin feature-name - 提交拉取请求
许可证
MIT 许可证 - 详情请参阅 LICENSE 文件。
作者
- Machine To Machine
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。