openchronicle-mcp

io.github.CSOAI-ORG由 GitHub 账号 CSOAI-ORG 发布v3.0.0.dev1更新于 Oct 27, 2026

Memory database for LLM agents — persistent semantic + keyword memory, project namespacing, served o

已验证STDIO仅桌面数据库知识与记忆

概览

AI 生成的概览

面向 LLM 智能体的自托管记忆数据库,让助手拥有按项目隔离的持久语义与关键词记忆。

可以做什么
  • 保存决策、里程碑和被否决的方案,使其在上下文压缩和新会话后依然保留
  • 以全文与语义混合检索记忆,并查询服务健康状态
  • 按项目隔离记忆,避免不同工作流的上下文互相串扰
  • 对 git 仓库做入库处理,按相关性聚类提交并返回可供记忆摄入的摘要
适用场景
适合希望助手跨对话记住决策与理由,或从现有代码库中沉淀长期记忆,同时把数据留在自己硬件上的场景。
运行要求
以本地进程运行;README 提供从源码用 pip 安装并配合 oc 命令行(oc init、oc serve)的方式,也可用 Docker 容器。默认绑定 127.0.0.1:8000,通过 HTTP 的 /mcp 访问。容器中需将 OC_API_HOST 设为 0.0.0.0,使用非 localhost 主机名时需设置 OC_MCP_ALLOWED_HOSTS。语义检索依赖嵌入服务提供方。
安装前请注意
单用户、非多租户;通过 OC_API_KEY 的 Bearer 令牌鉴权是可选项且默认关闭,若要在可信局域网之外暴露服务应先启用。记忆写入本地 SQLite 数据库,可选的异地备份会把加密快照复制到 rclone 远端。可选指标通过 OC_METRICS_ENABLED 开启。

安装

在 SourceWeft 中

  1. 打开 控制台中的 openchronicle-mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

OpenChronicle

[code confidence] · claude-fable-5 · 2026-08-30 · details

[License: AGPL-3.0] [Docker] [Python 3.14+]

A memory database for LLM agents. Persistent semantic + keyword memory, project namespacing, git-onboard, served over HTTP REST and MCP from a single ASGI process. Runs on your hardware.

What it does

  • Persistent memory across sessions. Save decisions, milestones, and rejected approaches that survive context compression and new conversations. Retrieve them with hybrid full-text and semantic search via Reciprocal Rank Fusion.
  • Project namespacing. Memory is scoped to projects, so context for one workstream doesn't leak into another.
  • Git onboarding. Clone a repo, cluster commits by relatedness, return summaries ready for memory ingestion. Seeds long-term memory with the WHY behind existing code.
  • One process, two transports. FastAPI hosts both the REST surface (/api/v1/*) and the MCP streamable-HTTP transport (/mcp) on the same port. Single container, single port mapping, single healthcheck.
  • Embedding-failure degradation. When the embedding provider goes down, search degrades cleanly to FTS5-only and surfaces the degraded state via /api/v1/health and the MCP health tool. Backfill catches up when the provider returns; the static /health endpoint remains a minimal liveness probe.
  • Optional operational metrics. Released images (since v3.4.0) include the bounded Prometheus recorder and guarded /metrics endpoint, off by default. Opt in with OC_METRICS_ENABLED=true; enabling it in production stays subject to the performance gates. See the metrics configuration and the optional local monitoring runbook.
  • Schema migration framework. Versioned .sql migrations with savepoint atomicity. Re-runs are idempotent. Future schema changes drop in as NNN_<slug>.sql files.
  • Verified online backups. Uses SQLite's online backup API; each nightly snapshot is published with a verified manifest in OC_BACKUP_DIR, and one that fails verification is quarantined. Backup-before-destructive policy: vacuum runs a backup first as part of the same job. Integrity-check failures trigger emergency backups.
  • Optional encrypted offsite copies. A nightly job encrypts the newest snapshots with age and copies them to any rclone remote, append-only. See cloud_backup.md.

What it isn't

  • Not a conversation engine. v3 has no LLM. Use Claude Code, Goose, Open WebUI, etc. via the MCP server.
  • Not multi-tenant. Single user. Bearer-token auth via OC_API_KEY is supported but optional — disabled by default for trusted-LAN deployments. See docs/configuration/security_posture.md for the when-to-enable guidance.
  • Not a cloud sync layer. The DB lives on your hardware. Backups go to a local backup directory and, optionally, encrypted to a cloud remote, as backup only. Cross-device sync isn't built in (docs/design/0001-cloud-backup.md).

By design.

Install

From source:

bash
pip install -e ".[mcp,openai]"oc initoc serve

The default oc serve binds 127.0.0.1:8000. Override with --host/--port or OC_API_HOST/OC_API_PORT.

Docker (single container, NAS-friendly):

bash
docker run --rm \  -p 8000:8000 \  -e OC_API_HOST=0.0.0.0 \  -v $(pwd)/data:/app/data \  -v $(pwd)/config:/app/config \  ghcr.io/carldog/openchronicle-mcp:latest

OC_API_HOST=0.0.0.0 is required in a container — the app default binds container-loopback, which the port mapping can't reach. To call the server by anything other than localhost (a NAS hostname, a LAN IP), also set OC_MCP_ALLOWED_HOSTS=your-host:* or every request gets a 421 (see env_vars.md).

For a Portainer stack on a NAS, use the docker-compose.nas.yml at the repo root. It needs three things first: OC_TAG set to a release tag (there is no :latest fallback), the data volume created once (docker volume create openchronicle-mcp_oc-data; the compose never creates it, so a missing volume fails the deploy instead of starting empty), and the host exports directory created and owned by uid 1000. The file's header comments list every variable.

Quickstart

bash
# Bootstrap the runtime treeoc init
# Create a projectPROJECT_ID=$(oc init-project "my-project")
# Save your first memoryoc memory add "Decision: SQLite for storage; AGPL for license" \    --project-id $PROJECT_ID --tags decision
# Search itoc memory search "storage decision" --project-id $PROJECT_ID

Or do the same via MCP — register the server with Claude Code:

bash
claude mcp add --scope user --transport http openchronicle \    http://127.0.0.1:8000/mcp

Then ask Claude to call memory_save and memory_search.

Architecture

Hexagonal: domain/ (pure types + ports) → application/ (use cases, services) → infrastructure/ (SQLite, embedding adapters, the maintenance loop). Driver-side adapters in interfaces/ host the HTTP, MCP, and CLI surfaces.

See docs/architecture/ARCHITECTURE.md for the full layout.

Documentation

Development

bash
uv sync --locked --extra dev --extra mcp --extra openai --extra ollama --extra metricspre-commit installuv run pytest

Dependencies are locked in uv.lock, which CI and the Docker image install from; run uv lock after changing anything in [project] in pyproject.toml, including the version.

The architecture is enforced by tests:

  • tests/test_hexagonal_boundaries.py — domain/application/infrastructure layering
  • tests/test_architectural_posture.py — core agnostic of MCP SDK
  • tests/test_no_secrets_committed.py, tests/test_no_soft_deprecation.py — repo hygiene

License

Copyright (C) 2025-2026 CarlDog

AGPL-3.0. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. It is distributed WITHOUT ANY WARRANTY; see the license for details.

The copyright line lives here rather than inside LICENSE: that file is the AGPL text verbatim, and the <year> <name of author> placeholders in its closing appendix are the license's own instructions for what to put in your source files — not blanks to fill in. Editing them would modify the license text itself.

来源:README.md,提交 bc0658e

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v3.0.0.dev1最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分