Skip to main content
Glama
ZzZDdD11

HaoApi MCP Server

by ZzZDdD11

MindHub

本地 LLM API 网关 · 多协议接入 · 私有知识库 RAG · MCP 工具服务

Version License Platform Built with Tauri

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

POST /v1/chat/completions

Authorization: Bearer sk-mindhub-*

标准兼容协议,支持流式

OpenAI Responses

POST /v1/responses

Authorization: Bearer sk-mindhub-*

Responses API 双向转换

Anthropic Messages

POST /v1/messages

x-api-key: sk-mindhub-*

Anthropic 协议,自动头转换

OpenAI Embeddings

POST /v1/embeddings

Authorization: Bearer sk-mindhub-*

向量嵌入,知识库复用

模型列表

GET /v1/models

Authorization: Bearer sk-mindhub-*

聚合所有启用渠道的模型

健康检查

GET /health

服务存活探针

MCP

POST /mcp / GET /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 或夸克网盘下载对应平台安装包:

平台

格式

架构

macOS

.dmg

ARM64 (Apple Silicon)

Windows

.msi / .exe

x64

Linux

.deb / .AppImage

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 URLhttp://127.0.0.1:8777/v1(若已修改端口,请使用实际端口)

  • API Key:创建的 sk-mindhub-... 密钥

可先验证服务状态:

curl http://127.0.0.1:8777/health

5. 应用配置(可选)

在「应用配置」页面选择已安装的 AI 编程工具,一键写入网关地址和密钥,无需手动编辑配置文件。


🚀 实际投入使用

1. 日常网关使用

  1. 配置并测试至少一个启用渠道;

  2. 创建一个本地 API Key;

  3. 将下游客户端指向本地 /v1 地址;

  4. 在「审计日志」检查请求、模型、渠道、Token 和失败原因;

  5. 需要切换端口、监听地址或安全策略时,在「设置」保存后重启服务。

2. 私有知识库与 RAG

  1. 打开「服务 → 知识库」,新建知识库;

  2. 在知识库设置中确认 embedding_model 与启用渠道的 Embeddings 模型一致,按需调整切片大小、重叠和文件过滤;

  3. 通过「文档」上传文件,或通过「来源」导入可信 Git 仓库、公开 URL 或本地目录;

  4. 等待文档和索引状态均变为 ready;失败时先修复渠道、模型或源文件,再重新处理;

  5. 使用「搜索」核验原始命中片段,再在「问答」中进行 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 参与项目共建。


📄 License

MIT