内容
<p align="center">
<img src="assets/qore-logo.png" alt="Qore" width="320">
</p>
<h3 align="center">超轻量级、单二进制混合基础设施编排工具</h3>
<p align="center">终端原生 TUI,内置 MCP 服务器,支持 AI 驱动的运维操作</p>
---
## 目录
1. [概述](#overview)
2. [功能](#features)
3. [快速入门](#quick-start)
4. [安装](#installation)
5. [使用](#usage)
6. [MCP 服务器](#mcp-server)
7. [架构](#architecture)
8. [配置](#configuration)
9. [开发](#development)
10. [测试](#testing)
11. [构建](#building)
12. [路线图](#roadmap)
13. [贡献](#contributing)
14. [许可证](#license)
---
## 概述
Qore 将三种职责合并在一个进程中:
- **发现**:扫描本地 TCP 端口、Docker 容器(通过 Unix 套接字)、由 pm2 或 systemd 管理的守护进程、网络接口、系统资源和正在运行的服务。
- **安全保险箱**:使用 AES-256-GCM 加密和 scrypt 密钥派生存储连接凭证。主密码永不写入磁盘。一个 Unix 套接字桥将保险箱暴露给 MCP 服务器,而不向 AI 模型暴露凭证。
- **资源管理**:为 Redis、PostgreSQL、MySQL、MongoDB、S3 兼容存储、HTTP API、SSH 服务器和 Git 仓库提供统一的命令接口,使用原生线协议和 CLI 包装器,而不是供应商特定的工具。
界面围绕持久命令栏、键盘导航和深色高对比度配色方案设计。侧边栏驱动的发现屏幕提供基础设施的概览,并具有分段特定过滤和上下文操作。
---
## 功能
### 基础设施发现
- **自动发现**:在无需手动配置的情况下识别本地 TCP 端口上运行的服务。
- **Docker 集成**:通过 `/var/run/docker.sock` 直接控制容器。无需 `docker` CLI 依赖。
- **守护进程检测**:扫描由 pm2 和 systemd 管理的进程。
- **系统监控**:CPU、内存、交换、负载平均值、磁盘使用量和正常运行时间报告。
- **网络检查**:列出接口、路由表和防火墙规则。
- **进程管理**:按 CPU 使用率查看顶级进程,并具有终止能力。
- **服务控制**:列出和管理 systemd 服务(启动、停止、重启)。
- **容器操作**:启动、停止、重启、删除、检查、查看日志、执行命令和批量操作容器。
- **镜像管理**:列出和删除 Docker 镜像,支持清理。
### 安全和保险箱
- **凭证保险箱**:使用 scrypt 密钥派生和 AES-256-GCM 身份验证加密,以单个主密码加密存储连接凭证。
- **保险箱管理**:更改主密码和导入/导出加密连接包(QOREX1 格式)。
- **套接字桥**:Unix 套接字(`~/.qore/qore.sock`,chmod 0600)将凭证保险箱暴露给 MCP 服务器。凭证从不传递给 AI 模型。
### 连接管理
- **协议原生驱动**:Redis(RESP)、PostgreSQL(线协议)、MySQL(mysql2)、MongoDB(线协议)、S3 兼容 REST、HTTP API、SSH(ssh2)和 Git(CLI 包装器)。
- **多连接选项卡**:同时打开多个服务连接,并在它们之间使用 Ctrl+Tab 或 Ctrl+Arrow 键切换。所有选项卡保持挂载,状态保留。
- **多会话**:打开相同连接的多个会话(例如,两个 SSH 会话到同一服务器)。在任何服务屏幕内使用 `new` 命令。
- **SSH 工具包**:文件操作、服务控制、Docker 管理、SFTP 传输、进程和网络实用程序、安全审计、服务器快照、部署脚本和 Docker Compose 管理。
- **SSH 交互式 Shell**:直接从 Qore 打开一个完整的交互式 bash 终端,支持 Ctrl+C、Ctrl+D、选项卡补全和箭头键。
- **连接组**:将连接组织成命名组(例如,生产、暂存、开发),并一次打开组中的所有连接。
- **命令片段**:保存命令序列为可重用的片段,并执行它们以打开所有引用的连接。
- **多服务仪表板**:所有保险箱连接的综合状态视图,支持自动刷新和快速连接。
- **健康检查仪表板**:具有延迟火花图、正常运行时间百分比和可配置检查间隔的周期性健康监控。
### 开发人员体验
- **键盘优先 TUI**:输入命令,使用箭头键选择,按 Escape 导航返回。
- **命令历史**:使用向上/向下箭头导航先前的命令,当输入栏有文本时。
- **选项卡自动完成**:按 Tab 循环匹配命令。
- **收藏夹**:使用 `star <cmd>` 将常用命令标记为收藏夹,并使用 `favorites` 召回它们。
- **数据库工具**:将表数据导出为 CSV,运行 EXPLAIN 查询计划,并跨 PostgreSQL、MySQL 和 MongoDB 监控慢查询。
- **S3 操作**:上传、下载、删除对象和生成预签名 URL,支持 AWS SigV4。
- **Git 仓库管理**:完整的 git 操作,包括分支可视化、暂存、提交、合并、变基、挑选、责备、标记和远程管理,带有 ASCII 分支树仪表板。
- **自我更新**:运行 `qore update` 以下载最新版本,支持进度条、变更日志预览和自动备份。
- **多平台**:为 Linux(x64/arm64)、macOS(Apple Silicon)和 Windows(x64)提供预编译二进制文件。
- **CI/CD 管道**:通过 GitHub Actions 进行自动化测试、构建和发布,支持 4 平台二进制文件编译。
### MCP 服务器
- **35 种工具**:SSH、Docker、数据库、系统、发现和 HTTP 操作通过 JSON-RPC 2.0 公开。
- **5 种资源**:连接、探测快照、容器、镜像和系统信息。
- **4 种提示**:基础设施诊断、安全审计、容器健康和数据库健康检查。
- **零凭证暴露**:AI 模型通过连接名称与基础设施交互。保险箱桥在服务器端检索凭证。
---
## 快速入门
### 一键安装(Linux / macOS)
```bash
curl -fsSL https://github.com/Kodjaoglanian/qore/releases/latest/download/install.sh | bash
```
### Windows(PowerShell)
```powershell
irm https://github.com/Kodjaoglanian/qore/releases/latest/download/install.ps1 | iex
```
这将为您下载并安装最新预编译的二进制文件到 `~/.local/bin/qore`(或 Windows 上的 `%LOCALAPPDATA%\Qore`)。安装后,运行:
```bash
qore
```
### 更新
```bash
qore update
```
### 从源码
要求:
- [Bun](https://bun.sh) 运行时(版本 1.1 或更新)
- 如果使用容器管理,则需要 Docker 组 membership(`sudo usermod -aG docker $USER`)
```bash
git clone https://github.com/Kodjaoglanian/qore.git
cd qore
bun install
bun run dev
```
---
## 安装
### 一键安装(推荐)
```bash
curl -fsSL https://github.com/Kodjaoglanian/qore/releases/latest/download/install.sh | bash
```
### 从源码
```bash
git clone https://github.com/Kodjaoglanian/qore.git
cd qore
bun install
bun run build
./qore
```
### 本地数据目录
Qore 在首次运行时创建以下本地目录:
```text
~/.qore/
vault.enc # 加密凭证保险箱
vault.meta.json # 保险箱元数据
qore.sock # Unix 套接字,用于 MCP 保险箱桥(当解锁时)
storage/ # 本地模拟 S3 对象
metadata.db # SQLite 元数据,用于本地存储
favorites.json # 星标命令
snippets.json # 保存的命令片段/宏
health.json # 健康检查历史和配置
snapshots/ # SSH 服务器状态快照(JSON)
```
### Docker 权限
如果在发现屏幕中未显示 Docker 容器,请确保您的用户是 `docker` 组的成员:
```bash
sudo usermod -aG docker $USER
# 注销并重新登录以使更改生效
```
---
## 使用
启动应用程序,并在底部输入栏中输入命令。按 Enter 执行,按 Escape 返回,按 Control-C 退出。
### 全局命令
| 命令 | 描述 |
|---------|-------------|
| `discover` | 扫描端口、Docker 容器、守护进程、系统信息、网络、进程和服务 |
| `connections` | 管理已保存的服务连接 |
| `dashboard` | 多服务状态概览(需要解锁保险箱) |
| `health` | 健康检查,带有历史和火花图(需要解锁保险箱) |
| `vault` | 创建或解锁凭证保险箱 |
| `help` | 显示完整的命令参考 |
| `back` / `esc` | 返回上一屏幕 |
| `quit` / `exit` / `^c` | 从任何屏幕退出 Qore |
### 发现屏幕
发现屏幕使用侧边栏布局,分为 9 个部分。按 `1` 至 `9` 或 `Tab` 切换部分。使用 `Up` / `Down` 在部分内导航。
| 部分 | 描述 |
|---------|-------------|
| 概述 | 系统摘要、快速统计网格和磁盘使用情况 |
| 端口 | 打开的 TCP 端口,带有进程信息 |
| 容器 | Docker 容器,带有生命周期操作 |
| 镜像 | Docker 镜像,带有删除和清理 |
| 守护进程 | 由 pm2 和 systemd 管理的进程 |
| 系统 | 主机信息、CPU、内存、磁盘 |
| 网络 | 接口、路由和防火墙规则 |
| 进程 | 按 CPU 使用率显示的顶级进程,支持终止 |
| 服务 | systemd 服务,带有控制操作 |
| 命令 | 描述 |
|---------|-------------|
| `start` / `stop` / `restart` | 容器生命周期操作 |
| `rm` | 删除选定的容器或镜像 |
| `logs` | 查看容器或服务日志 |
| `inspect` | 检查容器详细信息 |
| `stats` | 容器资源统计 |
| `exec <cmd>` | 在容器内执行命令 |
| `prune` | 删除停止的容器 |
| `prune-images` | 删除未使用的镜像 |
| `kill` / `kill-9` | 终止选定的进程 |
| `svc-start` / `svc-stop` / `svc-restart` | 控制 systemd 服务 |
| `svc-logs` | 查看服务日志 |
| `batch-start` / `batch-stop` / `batch-restart` | 批量容器操作 |
| `filter <text>` | 按文本过滤当前部分 |
| `auto` | 切换自动刷新(5 秒间隔) |
| `refresh` | 重新运行发现扫描 |
### UX 命令(在服务屏幕上可用)
| 命令 | 描述 |
|---------|-------------|
| `star <command>` | 将命令添加到收藏夹 |
| `unstar <command>` | 从收藏夹中删除命令 |
| `favorites` | 列出所有星标命令 |
| `Up/Down` (空输入) | 导航命令列表 |
| `Up/Down` (有文本) | 导航命令历史 |
| `Tab` | 自动完成匹配的命令 |
| `Ctrl+Tab` / `Ctrl+Right` | 切换到下一个连接选项卡 |
| `Ctrl+Left` | 切换到上一个连接选项卡 |
| `new` | 打开当前连接的重复会话 |
### 连接屏幕
| 命令 | 描述 |
|---------|-------------|
| `add` | 添加新连接(redis、postgres、mysql、mongo、s3、http、ssh、git) |
| `connect <n>` | 连接到保存的连接编号 n |
| `test <n>` | 测试连接编号 n |
| `rm <n>` | 删除连接编号 n |
| `changepw` | 更改保险箱主密码 |
| `export` | 以加密包形式导出连接 |
| `import` | 从加密包导入连接 |
| `groups` | 查看连接组 |
| `group <name>` | 创建新组 |
| `group-add <name>` | 将选定连接添加到组 |
| `group-rm <name>` | 删除组 |
| `group-open <name>` | 打开组中的所有连接 |
| `snippet <name>` | 创建命令片段 |
| `snippets` | 列出已保存的片段 |
| `run <name>` | 执行已保存的片段(打开所有引用的连接) |
| `snippet-rm <name>` | 删除片段 |
### 仪表板屏幕
| 命令 | 描述 |
|---------|-------------|
| `connect <n>` | 连接到连接编号 n |
| `refresh` | 重新检查所有连接 |
| `auto` | 切换自动刷新(10 秒间隔) |
| `back` / `esc` | 返回欢迎屏幕 |
### 健康检查屏幕
| 命令 | 描述 |
|---------|-------------|
| `refresh` / `check` | 对所有连接运行健康检查 |
| `monitor` | 切换连续监控 |
| `interval <s>` | 设置检查间隔(5-3600 秒) |
| `clear` | 清除所有健康历史 |
| `connect <n>` | 连接到连接编号 n |
| `back` / `esc` | 返回欢迎屏幕 |
### 服务屏幕(常见命令)
| 命令 | 描述 |
|---------|-------------|
| `info` | 显示服务信息 |
| `logs [service]` | 查看服务日志(SSH:journalctl,Redis:SLOWLOG,Postgres:pg_stat_activity,MySQL:processlist,Mongo:getLog,HTTP:/logs 端点) |
| `logs docker <container>` | 查看 Docker 容器日志(仅限 SSH) |
| `refresh` | 重新连接并重新加载数据 |
| `back` / `esc` | 返回连接屏幕 |
### 服务屏幕(数据库命令)
| 命令 | 描述 |
|---------|-------------|
| `tables <db>` | 列出表或集合 |
| `desc <db> <table>` | 描述表结构 |
| `count <db> <table>` | 计数行或文档 |
| `sample <db> <t> [n]` | 显示样本行(默认 10) |
| `size <db>` | 显示表大小 |
| `indexes <db> <table>` | 列出索引 |
| `views <db>` | 列出视图 |
| `funcs <db>` | 列出函数 |
| `conns` | 显示活动连接 |
| `queries` | 显示正在运行的查询 |
| `query <db> <sql>` | 运行自定义查询 |
| `export <db> <table>` | 将表数据导出到 CSV 文件 |
| `explain <db> <sql>` | 运行 EXPLAIN 查询计划分析 |
| `slow-queries` | 显示慢查询(pg_stat_statements、mysql.slow_log、MongoDB profiler) |
### Redis 命令
| 命令 | 描述 |
|---------|-------------|
| `get <key>` | 获取键的值 |
| `set <k> <v>` | 将键设置为值 |
| `del <key>` | 删除键 |
| `keys <pattern>` | 列出匹配模式的键 |
| `flushdb` | 清空当前数据库 |
| `info` | 显示 Redis 服务器信息 |
| `logs` | 显示 SLOWLOG 和 INFO 统计信息 |
### S3 命令
| 命令 | 描述 |
|---------|-------------|
| `ls <bucket>` | 列出桶中的对象 |
| `mkbucket <name>` | 创建新桶 |
| `rmbucket <name>` | 删除桶 |
| `upload <local> <bucket/key>` | 将本地文件上传到 S3 |
| `download <bucket/key> <local>` | 将 S3 对象下载到本地文件 |
| `rm <bucket> <key>` | 从桶中删除对象 |
| `presign <bucket> <key>` | 生成预签名 URL(1 小时过期) |
### HTTP API 命令
| 命令 | 描述 |
|---------|-------------|
| `get <path>` | 发送 GET 请求 |
| `post <path> <body>` | 发送带有 JSON 正文的 POST 请求 |
| `put <path> <body>` | 发送带有 JSON 正文的 PUT 请求 |
| `patch <path> <body>` | 发送带有 JSON 正文的 PATCH 请求 |
| `delete <path>` | 发送 DELETE 请求 |
| `logs` | 探测 /logs、/health、/status 端点 |
### SSH 命令
| 命令 | 描述 |
|---------|-------------|
| `shell` | 打开 SSH 上的交互式 bash 终端(Ctrl+D 退出) |
| `exec <command>` | 通过 SSH 执行 shell 命令(交互式 PTY) |
| `sysinfo` | 显示系统信息(uname、hostname、uptime、disk、memory) |
| `disk` | 显示磁盘使用情况 (`df -h`) |
| `mem` | 显示内存使用情况 (`free -h`) |
| `procs` | 列出正在运行的进程 (`ps aux`) |
| `net` | 显示监听端口 (`ss -tlnp`) |
| `ports` | 显示监听端口和进程信息(前 50 个) |
| `firewall [status\|allow\|deny\|enable\|disable]` | UFW 防火墙管理 |
| `top` | 显示 CPU 使用率最高的进程 |
| `netstat` | 显示活跃的网络连接 |
| `tail <file> [-f]` | 尾部文件(可选实时跟踪) |
| `edit <file>` | 在 nano/vim 中打开文件,通过 PTY |
| `security-audit` | 运行 8 点安全检查清单(SSH 配置、防火墙、fail2ban、更新、端口、登录、日志) |
| `snapshot` | 将服务器状态保存到本地 JSON 文件(磁盘、内存、进程、服务、端口、正常运行时间、内核) |
| `diff <snap1> <snap2>` | 比较两个快照文件逐行 |
| `deploy <script>` | 通过 PTY 运行部署脚本,显示实时输出 |
| `git-status` | 查找服务器上的 git 仓库并显示状态和最近的提交 |
| `compose <up\|down\|ps\|logs\|restart\|pull> [service]` | 管理 Docker Compose |
| `ls [path]` | 列出目录内容 (`ls -la`) |
| `cat <file>` | 查看文件内容(前 500 行) |
| `find <pattern> [path]` | 按名称搜索文件 |
| `du [path]` | 按子目录显示磁盘使用情况(排序) |
| `services` | 列出正在运行的 systemd 服务 |
| `svc <action> <name>` | 启动/停止/重启/状态/启用/禁用服务 |
| `docker ps` | 列出所有 Docker 容器 |
| `docker images` | 列出 Docker 镜像 |
| `docker stats` | 显示 Docker 容器资源统计 |
| `docker logs [-f] <ctr>` | 查看或跟踪容器日志 |
| `docker <start\|stop\|restart\|rm> <ctr>` | 管理 Docker 容器 |
| `users` | 显示当前登录的用户 |
| `cron` | 列出 crontab 条目 |
| `env` | 列出环境变量 |
| `pkgs [search]` | 列出或搜索已安装的软件包(dpkg/rpm/pacman) |
| `kill <pid> [signal]` | 向进程发送信号 |
| `ping <host>` | Ping 主机(4 个数据包) |
| `upload <local> <remote>` | 通过 SFTP 上传文件 |
| `download <remote> <local>` | 通过 SFTP 下载文件 |
| `logs [service]` | 查看系统日志(journalctl 或 syslog) |
| `logs docker <container>` | 查看 Docker 容器日志 |
| `reboot yes` | 重启远程机器(需要明确确认) |
| `shutdown yes` | 关闭远程机器(需要明确确认) |
### Git 命令
| 命令 | 描述 |
|---------|-------------|
| `status` | 显示暂存、未暂存和未跟踪的文件 |
| `diff [--staged]` | 显示工作树或暂存的差异 |
| `diff <b1> <b2>` | 显示两个分支之间的差异 |
| `log` | 显示提交图,包含ASCII分支树 |
| `branches` | 列出所有分支,包含领先/落后计数 |
| `checkout <branch>` | 切换到一个分支 |
| `branch <name>` | 创建并切换到一个新分支 |
| `branch -d <name>` | 删除一个分支 |
| `stage [files...]` | 暂存特定文件或所有更改 |
| `unstage [files...]` | 取消暂存特定文件或所有更改 |
| `commit <message>` | 创建一个提交 |
| `amend [message]` | 修改最后一次提交 |
| `merge <branch>` | 将一个分支合并到当前分支 |
| `rebase <branch>` | 将当前分支变基到另一个分支 |
| `fetch [remote]` | 从远程仓库获取 |
| `pull [remote] [branch]` | 从远程仓库拉取 |
| `push [remote] [branch]` | 推送到远程仓库 |
| `cherry-pick <hash>` | 选择一个提交 |
| `revert <hash>` | 撤销一个提交 |
| `blame <file>` | 显示文件的责备信息 |
| `tags` | 列出所有标签 |
| `tag <name> [message]` | 创建一个新标签 |
| `remotes` | 列出所有远程仓库 |
| `remote-add <name> <url>` | 添加一个新的远程仓库 |
| `exec <git args...>` | 运行任意的Git命令 |
---
## MCP 服务器
Qore 包含一个内置的 [模型上下文协议](https://modelcontextprotocol.io) 服务器,该服务器向 AI 模型(如 Claude、GPT、Cursor、Windsurf 等)公开基础设施管理功能,而无需公开凭证。
### 架构
```text
+-------------+ JSON-RPC +--------------+ Unix Socket +--------------+
| AI 模型 | <--------------> | qore mcp | <-----------------> | qore TUI |
| (Claude/GPT)| (stdio) | (子进程) | ~/.qore/qore.sock | (保险箱) |
+-------------+ +--------------+ +--------------+
```
- **TUI** 保存在内存中加密保险箱,当解锁时打开一个 Unix 套接字 `~/.qore/qore.sock`(chmod 0600)。
- **MCP 服务器**(`qore mcp`)作为 AI 客户端的子进程运行,按需连接到套接字,并检索连接配置以执行操作。
- **AI 模型** 永远不会看到凭证。它只使用连接名称,并接收操作结果。
### 快速入门
1. 启动 qore TUI 并解锁您的保险箱:
```bash
qore
```
2. 配置您的 AI 客户端:
```json
{
"mcpServers": {
"qore": {
"command": "qore",
"args": ["mcp"]
}
}
}
```
3. AI 模型现在可以发现端口、管理 Docker 容器、执行 SSH 命令、查询数据库等。
### 安全模型
- 凭证永远不会暴露给 AI 模型。
- MCP 工具只接受连接名称,从不返回机密。
- Unix 套接字具有文件系统权限(0600)。只有同一用户可以连接。
- 没有凭证写入磁盘或环境变量。
- 套接字文件在保险箱锁定、TUI 退出和进程信号(SIGTERM/SIGINT)时清理。
- 如果保险箱锁定,依赖于连接的工具返回:`"保险箱锁定 - 请先在 qore TUI 中解锁"`。
### 可用功能
- **35 种工具**:SSH(6)、Docker(11)、数据库(5)、系统(7)、发现(7)、HTTP(4)
- **5 种资源**:连接、探测快照、容器、镜像、系统信息
- **4 种提示**:diagnose_infra、security_audit、container_health、db_health_check
### CLI 帮助
```bash
qore mcp --help
```
### 环境变量
| 变量 | 描述 | 默认值 |
|----------|-------------|---------|
| `QORE_SOCKET_PATH` | 覆盖保险箱套接字路径 | `~/.qore/qore.sock` |
| `QORE_LOG_LEVEL` | 日志级别:debug、info、warn、error | `info` |
### 配置示例
**Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS, `~/.config/claude/claude_desktop_config.json` on Linux):
```json
{
"mcpServers": {
"qore": {
"command": "qore",
"args": ["mcp"]
}
}
}
```
**Cursor** (`.cursor/mcp.json` in your project):
```json
{
"mcp.servers": {
"qore": {
"command": "qore",
"args": ["mcp"]
}
}
}
```
**Windsurf** (`~/.codeium/windsurf/mcp_config.json`):
```json
{
"mcpServers": {
"qore": {
"command": "qore",
"args": ["mcp"]
}
}
}
```
查看 [docs/mcp.md](docs/mcp.md) 以获取完整的文档,包括所有工具、资源和提示。
---
## 架构
```text
src/
index.tsx # 入口点
core/
types.ts # 共享接口
orchestrator.ts # 中央发现引擎
probe/
network.ts # TCP 端口扫描器
docker.ts # Docker Unix 套接字客户端
daemon.ts # pm2/systemd 扫描器
system.ts # 系统信息(CPU、内存、磁盘)
processes.ts # 进程列表和终止
services.ts # systemd 服务控制
network-info.ts # 接口、路由、防火墙
providers/
localS3.ts # 本地模拟 S3 提供者
awsS3.ts # AWS S3 提供者
messaging.ts # 内存 Pub/Sub
vault/
crypto.ts # scrypt + AES-256-GCM
vault.ts # 加密保险箱文件管理器
types.ts # 连接类型和标签
socket-bridge.ts # Unix 套接字服务器,用于 MCP 保险箱访问
connections/
manager.ts # 连接管理器工厂 + QuickStatus
redis.ts # Redis RESP 驱动器
s3.ts # S3 兼容 REST 驱动器
postgres.ts # PostgreSQL 线协议驱动器
mysql.ts # MySQL 驱动器(mysql2)
mongo.ts # MongoDB 线协议驱动器
http.ts # HTTP API 管理器(通用 REST)
ssh.ts # SSH 远程管理器(ssh2)
snippets.ts # 命令片段持久性
health.ts # 健康检查历史和火花图
mcp/
index.ts # MCP 服务器入口点
server.ts # JSON-RPC 2.0 服务器(stdio 传输)
protocol.ts # JSON-RPC 类型和错误代码
registry.ts # 工具注册和调度
vault-client.ts # Unix 套接字客户端,用于保险箱访问
resources.ts # MCP 资源提供者
prompts.ts # MCP 提示模板
config.ts # MCP 配置和环境变量帮助程序
tools/
ssh.ts # SSH 工具(6)
docker.ts # Docker 工具(11)
database.ts # 数据库工具(5)
system.ts # 系统工具(7)
discover.ts # 发现工具(7)
http.ts # HTTP 工具(4)
cli/
update.ts # 自我更新和 CLI 参数处理
ui/
App.tsx # 根 TUI 组件
theme.ts # 颜色调色板
WelcomeScreen.tsx # 初始屏幕
DiscoverScreen.tsx # 发现结果(侧边栏布局)
ConnectionsScreen.tsx# 连接管理(组、片段)
DashboardScreen.tsx # 多服务状态仪表盘
HealthScreen.tsx # 健康检查仪表盘,包含火花图
ServiceScreen.tsx # 服务特定控制台
VaultScreen.tsx # 保险箱解锁/创建
HelpScreen.tsx # 命令参考
StorageScreen.tsx # 存储浏览器
ProvidersScreen.tsx # 提供者切换器
components/ # 可重用 UI 原语
hooks/ # 终端大小和输入钩子
tests/
core.test.ts # 核心加密和主题测试
```
### 设计原则
- **Bun 原生**:优先使用内置 Bun API,例如 `bun:sqlite`、`Bun.serve` 和 `Bun.write`,而不是更重的 Node.js 替代品。
- **协议级别**:通过其原生线协议连接到服务,而不是包装 CLI 工具。
- **单个二进制文件**:应用程序使用 `bun build --compile` 编译为一个可执行文件。
- **零配置发现**:第一次运行可以扫描环境,而无需手动配置文件。
- **凭证隔离**:保险箱桥确保凭证永远不会离开进程边界。MCP 服务器接收连接名称,而不是机密。
---
## 配置
### 环境变量
| 变量 | 描述 | 默认值 |
|----------|-------------|---------|
| `HOME` | 用于定位 `~/.qore` 和 `~/.aws/credentials` | 系统主目录 |
| `QORE_SOCKET_PATH` | 覆盖 MCP 保险箱套接字路径 | `~/.qore/qore.sock` |
| `QORE_LOG_LEVEL` | MCP 服务器日志级别 | `info` |
### AWS 凭证
对于云 S3 模式,请将凭证放在标准位置:
```text
~/.aws/credentials
```
除非提供者扩展以支持命名配置文件,否则使用 `[default]` 配置文件。
### 本地存储
- 对象:`~/.qore/storage/`
- 元数据:`~/.qore/metadata.db`(SQLite via bun:sqlite)
---
## 开发
```bash
# 运行带有热重载的 TUI
bun run dev
# 运行 TypeScript 编译器在检查模式
bun run tsc
# 运行测试套件
bun test
```
### 项目脚本
| 脚本 | 描述 |
|--------|-------------|
| `dev` | 在开发模式下运行 TUI |
| `start` | 运行 TUI(`dev` 的别名) |
| `build` | 预构建补丁并编译为单个二进制文件 |
| `tsc` | TypeScript 类型检查(无发出) |
| `test` | 运行测试套件 |
| `pretag` | 在标记前运行 tsc + 测试 |
| `release:patch` | 验证、增加补丁版本、标记并推送 |
| `release:minor` | 验证、增加小版本、标记并推送 |
---
## 测试
测试使用 `bun:test` 编写,涵盖核心加密和保险箱生命周期:
```bash
bun test
```
当前测试区域:
- 主题颜色定义
- scrypt 密钥派生确定性
- AES-256-GCM 加密和解密往返
- 使用错误密钥解密失败
- 保险箱初始化、解锁和错误密码处理
---
## 构建
```bash
bun run build
```
这会生成项目根目录中的单个 `qore` 二进制文件。该二进制文件可以移动到 `PATH` 中的任何目录。
### CI/CD 管道
项目使用 3 个 GitHub Actions 工作流:
- **CI** (`ci.yml`):在每次推送/PR 到 `main` 时运行 `tsc` + 测试 + 构建烟雾测试。
- **构建** (`build.yml`):可重用的工作流,编译 4 个平台的二进制文件,包含缓存和烟雾测试。
- **发布** (`release.yml`):由标签推送 `v*.*.*` 触发。构建所有平台,验证工件,自动生成变更日志,并创建 GitHub 发布。
Bun 版本固定为 `1.2.0` 以实现可复制的构建。
### 发布
```bash
# 补丁发布(自动化:tsc + 测试 + 增量 + 标记 + 推送)
bun run release:patch
# 小版本发布
bun run release:minor
```
CI 管道处理其余部分:构建、变更日志生成和 GitHub 发布创建。
---
## 路线图
### 已实现
- 核心网络探测(TCP 端口扫描器)
- Docker Unix 套接字集成
- 终端原生欢迎屏幕
- 安全凭证保险箱(AES-256-GCM + scrypt)
- Redis、S3 兼容存储、PostgreSQL、MySQL、MongoDB、HTTP API、SSH 和 Git 仓库的连接管理器
- 连接和服务屏幕
- UI 中的保险箱密码更改流程
- 加密连接导入和导出(QOREX1 包格式)
- 多平台构建(Linux x64/arm64、macOS arm64、Windows x64)
- 通过 `qore update` 自我更新
- 服务日志聚合(SSH、Redis、Postgres、MySQL、Mongo、HTTP)
- SSH 工具包:文件操作、服务控制、Docker 管理、SFTP 传输、进程和网络实用程序
- SSH 管理:端口、防火墙、top、netstat、tail、edit、docker logs -f
- UX 改进:命令历史、Tab 自动补全、收藏、多个连接标签
- 数据库功能:导出到 CSV、EXPLAIN 查询计划、慢查询监控
- S3 操作:上传、下载、删除对象、预签名 URL(AWS SigV4)
- 安全和基础设施:安全审计、服务器快照、快照差异
- DevOps:部署脚本、git-status、Docker Compose 管理
- 多连接:所有标签同时渲染、切换时状态保留
- 多连接:Ctrl+Tab / Ctrl+Arrows 切换、关闭命令断开连接
- 多会话:相同连接的多个会话(唯一 sessionId、`new` 命令)
- CI/CD:具有缓存、烟雾测试、固定 Bun 和自动化发布的 3 工作流管道
- 发现屏幕:侧边栏布局,包含 9 个部分、过滤、自动刷新、批量操作
- 发现屏幕:进程管理、服务控制、容器统计、Docker exec
- MCP 服务器:35 种工具、5 种资源、4 种提示,通过 JSON-RPC 2.0(stdio)
- MCP 保险箱桥:Unix 套接字,权限为 0600、凭证隔离
- MCP 文档:docs/mcp.md、Claude Desktop、Cursor、Windsurf 的配置文件示例
- Git 仓库管理:分支树可视化、暂存、提交、合并、变基、选择、责备、标记、远程管理
- SSH 交互式 Shell:完整的 bash 终端,包含 Ctrl+D 退出、Tab 补全、箭头键
- 连接组:组织连接、批量打开、列表视图中的组标签
- 命令片段:保存和重放命令序列,跨连接
- 多服务仪表盘:整合状态概览,自动刷新
- 健康检查仪表盘:定期监控,包含火花图、正常運行時間百分比、可配置间隔
### 计划中
- 本地模拟 S3 和 Pub/Sub 提供者
- 多架构 CI 矩阵,用于 ARM 原生构建
- 扩展测试覆盖率(连接管理器、SSH 命令、UI 组件)
- CI 管道中的 linting(eslint/biome)
- MCP 服务器的 WebSocket 传输
- MCP 采样支持,用于 AI 驱动的补救
---
## 贡献
请阅读 [CONTRIBUTING.md](CONTRIBUTING.md) 以获取有关行为准则、开发工作流和如何提交拉取请求的详细信息。
---
## 许可证
该项目在 MIT 许可证下发布。请参阅 [LICENSE](LICENSE) 以获取完整文本。
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器