精简项目:只保留 docker_logs + health + info 三个工具
- 移除 database/middleware 等复杂模块,先聚焦核心功能 - docker_logs:封装 docker logs --tail N <container> - 修复 go.mod 版本为 1.24 匹配 Docker 构建镜像 - Dockerfile 改用 alpine + docker-cli,避免 scratch 无 shell 问题 - docker-compose.yml 简化为单服务定义 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,13 +1,11 @@
|
||||
# ops-mcp
|
||||
|
||||
生产环境 OPS MCP Server —— 安全的数据库查询 + Docker 容器日志工具。
|
||||
|
||||
Go 编译为 ~15MB 单二进制,scratch 镜像部署。
|
||||
Docker 容器日志 MCP Server —— `docker logs` 的 MCP 封装。
|
||||
|
||||
## 快速开始
|
||||
|
||||
```bash
|
||||
make build && ./ops-mcp -env=dev
|
||||
make build && ./ops-mcp
|
||||
```
|
||||
|
||||
## Claude Desktop 配置
|
||||
@@ -16,65 +14,28 @@ make build && ./ops-mcp -env=dev
|
||||
{
|
||||
"mcpServers": {
|
||||
"ops-mcp": {
|
||||
"command": "/path/to/ops-mcp",
|
||||
"args": ["-env=dev"]
|
||||
"command": "/path/to/ops-mcp"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Docker Compose 部署(推荐)
|
||||
## Docker Compose 部署
|
||||
|
||||
```bash
|
||||
# 1. 配置密钥
|
||||
cp .env.example .env
|
||||
# 编辑 .env,填入真实的 DB_PASSWORD 和 JWT_SECRET
|
||||
|
||||
# 2. 启动(仅 MCP 服务)
|
||||
make up
|
||||
|
||||
# 3. 启动(带本地 PostgreSQL,用于开发调试)
|
||||
make up-dev
|
||||
|
||||
# 4. 查看日志
|
||||
make logs
|
||||
|
||||
# 5. 更新部署
|
||||
git pull && make up # 重新 build 镜像并重启
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
**docker-compose.yml 做了什么:**
|
||||
然后 Claude Desktop 通过 SSE 连接:
|
||||
|
||||
| 项目 | 说明 |
|
||||
|---|---|
|
||||
| `build.context` | 从当前目录 `Dockerfile` 构建 |
|
||||
| `ports` | 映射 `8080`(SSE 模式) |
|
||||
| `volumes` | 只读挂载 `/var/run/docker.sock`,挂载 `prod.yaml` |
|
||||
| `read_only: true` | 容器文件系统只读 + tmpfs `/tmp` |
|
||||
| `security_opt` | `no-new-privileges` 禁止提权 |
|
||||
| `cap_drop: [ALL]` | 移除所有 Linux capabilities |
|
||||
| `healthcheck` | 30s 间隔自检 |
|
||||
| `profiles: [dev]` | PG 仅 `--profile dev` 时启动 |
|
||||
|
||||
## MCP 工具列表
|
||||
|
||||
| 工具 | 说明 |
|
||||
|---|---|
|
||||
| `health` | 服务健康检查、内存、goroutine、连接状态 |
|
||||
| `info` | 版本号、Go 版本、已加载工具列表 |
|
||||
| `db_query` | 参数化只读 SQL 查询(四层安全防护) |
|
||||
| `db_tables` | 列出数据库所有表 |
|
||||
| `db_table_info` | 查看表结构 |
|
||||
| `db_explain` | EXPLAIN 分析查询计划 |
|
||||
| `docker_ps` | 列出 Docker 容器 |
|
||||
| `docker_logs` | 获取容器日志(白名单 + 大小限制) |
|
||||
| `docker_inspect` | 查看容器详情(不泄露 Env 密钥) |
|
||||
|
||||
## 开发
|
||||
|
||||
```bash
|
||||
make build # 编译
|
||||
make test # 测试
|
||||
make lint # 代码检查(需安装 golangci-lint)
|
||||
make image # 仅构建 Docker 镜像
|
||||
```json
|
||||
{ "mcpServers": { "ops-mcp": { "url": "http://<server>:8080/sse" } } }
|
||||
```
|
||||
|
||||
## MCP 工具
|
||||
|
||||
| 工具 | 说明 | 参数 |
|
||||
|---|---|---|
|
||||
| `docker_logs` | 获取容器日志 | `container`(必填), `tail`(可选,默认 100) |
|
||||
| `health` | 服务健康检查 | - |
|
||||
| `info` | 版本信息 | - |
|
||||
|
||||
Reference in New Issue
Block a user