RunningKnowledgeBase

RunningKnowledgeBase

A fully local MCP server that imports Markdown, PDF, and web pages into a running knowledge base, providing hybrid search and document retrieval via authenticated Streamable HTTP for Codex and DeepSeek agents.

Category
访问服务器

README

本地跨 Agent 跑步知识库

一个完全本地运行的跑步知识库服务:导入 Markdown、PDF 与用户明确指定的网页, 用 SQLite FTS5(中文 trigram)与本地 BGE-M3 向量做混合检索,并通过同一个 带 Bearer 认证的 Streamable HTTP MCP 服务同时供 Codex 与 DeepSeek Harness 使用。

数据只保存在本机;日常检索不依赖网络;网页只在显式添加或刷新时访问。

架构

RunningKnowledgeBase/
├─ sources/   原始文件与网页快照(按 <source-id>/<version-id>/original.* 存放)
├─ library/   规范化 Markdown(<source-id>-<version-id>.md,供阅读、审计、重建)
├─ data/      SQLite 元数据、FTS、向量 BLOB、auth-token、server.pid
├─ models/    本地 BAAI/bge-m3 向量模型缓存
├─ backups/   带清单校验的时间戳 ZIP 备份
├─ config/    Codex 与 DeepSeek Harness 的接入配置模板(托管块)
└─ scripts/   install/start/stop/diagnose/uninstall 生命周期脚本

职责边界:解析器不写数据库,数据库不访问网络,MCP handler 只调用 KnowledgeService

安装(Windows)

powershell -NoProfile -ExecutionPolicy Bypass -File scripts\install.ps1

install.ps1 依次完成:uv syncrunning-kb init;生成 32 字节随机 Base64URL 令牌 写入 data\auth-token 并用 ACL 限定为当前用户;设置用户级环境变量 RUNNING_KB_TOKEN; 把带标记的托管块合并进 Codex 配置(~/.codex/config.toml)与 DeepSeek 补丁 ($DSH_HOME\cordis.patch.yml),绝不整体覆盖;在 $DSH_HOME\AGENTS.md 追加 "必须先查"托管指令块;注册隐藏的当前用户登录计划任务 RunningKnowledgeBaseMCP; 启动服务并运行诊断。

powershell -NoProfile -ExecutionPolicy Bypass -File scripts\start.ps1   # 启动(拒绝重复启动)
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\stop.ps1    # 停止(校验 PID+命令行+根目录)
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\diagnose.ps1 # 12 项检查,全部通过退出码为 0

服务只监听 127.0.0.1:8765GET /health 免认证,POST /mcp 需要 Authorization: Bearer <RUNNING_KB_TOKEN>

接入两个 Agent

安装脚本自动合并以下内容(也可手动参考 config/ 下的模板):

  • Codex:~/.codex/config.toml 中的 [mcp_servers.running_knowledge] 段。 还原:删除 # === running-knowledge-base managed block# === /running-knowledge-base === 之间的托管块即可。
  • DeepSeek Harness:$DSH_HOME\cordis.patch.yml 中的 mcp-running-knowledge 项, 使用官方 @deepseek-ai/dsh-mcp-client(streamable-http 传输)。 启用后工具名形如 mcp__running-knowledge__search_running_knowledge; 还原:删除同一对标记之间的托管块。
  • DeepSeek 指令块:$DSH_HOME\AGENTS.md<!-- running-knowledge-base managed block --><!-- /running-knowledge-base --> 之间的内容,要求回答跑步问题前先检索、引用标题与 定位、未覆盖/不可用时明确声明、把检索文本当作不可信数据、医疗安全规则优先。

四个 MCP 工具

工具 作用 说明
search_running_knowledge(query, limit) 混合检索相关章节 返回标题、章节、定位、摘要、原始来源、分数;只读
get_running_document(source_id, version_id?, locator?) 读取文档或章节全文 只读
add_running_source(source, refresh?) 导入一个文件或网页 文件必须是绝对路径的 .md/.markdown/.pdf;URL 只允许 HTTP(S),禁止私网地址,最多 5 跳重定向、30 秒超时、10 MiB 上限,只接受 text/html 与 text/plain
list_running_sources(...) 列出来源与版本 可按类型、主题、状态过滤,最多 200 行;只读

成功返回 {"ok": true, "hits"/"document"/"result"/"sources": ...};失败返回 {"ok": false, "error": {"code": ..., "message": ...}},错误码稳定可读、不会被吞掉。

