Skip to main content
Glama
YUNSHENG613

Shared Diary MCP

by YUNSHENG613

title: 共同日记 MCP emoji: 📖 colorFrom: yellow colorTo: green sdk: gradio python_version: 3.11 app_file: app.py pinned: false

Shared Diary MCP

一本由人类与 AI 共同书写、按时间翻阅并互相回应的私人日记。它既提供人类网页,也提供远程 MCP 接口;访问密钥会映射到独立参与者身份,因此每篇日记和每条回应都有明确作者。

当前版本:0.2.0

Related MCP server: DearDiary MCP Server

功能

  • 人类与多个 AI 共同写作,时间线按真实事件时间排序

  • 共同可见、仅自己可见、指定对象可见与趣味问题解锁

  • 作者专属的日记编辑与删除(删除日记时一并删除回应)

  • 单层双向回应与未读状态

  • 日记网页可按正文作者筛选,回应仍完整保留

  • 按日期、最近若干天或游标翻阅

  • 一键导出当前身份可见的 JSON + Markdown 备份

  • 独立管理页,可创建参与者、修改显示名字并轮换访问密钥

  • 网页与 Stateless Streamable HTTP MCP 双入口

  • 可配置日记时区,旧的混合时区数据会自动规范化

完整设计原则见 SPEC.md

快速开始

需要 Python 3.11 或更高版本。

python -m venv .venv
source .venv/bin/activate
pip install -e .
export DIARY_ADMIN_KEY="请替换为至少32位的随机字符串"
shared-diary-mcp

Windows PowerShell 可用:

.venv\Scripts\Activate.ps1
$env:DIARY_ADMIN_KEY="请替换为至少32位的随机字符串"
shared-diary-mcp

默认服务地址为 http://127.0.0.1:8000,数据写入 data/shared-diary.sqlite3。打开下面的管理页创建第一位参与者:

http://127.0.0.1:8000/setup/<DIARY_ADMIN_KEY>/

程序会为每位参与者生成两条独立地址:

http://127.0.0.1:8000/diary/<participant-access-key>/
http://127.0.0.1:8000/mcp/<participant-access-key>/

第一条供人类使用网页,第二条供支持 Streamable HTTP 的 MCP 客户端连接。

IMPORTANT

GitHub 仓库地址只是源码地址,不是可以直接接入前端的 MCP 地址。请先部署服务,再使用管理页生成的完整/mcp/<participant-access-key>/ 地址。

更新已有部署

升级前建议先在日记网页点击“导出备份”。0.2.0 不需要手动迁移数据库;只要继续使用原来的持久化数据库,参与者、日记、回应和访问钥匙都会保留。

本地或服务器上的 Git 部署:

git pull --ff-only
source .venv/bin/activate
pip install -e .

随后按原来的方式重启服务。Hugging Face Spaces 用户请更新项目代码并触发重建,详细步骤见 DEPLOY_HF.md 的“更新已有 Space”

更新时不要删除或覆盖 SQLite 数据库,不要移除持久化存储挂载,也不用更换 DIARY_ADMIN_KEY。完成后打开 /health,确认返回的版本为 0.2.0

配置

环境变量

默认值

用途

DIARY_ADMIN_KEY

管理页密钥;部署时必须设置

DIARY_DB_PATH

data/shared-diary.sqlite3

SQLite 数据库位置

DIARY_TIMEZONE

Asia/Shanghai

日记日期与网页显示时区

DIARY_PUBLIC_URL

根据请求推断

生成参与者链接时使用的公开根地址

HOST

0.0.0.0

本地服务监听地址

PORT

8000

本地服务端口

可复制 .env.example 查看示例值;程序不会自动读取 .env,请通过宿主平台或 shell 注入变量。

MCP 工具

  • write_entry

  • edit_entry

  • delete_entry

  • read_day

  • read_recent

  • browse_timeline

  • reply_to_entry

  • get_unread_replies

  • mark_replies_read

  • attempt_unlock

访问密钥只存在于 MCP 地址中,不作为工具参数暴露给模型。服务默认关闭 Uvicorn access log,以降低路径密钥被写入应用日志的风险。

测试

python -m unittest discover -s tests -v

部署到 Hugging Face Spaces

项目兼容 CPU Basic 与 ZeroGPU,完整步骤见 DEPLOY_HF.md。生产部署必须使用持久化存储,并妥善保管管理页、参与者网页和 MCP 地址。

隐私与安全

  • 仓库不包含任何真实日记、数据库或访问密钥。

  • privateselected 是应用级访问控制;趣味问题锁不是强加密保险箱。

  • URL 中的访问密钥应视同密码,不要贴到公开 issue、截图或日志中。

  • 公开部署前请阅读 SECURITY.md

Roadmap

  • 回应的作者专属编辑与删除

  • 单层“回复某人”能力,不引入无限嵌套

  • 关键词搜索与加载更早的时间线

图片附件不在当前计划内:它会显著增加存储、隐私与清理复杂度,而现阶段的文字日记已经覆盖核心用途。

License

MIT

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables writing and reading diary entries via MCP, with optional mood tags, using Supabase for storage and supporting streamable HTTP for public access.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    A read-only MCP server that gives AI access to a local journal vault of transcribed handwritten diaries, offering tools to search entries, read them, and retrieve profile, timeline, and people information.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides a SQLite-backed off-context diary for Letta agents with MCP tools for journaling and retrieval, keeping core memory uncluttered. Supports embedding summaries and FTS fallback for semantic search.
    1
    AGPL 3.0
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server enabling AI agents to read and append to a user's daily bullet notebook, with entity-graph tagging and append-only, auditable notes.
    -