HaoApi MCP Server
MindHub
本地 LLM API 网关 · 多协议接入 · 私有知识库 RAG · MCP 工具服务
MindHub 是一款本地运行的 LLM API 网关桌面软件。它将多个上游模型供应商(OpenAI、Claude、DeepSeek、Gemini……)统一为 OpenAI 兼容协议,配合 Codex、Claude Code、Gemini CLI、OpenClaw 等 AI 编程工具使用;内置基于 tree-sitter 代码符号感知的 RAG 引擎,让你在统一调用多模型的同时积累私有知识。
📑 目录
🧭 工作原理
MindHub 作为本地网关,在下游 AI 应用和上游模型供应商之间做协议翻译、负载均衡、安全审计和日志记录。同时内置知识库引擎和 MCP Server,让 AI Agent 能直接检索私有知识。
请求转发流程
graph TD
subgraph Downstream[下游 AI 应用]
A1[WaLiCode]
A2[Claude Code]
A3[Codex CLI]
A4[Gemini CLI]
A5[OpenClaw]
A6[ChatBox / NextChat]
end
Downstream -->|"OpenAI / Anthropic / Responses 协议<br/>Authorization: Bearer sk-mindhub-*"| Gateway
subgraph Gateway[MindHub 本地网关]
B[协议转换层<br/>OpenAI Chat · Responses · Anthropic<br/>双向转换]
C[安全审计引擎<br/>风险扫描 · 脱敏/阻断 · 规则引擎]
D[渠道调度器<br/>优先级+权重 · 故障切换 · 模型映射]
E[适配器层<br/>OpenAI · Claude · DeepSeek<br/>Gemini · Custom]
F[审计日志记录<br/>请求/响应体 · Token 统计 · Trace ID]
B --> C --> D --> E
C --> F
subgraph KBService[知识库 & MCP 服务]
G1[文档解析<br/>Markdown / Code / PDF]
G2[智能分块器<br/>滑动窗口 · 符号感知]
G3[向量化<br/>复用渠道 Embedding]
G4[HNSW 索引<br/>向量检索 + FTS5 混合]
G5[RAG 引擎<br/>混合检索 → 重排 → 生成回答]
G6[MCP Server<br/>Streamable HTTP + SSE<br/>13 个工具]
G1 --> G2 --> G3 --> G4
G4 --> G5
G4 -.-> G6
end
end
E -->|HTTPS| Upstream
subgraph Upstream[上游模型供应商]
U1[OpenAI]
U2[Claude]
U3[DeepSeek]
U4[Gemini]
U5[通义 · 智谱 · Moonshot · 豆包 · Ollama]
end知识库 RAG 流程
flowchart TD
A[用户上传文档] --> B[文档解析器<br/>Markdown / Code / PDF / JSON / YAML]
B --> C[tree-sitter 代码符号提取<br/>函数 / 类 / 结构体 / 接口]
C --> D[智能分块器<br/>滑动窗口 + 重叠分块 · 符号感知]
D --> E[向量化引擎<br/>复用 MindHub 渠道调度<br/>text-embedding]
E --> F
subgraph F[存储 + 索引]
F1[(SQLite<br/>chunks + FTS5)]
F2[(HNSW 向量索引<br/>文件存储)]
end
F --> G[检索阶段<br/>向量检索 HNSW + FTS5 全文检索<br/>→ 加权混合排序 Hybrid]
G --> H[RAG 生成阶段<br/>组装 Top-K 片段 + 对话历史<br/>→ 通过网关转发至 LLM<br/>→ 生成回答 + 来源引用]知识库文档与索引状态均为
ready后才会参与检索。RAG 回答是基于命中文本生成的结果,不是事实保证;请结合返回的来源引用进行核验。
MCP 工具服务
MindHub 内置 MCP (Model Context Protocol) Server,通过 Streamable HTTP + SSE 端点对外暴露知识库工具,任何支持 MCP 的 AI Agent 均可接入:
flowchart LR
Agent[AI Agent<br/>Claude / OpenClaw / ...] -->|"POST /mcp<br/>JSON-RPC"| MCP
MCP -->|"SSE Stream"| Agent
subgraph MCP[MCP Server — MindHub]
T1[search_knowledge_base<br/>语义搜索]
T2[ask_knowledge_base<br/>RAG 问答]
T3[read_document<br/>读取文档]
T4[list_knowledge_bases<br/>列出知识库]
T5[get_knowledge_base_stats<br/>知识库统计]
T6[create / update / delete<br/>知识库 CRUD]
T7[upload_document<br/>上传文档]
T8[list_documents<br/>文档列表]
T9[build_index<br/>构建索引]
T10[import_source<br/>多源导入]
T11[delete_document<br/>删除文档]
end
MCP --> KB[(知识库<br/>SQLite + HNSW)]**安全边界:**MCP 当前没有独立认证层,且包含创建、导入、删除与重建索引等写工具。请仅让受信任的本机 Agent 连接,并保持网关监听在
127.0.0.1;不要将/mcp暴露到局域网、公网、反向代理或不可信插件。mcp_enabled只控制知识库可见性,不是身份认证。
🎯 核心功能
🔌 多渠道管理
支持 10 种渠道类型:OpenAI、DeepSeek、Claude、Gemini、智谱、通义、Moonshot、豆包、Ollama 及自定义渠道
优先级 + 权重的负载均衡策略,自动故障切换
模型映射(渠道级别 model mapping),下游模型名自动映射到上游实际模型
渠道连通性测试,实时显示延迟与错误信息
渠道统计:调用次数、Token 消耗、成功率、平均延迟
🔑 密钥管理
为下游应用生成
sk-mindhub-*格式的本地访问密钥支持配额限制与启用/禁用
每个密钥展示调用次数、成功率、Token 消耗、平均延迟
📊 仪表盘
6 项核心指标一目了然:今日请求、今日 Token、累计请求、累计 Token、活跃渠道、平均延迟
服务可用率徽章,颜色分级(绿/黄/红)实时反映健康度
运维建议根据当前数据动态生成(延迟超阈值建议排查、渠道不足建议启用等)
📝 审计日志
记录每次 API 调用的审计信息:经脱敏处理的请求/响应、模型参数、Token 消耗、状态码与 Trace ID
支持按关键词、密钥、渠道、模型、日期范围、Trace ID 搜索筛选
请求/响应 JSON 标签页切换,Trace ID 默认折叠可展开
日志编号自增,方便定位与引用
日志清理:按日期删除 / 一键清空
🛡️ 安全审计中心
风险检测引擎:自动扫描请求中的敏感信息泄露(API Key、私钥、JWT、Cookie、Bearer Token)、敏感文件路径(
~/.ssh、.env、云凭据)、Unicode 隐写字符(零宽字符、方向控制字符)、可疑工具调用(curl外联、管道上传)、网络风险(公网 IP 探测、Webhook/隧道域名)、追踪像素与风控指纹风险等级:clean / info / low / medium / high / critical,综合评分 0–100
策略模式:只审计 / 警告 / 脱敏 / 阻断,默认只审计不影响请求
规则管理:内置 25+ 条风险规则 + 自定义黑白名单(域名/工具/路径/关键词)
📚 知识库引擎
文档解析:Markdown、代码文件(TS/JS/Python/Rust/Go/Java 等 20+ 语言)、PDF、JSON/YAML/CSV
代码符号感知:基于 tree-sitter 提取函数、类、结构体等符号信息,分块时保留语义边界
智能分块:滑动窗口 + 重叠分块,符号感知避免截断函数体
向量化:复用 MindHub 渠道调度获取 Embedding;知识库的
embedding_model必须是某个启用渠道实际支持的 Embeddings 模型HNSW 向量索引:轻量级分层导航小世界图,O(log n) 检索复杂度,适合桌面级数据量(≤100K 切片)
FTS5 混合检索:向量语义检索 + SQLite FTS5 全文检索加权融合,支持三种模式(向量 / 关键词 / 混合)
RAG 问答:检索 Top-K 片段 + 对话历史 → 网关转发至 LLM → 生成回答 + 来源引用
多源导入:Git 仓库克隆导入、URL 批量导入、本地目录扫描导入;仅导入可信公开 URL 与仓库,私有 Git Token 应使用最小权限、短期令牌
格式边界:支持 Markdown、PDF、文本、结构化文件和常见源码;
.docx、.xlsx等二进制 Office 格式暂不支持解析会话管理:按知识库维度的对话历史记录与清除
🔗 MCP Server
内置 Model Context Protocol Server,通过
/mcp端点对外提供 13 个知识库工具支持 Streamable HTTP(POST JSON-RPC)和 SSE(GET 升级)两种传输模式
兼容 Claude Desktop、OpenClaw 等支持 MCP 协议的 AI Agent
工具列表:搜索、RAG 问答、读取文档、知识库 CRUD、文档上传/删除、索引管理、多源导入
推荐流程:先调用
list_knowledge_bases,再使用明确的kb_id调用ask_knowledge_base;只有需要原始片段或自行检索时才调用search_knowledge_base未指定
kb_id时,搜索与问答会跨全部 MCP 已暴露的知识库执行;敏感知识库应关闭 MCP 暴露
⚙️ 设置中心
Tab 切换式布局:安全审计 / 服务配置 / 通用设置 / 界面设置 / 重试策略
深色 / 浅色 / 跟随系统主题切换
最小化到托盘、关闭到托盘、开机自启
失败自动重试策略配置(默认 2 次)
🔧 应用配置
一键将 MindHub 网关地址和密钥写入 8 款 AI 编程工具的配置文件: Claude Code、Codex CLI、Gemini CLI、Claude Desktop、OpenCode、OpenClaw、Hermes Agent、WaLiCode
自动检测已安装应用,支持配置预览、写入、清除、打开配置目录
📦 导入导出
渠道配置批量导出为 JSON 备份
支持导入 WaLiCode 备份文件恢复渠道配置
📡 流式响应
完整 SSE 流式转发,兼容 ChatBox / NextChat / OpenAI SDK 等下游客户端
流式使用量解析(累积 input/output tokens)
🔗 多协议接入
MindHub 在网关层做协议翻译,入口多协议,出口统一为 OpenAI Chat Completions,上游渠道无感知。
协议 | 端点 | 认证方式 | 说明 |
OpenAI Chat Completions |
|
| 标准兼容协议,支持流式 |
OpenAI Responses |
|
| Responses API 双向转换 |
Anthropic Messages |
|
| Anthropic 协议,自动头转换 |
OpenAI Embeddings |
|
| 向量嵌入,知识库复用 |
模型列表 |
|
| 聚合所有启用渠道的模型 |
健康检查 |
| 无 | 服务存活探针 |
MCP |
| 无独立认证 | MCP Streamable HTTP + SSE;仅限受信任本机 Agent |
知识库管理 | 桌面端 Tauri IPC | — | 创建、导入、检索和问答不通过网关开放 HTTP 路由 |
接入示例(以 OpenAI 协议为例):
curl http://127.0.0.1:8777/v1/chat/completions \
-H "Authorization: Bearer sk-mindhub-xxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"messages": [{"role": "user", "content": "Hello!"}]
}'接入示例(以 Anthropic 协议为例):
curl http://127.0.0.1:8777/v1/messages \
-H "x-api-key: sk-mindhub-xxxx" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello!"}]
}'💡 在「接入示例」页面可查看 cURL / Python / Node.js / TypeScript / Rust / Java 共 5 平台 × 3 协议 = 15 套代码示例。
🏗️ 技术栈
层 | 技术 | 版本 |
前端 | React + TypeScript + Vite + Tailwind CSS + Zustand | 19 / 5.x / 7 / 4 / 5 |
后端 | Rust + Tauri 2 + Axum + SQLite (sqlx) + Reqwest | Edition 2021 |
UI | shadcn/ui 风格 + Lucide Icons + React Router 7 | — |
知识库 | tree-sitter (7 语言) + HNSW + FTS5 + bincode | — |
打包 | Tauri bundler(.dmg / .msi / .deb / .AppImage) | 2.x |
📦 安装使用
1. 下载安装包或从源码启动
从 GitHub Releases 或夸克网盘下载对应平台安装包:
GitHub: Releases
平台 | 格式 | 架构 |
macOS |
| ARM64 (Apple Silicon) |
Windows |
| x64 |
Linux |
| x64 |
源码开发运行:
pnpm install
pnpm tauri dev应用会启动本地 HTTP 网关。默认地址为 http://127.0.0.1:8777;可在「设置 → 服务配置」修改监听地址和端口,保存后点击「重启服务」生效。端口设为 0 时由系统分配可用端口,应以应用内服务状态显示的实际地址为准。
**请保持
127.0.0.1。**网关的 MCP 端点没有独立认证,且包含写工具;不要将监听地址设为0.0.0.0、局域网地址或通过反向代理暴露到公网。
2. 配置渠道并测试
打开「渠道管理 → 新建渠道」,填写渠道名称、上游 Base URL、供应商 API Key 和模型列表;按需配置模型映射、优先级和权重。保存后先执行渠道测试,再将测试通过的渠道用于正式调用。
若需要知识库功能,至少准备:
一个实际支持 Embeddings 的启用渠道和模型,用于切片向量化;
一个实际支持聊天生成的启用渠道和模型,用于 RAG 问答。
3. 创建下游 API Key
打开「API 密钥 → 新建密钥」,填写名称和配额,创建 sk-mindhub-* 格式的本地访问密钥。下游应用只保存这个本地密钥,不应保存上游供应商密钥。
4. 下游接入
在 ChatBox、NextChat、OpenAI SDK、WaLiCode 等客户端中配置:
Base URL:
http://127.0.0.1:8777/v1(若已修改端口,请使用实际端口)API Key:创建的
sk-mindhub-...密钥
可先验证服务状态:
curl http://127.0.0.1:8777/health5. 应用配置(可选)
在「应用配置」页面选择已安装的 AI 编程工具,一键写入网关地址和密钥,无需手动编辑配置文件。
🚀 实际投入使用
1. 日常网关使用
配置并测试至少一个启用渠道;
创建一个本地 API Key;
将下游客户端指向本地
/v1地址;在「审计日志」检查请求、模型、渠道、Token 和失败原因;
需要切换端口、监听地址或安全策略时,在「设置」保存后重启服务。
2. 私有知识库与 RAG
打开「服务 → 知识库」,新建知识库;
在知识库设置中确认
embedding_model与启用渠道的 Embeddings 模型一致,按需调整切片大小、重叠和文件过滤;通过「文档」上传文件,或通过「来源」导入可信 Git 仓库、公开 URL 或本地目录;
等待文档和索引状态均变为
ready;失败时先修复渠道、模型或源文件,再重新处理;使用「搜索」核验原始命中片段,再在「问答」中进行 RAG 对话并检查来源引用。
导入 URL 时只使用明确、可信的公开地址;不要输入内网地址、云元数据地址或不可信跳转链接。导入私有 Git 仓库时使用最小权限、短期 Token。
只有需要外部 Agent 调用时才开启知识库的 MCP 暴露。默认端点为 http://127.0.0.1:8777/mcp;先调用 list_knowledge_bases,再带明确 kb_id 调用 ask_knowledge_base。不要把包含敏感资料的知识库暴露给 MCP。
3. Exchange 候选审核与经验提炼(受限能力)
当知识库已存在 API Key ↔ 知识库绑定 并启用捕获时,网关会从完整、非高风险的 Exchange 生成候选。可在「服务 → 候选审核」中查看脱敏 Exchange、批准或拒绝候选、分别入库,或选择 2–50 个候选合并为一张知识卡。
LLM 经验提炼只生成可编辑的结构化草稿;只有点击「确认并正式入库」后才会写入知识库并更新索引。草稿有效期为 24 小时,确认时会再次校验候选来源和草稿内容,不会自动正式入库。
**当前限制:**桌面端尚未提供创建或编辑 API Key ↔ 知识库绑定的界面。全新安装后可直接使用网关、手动知识库/RAG 和 MCP;候选自动捕获与审核需要已有绑定,不应作为开箱即用流程依赖。
经验提炼当前复用知识库的
embedding_model发起 Chat Completions。常见的纯 Embeddings 模型(例如text-embedding-*)不支持聊天生成,会导致提炼失败;仅在该模型标识同时可被上游用于聊天生成时使用此实验性功能。
📁 项目结构
MindHub/
├── src/ # 前端源码
│ ├── pages/
│ │ ├── DashboardPage.tsx # 仪表盘
│ │ ├── ChannelsPage.tsx # 渠道管理
│ │ ├── ApiKeysPage.tsx # 密钥管理
│ │ ├── LogsPage.tsx # 审计日志
│ │ ├── KnowledgeBasePage.tsx # 知识库 + MCP 服务
│ │ ├── KnowledgeCapturePage.tsx # Exchange 候选审核
│ │ ├── UsagePage.tsx # 接入示例
│ │ ├── SettingsPage.tsx # 设置中心
│ │ └── AppConfigPage.tsx # 应用配置
│ ├── components/ # 通用组件
│ ├── lib/ # 工具库 (api.ts, constants.ts)
│ └── types/ # TypeScript 类型定义
├── src-tauri/ # 后端源码
│ ├── src/
│ │ ├── server/ # HTTP 服务器
│ │ │ ├── router.rs # 路由定义 (含服务注册)
│ │ │ └── handlers.rs # 请求处理器
│ │ ├── adaptor/ # 渠道适配器
│ │ │ ├── mod.rs # Adaptor Trait + 配置
│ │ │ ├── openai.rs # OpenAI 适配器
│ │ │ ├── claude.rs # Claude 适配器
│ │ │ ├── deepseek.rs # DeepSeek 适配器
│ │ │ ├── gemini.rs # Gemini 适配器
│ │ │ └── custom.rs # 自定义适配器
│ │ ├── protocol/ # 协议转换层
│ │ │ ├── mod.rs # 双向格式转换
│ │ │ ├── anthropic.rs # Anthropic SSE 流式
│ │ │ └── responses.rs # Responses SSE 流式
│ │ ├── core/ # 核心逻辑
│ │ │ ├── proxy.rs # 代理转发 + 安全扫描 + 重试
│ │ │ └── dispatcher.rs # 渠道调度 (优先级/权重/故障切换)
│ │ ├── security/ # 安全审计
│ │ │ ├── scanner.rs # 风险扫描引擎
│ │ │ ├── rules.rs # 规则定义
│ │ │ ├── redact.rs # 脱敏处理
│ │ │ └── mod.rs # 安全设置
│ │ ├── services/ # 服务层
│ │ │ ├── mod.rs # Service Trait + 注册表
│ │ │ ├── knowledge/ # 知识库服务
│ │ │ │ ├── parser.rs # 文档解析 (MD/Code/PDF/JSON)
│ │ │ │ ├── code_parser.rs # tree-sitter 代码符号提取
│ │ │ │ ├── splitter.rs # 智能分块器
│ │ │ │ ├── embedder.rs # 向量化 (复用渠道调度)
│ │ │ │ ├── index.rs # HNSW 向量索引
│ │ │ │ ├── retriever.rs # 混合检索 (HNSW + FTS5)
│ │ │ │ ├── rag.rs # RAG 问答引擎
│ │ │ │ ├── processor.rs # 文档处理流水线
│ │ │ │ ├── publisher.rs # 候选/合并知识卡正式入库
│ │ │ │ ├── exchange.rs # 脱敏 Exchange 与候选数据
│ │ │ │ ├── extraction.rs # LLM 经验提炼草稿
│ │ │ │ ├── importer.rs # 多源导入 (Git/URL/目录)
│ │ │ │ ├── repository.rs # 数据访问层
│ │ │ │ └── routes.rs # 遗留 REST 路由(未挂载)
│ │ │ └── mcp/ # MCP Server
│ │ │ ├── mod.rs # MCP Service 定义
│ │ │ └── handlers.rs # JSON-RPC 工具处理
│ │ ├── commands/ # Tauri Commands
│ │ │ ├── channel.rs # 渠道管理
│ │ │ ├── api_key.rs # 密钥管理
│ │ │ ├── log.rs # 日志管理
│ │ │ ├── stats.rs # 统计数据
│ │ │ ├── settings.rs # 设置管理
│ │ │ ├── security.rs # 安全规则
│ │ │ ├── knowledge_base.rs # 知识库命令
│ │ │ ├── knowledge_capture.rs # 候选审核与提炼命令
│ │ │ ├── services.rs # 服务状态
│ │ │ ├── app_config.rs # 应用配置 (8 款工具)
│ │ │ ├── import_export.rs # 导入导出
│ │ │ └── server.rs # 服务控制
│ │ ├── db/ # 数据库层
│ │ │ ├── mod.rs # Database 初始化
│ │ │ ├── models.rs # 数据模型
│ │ │ └── repository.rs # 数据访问
│ │ ├── utils/ # 工具函数
│ │ ├── lib.rs # 入口 + 系统托盘
│ │ └── main.rs # main 函数
│ ├── migrations/ # 数据库迁移(含候选、来源追踪与提炼草稿)
│ └── tauri.conf.json # Tauri 配置
└── package.json📌 版本历史
v0.1.4 (2026-07-30)
✨ 知识库引擎:文档解析 → tree-sitter 代码符号感知 → 智能分块 → 向量化 → HNSW 索引
✨ 混合检索:HNSW 向量检索 + SQLite FTS5 全文检索加权融合,三种模式(向量/关键词/混合)
✨ RAG 问答引擎:Top-K 检索 + 对话历史 + 来源引用
✨ MCP Server:Streamable HTTP + SSE,13 个知识库工具,兼容 Claude Desktop / OpenClaw
✨ 多源导入:Git 仓库克隆、URL 批量导入、本地目录扫描
✨ 应用配置:一键写入 8 款 AI 编程工具配置(Claude Code / Codex / Gemini CLI / WaLiCode 等)
✨ 导入导出:渠道配置 JSON 备份 + WaLiCode 备份文件导入
✨ 内置应用更新检查(Tauri Updater)
v0.1.1 (2026-07-21)
✨ 多协议网关:支持 OpenAI Chat Completions + Responses API + Anthropic Messages 三协议入口
✨ 仪表盘优化:统一 6 卡片指标网格 + 健康度徽章 + 动态运维建议
✨ 渠道统计:调用次数、Token 消耗、成功率、平均延迟
✨ 密钥统计:每个密钥的调用指标展示
✨ 接入示例页:三协议切换 + 15 套代码示例 + 连接测试
v0.1.0 (2026-07-18)
🎉 首个发布版本
多渠道管理(10 种渠道类型)+ 优先级/权重负载均衡
密钥管理 + 配额限制
请求/响应日志 + 全维度搜索筛选
安全审计中心(25+ 规则,5 种策略模式)
设置中心(主题/托盘/自启/重试)
SSE 流式响应转发
👥 贡献者
感谢所有对 MindHub 项目贡献代码的开发者。
欢迎通过 PR / Issue 参与项目共建。