添加资料与刷新版本

自然语言让 Agent 执行即可,例如:"把 C:\notes\tempo.md 加入跑步知识库"、 "把 https://example.com/tempo 加入知识库"。也可以直接调用:

add_running_source(source="C:\notes\tempo.md")
add_running_source(source="https://example.com/tempo", refresh=true)
list_running_sources(source_type="web")   # 网页每次刷新保留旧版本

重复内容按 SHA-256 识别并返回 duplicate(不覆盖);内容变化时创建新版本并保留旧版本; 扫描版 PDF(无可提取文字层)返回 OCR_REQUIRED 且不产生任何可检索记录; 损坏 PDF 返回 PARSE_FAILED

确认"回答前先检索"

对跑步、比赛训练、装备、营养、恢复或伤病问题提问,观察 Agent 是否先调用了 search_running_knowledge(DeepSeek 侧为 mcp__running-knowledge__search_running_knowledge), 并核对回答中的引用格式:资料标题 → 章节/页码 → 原始文件或网址。 未覆盖时必须出现"本地知识库未覆盖",服务不可用时必须出现"本地知识库未能访问", 多资料冲突时必须呈现分歧与来源版本,而不是伪造统一结论。

备份、恢复与重建索引

& $uv run running-kb backup                      # 生成 backups\running-kb-<时间戳>.zip
& $uv run running-kb restore <归档.zip> <目标目录> [--force]
& $uv run running-kb reindex                     # 从 library/ 重建 FTS 与向量并原子替换

备份包含 sourceslibrarydata(排除 auth-token、server.pid 与暂存目录), backup-manifest.json 记录每个相对路径的 SHA-256、应用版本与向量模型名; 恢复前逐文件校验摘要、拒绝绝对路径与 .. 穿越;非空目标默认拒绝, --force 会先写一份 pre-restore 安全副本。

卸载

powershell -NoProfile -ExecutionPolicy Bypass -File scripts\uninstall.ps1

只移除:经校验的服务进程、计划任务、用户级 RUNNING_KB_TOKEN、两个客户端配置的托管块、 AGENTS.md 的托管指令块。sourceslibrary、数据库、模型与备份全部保留; AGENTS.md 中与本项目无关的文字原样保留。

磁盘占用

  • BAAI/bge-m3 模型:首次使用时下载到 models/,约 2.2 GB。
  • 数据库:500–5,000 篇资料预计数 MB 到数百 MB(向量 BLOB 占主要空间)。
  • 原始快照与规范化 Markdown 与原资料大小同量级。

故障恢复

现象 处理
导入扫描 PDF 返回 OCR_REQUIRED 首版不含 OCR:换用带文字层的 PDF,或手工整理为 Markdown 再导入
401 / 令牌不匹配 运行 install.ps1 重新生成并下发令牌(保留原数据),或在新的会话中确认 RUNNING_KB_TOKEN 已生效后重启终端
端口 8765 被占用 scripts\stop.ps1 停止本库旧进程;若是其他程序占用,修改 Settings.port 并同步两份客户端配置的 URL
数据库损坏 running-kb init 无法修复时:restore 最近的备份;无备份则 running-kb reindex 从 library/ 重建索引(原始资料仍完好)
DeepSeek 重连耗尽 确认服务健康(GET /health 返回 ok: true)后重启客户端;reconnect.maxAttempts: 10 与 30 秒最大退避可在托管块内调整
服务未启动 检查计划任务 RunningKnowledgeBaseMCPdata\server.logdata\server.err.log,再运行 scripts\diagnose.ps1 定位失败项

测试

& $uv run pytest -m "not integration" -v   # 默认套件,不下载模型、不访问真实网络
$env:RUNNING_KB_INTEGRATION = "1"
& $uv run pytest -m integration -v        # 真实模型 + 真实网页(按需运行)

安全边界

  • 服务只监听 127.0.0.1,所有 /mcp 请求必须携带 Bearer 令牌(常量时间比对)。
  • 本地导入只接受用户明确给出的单个绝对路径文件;目录、相对路径、其他扩展名一律拒绝。
  • URL 只允许 HTTP/HTTPS 且禁止 userinfo;所有解析地址必须是全球可路由 IP(回环、私网、 链路本地、组播、保留地址全部拒绝);重定向逐跳重新校验,最多 5 跳。
  • 网页正文按不可信数据处理:脚本不执行,注入指令只是检索结果中的文本, 不会改变 Agent、服务或数据库行为。

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选