内容
# 计算边缘
用于 Claude Code 的 MCP 服务器,分析仓库、比较云提供商价格并将应用程序部署到云端 — 所有操作都可以在您的编辑器中完成。支持部署任何 Web 应用程序(FastAPI、Next.js、Express 等)和 nanoclaw 代理框架。
## 功能
| 工具 | 描述 |
|------|-------------|
| `analyze_repo` | 检测技术栈、数据库和服务 |
| `estimate_resources` | 估算 CPU、RAM 和存储需求 |
| `compare_providers` | 比较 Hetzner、DigitalOcean、Railway 和 AWS 的价格 |
| `generate_configs` | 生成 Dockerfile、docker-compose 和 nginx 配置 |
| `deploy` | 配置服务器并部署应用程序(Hetzner 或 DigitalOcean) |
| `redeploy` | 更新现有部署的代码 |
| `monitor` | 检查部署的健康状况和资源使用情况 |
| `show_infra` | 查看部署的基础设施详细信息 |
| `destroy_deployment` | 终止部署 |
## 安装
### 选项 A:本地运行(stdio)
克隆并安装:
```bash
git clone https://github.com/baadalAI/public-mcp.git
cd public-mcp
uv venv && uv pip install -e ".[dev]"
```
添加到项目的 `.mcp.json` 中:
```json
{
"mcpServers": {
"computeedge": {
"command": "/path/to/public-mcp/.venv/bin/python",
"args": ["-m", "computeedge.server"],
"env": {
"PYTHONPATH": "/path/to/public-mcp/src"
}
}
}
}
```
将 `/path/to/public-mcp` 替换为实际的仓库克隆路径。
在本地模式下,没有身份验证 — 它作为单个用户运行。您直接在每个部署调用中传递提供商的 API 令牌(Hetzner 或 DigitalOcean)。
### 选项 B:使用 Docker 本地运行(stdio)
```bash
docker build -t computeedge .
```
添加到您的 `.mcp.json` 中:
```json
{
"mcpServers": {
"computeedge": {
"command": "docker",
"args": ["run", "-i", "--rm", "computeedge"]
}
}
}
```
### 选项 C:远程部署(SSE,多租户)
对于团队或共享访问,使用 SSE 传输部署服务器:
```bash
git clone https://github.com/baadalAI/public-mcp.git
cd public-mcp
docker compose up -d
```
这会在端口 8080 上启动 MCP 服务器,并带有 bearer 令牌身份验证和自助注册页面。
**通过 Web UI 注册用户:**
访问 `http://your-server-ip:8080/register` — 用户输入姓名和电子邮件以获取 API 密钥。密钥仅显示一次,之后无法检索。
**或通过 CLI 创建 API 密钥:**
```bash
docker compose exec computeedge computeedge-admin create-user --name "alice"
# 输出:API 密钥:ce_xxxxxxx...
```
**从 Claude Code 连接:**
添加到您的 `.mcp.json` 中:
```json
{
"mcpServers": {
"computeedge": {
"type": "sse",
"url": "http://your-server-ip:8080/sse",
"headers": {
"Authorization": "Bearer ce_your-api-key-here"
}
}
}
}
```
每个用户在工具调用中传递自己的提供商 API 令牌(Hetzner 或 DigitalOcean)— 令牌永远不会存储在服务器端。部署状态对每个用户都是隔离的。
## 用法
### 分析仓库
```
Analyze https://github.com/user/repo
```
返回检测到的技术栈(Next.js、FastAPI 等)、数据库、服务和环境变量。
### 比较云成本
```
Compare providers for https://github.com/user/repo
```
显示 Hetzner、DigitalOcean、Railway 和 AWS 的价格,并提供推荐。
### 部署 Web 应用程序
```
Deploy https://github.com/user/repo to Hetzner with provider_token="your-hetzner-token"
```
```
Deploy https://github.com/user/repo to DigitalOcean with provider_token="your-do-token" provider="digitalocean"
```
配置 VPS/Droplet,生成 Docker 配置,部署应用程序,并返回实时 URL。`generate_configs` 工具首先被调用以生成 Dockerfile — Claude 审查并增强它们,然后再部署。
### 部署 nanoclaw
部署 nanoclaw 代理框架实例 — 请参阅 [docs/nanoclaw-deployment.md](docs/nanoclaw-deployment.md) 以获取完整指南。
**Vanilla nanoclaw(无需仓库):**
```
deploy(provider_token="your-hetzner-token", stack="nanoclaw", env_vars={"ANTHROPIC_API_KEY": "sk-ant-xxx", "TELEGRAM_BOT_TOKEN": "123:ABC"})
```
**您的 nanoclaw 分叉:**
```
deploy(provider_token="your-hetzner-token", repo_path="https://github.com/user/my-nanoclaw.git", env_vars={"ANTHROPIC_API_KEY": "sk-ant-xxx"})
```
**本地 nanoclaw 工作空间(通过 npm 安装):**
```
deploy(provider_token="your-hetzner-token", repo_path="/path/to/my-agents", env_vars={"ANTHROPIC_API_KEY": "sk-ant-xxx"})
```
Nanoclaw 在 VM 上原生部署(不在 Docker 内),使用 Node.js 22、Docker 容器用于代理和 systemd 服务。根据目录结构自动检测 nanoclaw 工作空间。
### 监控
```
Monitor deployment ce-hetzner-abc12345
Monitor deployment ce-digitalocean-abc12345
```
返回 CPU、RAM、磁盘使用率、正常运行时间和健康状态。
## 环境变量
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `COMPUTEEDGE_TRANSPORT` | `stdio` | 传输模式:`stdio` 或 `sse` |
| `COMPUTEEDGE_DB_PATH` | `~/.computeedge/computeedge.db` | SQLite 数据库路径 |
| `FASTMCP_HOST` | `0.0.0.0` | SSE 服务器绑定主机 |
| `FASTMCP_PORT` | `8080` | SSE 服务器绑定端口 |
## 架构
```
MCP 工具(薄包装)-> 服务(业务逻辑)-> 提供商 / 配置 / 状态
```
- **工具** — 处理输入验证和错误捕获的工厂函数
- **服务** — 分析服务、定价服务、部署服务、监控服务
- **提供商** — 云 API 客户端(Hetzner 和 DigitalOcean REST API)
- **配置** — 基于 YAML 的堆栈检测模式和提供商定价
- **状态** — 具有每个用户部署隔离的 SQLite 数据库
- **身份验证** — Bearer 令牌中间件(SSE 模式)、bcrypt 哈希 API 密钥、自助注册
## 多租户
- **身份验证**:通过注册页面或 `computeedge-admin create-user` 的 Bearer 令牌 API 密钥
- **状态隔离**:具有每个用户部署范围的 SQLite
- **提供商令牌**:每个请求传递(从不存储在服务器端)
- **注册**:在 `/register` 自助注册(仅限 SSE 模式)
- **stdio 模式**:无身份验证,单个本地用户
## 添加新堆栈
将检测模式添加到 `src/computeedge/config/stacks.yaml`。无需代码更改。
## 添加提供商
1. 将定价数据添加到 `src/computeedge/config/providers.yaml`
2. 将提供商信息添加到 `PROVIDER_INFO` 中,位于 `src/computeedge/services/pricing.py`
3. 在 `src/computeedge/providers/<provider>.py` 中创建 REST API 客户端
4. 在 `src/computeedge/services/infra/<provider>.py` 中创建基础设施配置器
5. 在 `server.py` 工厂函数中添加提供商分支
## 测试
```bash
uv run pytest tests/ -v # 所有单元测试
uv run pytest tests/ -v -k "test_name" # 单个测试
uv run pytest tests/ -v -m integration # 集成测试(需要令牌)
```
## 许可证
MIT