私人日记MCP服务器

一个全面的MCP服务器,为Claude提供私人日记记录和语义搜索功能,用于处理想法、感受和见解。

  • by 617cf27674697170b9783d8-lgtm
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 617cf27674697170b9783d8-lgtm/journal-mcp

使用说明

专用日志MCP服务器

一个全面的MCP(模型上下文协议)服务器,为Claude提供私人日志和语义搜索功能,用于处理思想、感受和见解。

特性

日志记录

  • 多节日记:分别对感受、项目笔记、用户背景、技术见解和世界知识进行分类
  • 双存储器:项目笔记保存在项目中,个人想法保存在用户主目录中
  • 带时间戳的条目:每个条目都以微秒精度自动标注日期
  • YAML前体:每个条目的结构化元数据

搜索与发现

  • 语义搜索:使用本地AI嵌入的自然语言查询
  • 向量相似性:查找概念上相关的条目,而不仅仅是关键字匹配
  • 本地AI处理:使用@xenova/transformers-不需要外部API调用
  • 自动标引:为启动和正在进行的所有条目生成嵌入

隐私与性能

  • 完全私密:所有处理都在本地进行,没有数据离开您的机器
  • 快速操作:优化了文件结构和内存中的相似性计算
  • 稳健的回退:跨平台的智能路径解析

技术栈

核心技术

  • Node.js 18+ -具有现代JavaScript功能的运行时环境
  • TypeScript 5.0+ -严格配置的类型安全开发
  • MCP SDK 0.4.0 -官方模型上下文协议实现
  • @xenova/变压器 -用于语义嵌入的本地AI模型(无外部API)

人工智能与搜索

  • 语义嵌入 -多种型号选项(MiniLM、DistilRoBERTa、MPNet)
  • 向量相似性 -局部余弦相似度计算
  • 自然语言搜索 -无需外部服务的查询理解

发展与质量

  • 测试 -带有模拟的全面测试框架
  • 生物群系 -现代衣冠和格式化
  • Oxlint -附加代码质量检查
  • GitHub操作 -持续集成和测试

存储和架构

  • Markdown+YAML -具有结构化元数据的人类可读条目
  • 分层文件系统 -基于日期的组织,精度达到微秒级
  • 交叉平台的 -Windows、macOS和Linux支持

有关详细的架构决策,请参见 建筑.md.

安装

npm install -g private-journal-mcp

或在本地安装:

npm install private-journal-mcp

用法

基本用法

private-journal-mcp

这将在中创建日记条目 .private-journal/ 在当前工作目录中。

自定义日记路径

private-journal-mcp --journal-path /path/to/my/journal

嵌入模型配置

您可以自定义用于生成语义嵌入的AI模型:

export JOURNAL_EMBEDDING_MODEL="Xenova/all-distilroberta-v1"

可用型号:

  • Xenova/all-MiniLM-L6-v2 (默认)-快速,384维,一般性能良好
  • Xenova/all-distilroberta-v1 -更大,768维,精度更高
  • Xenova/paraphrase-MiniLM-L6-v2 -针对释义检测进行了优化
  • Xenova/all-mpnet-base-v2 -高质量,768维,速度较慢但更准确

嵌入模型影响:

  • 本地搜索质量 -更复杂的模型提供了更好的语义理解
  • 矢量维度 -影响远程服务器存储和搜索功能
  • 处理速度 -较大的模型速度较慢,但更准确
  • 内存使用 -更大的型号需要更多的RAM

远程服务器集成

要启用可选的将日记条目远程发布到团队服务器,请设置以下环境变量:

export REMOTE_JOURNAL_SERVER_URL="https://api.yourteam.com"
export REMOTE_JOURNAL_TEAMID="your-team-id"
export REMOTE_JOURNAL_APIKEY="your-api-key"

配置后,日记条目除了保存在本地外,还将发布到远程服务器。本地日志始终具有优先级——如果远程发布失败,本地条目仍将被保存。

仅远程模式

对于使用后端服务器作为单一信息来源的团队,启用仅远程模式以完全跳过本地文件存储:

export REMOTE_JOURNAL_ONLY="true"

在仅远程模式下:

  • 无本地存储 -条目直接进入后端服务器
  • 服务器端搜索 -所有搜索查询都使用后端API
  • 错误处理 -如果服务器不可用,日志操作将失败
  • 团队协作 -跨团队成员自动共享
  • 集中式人工智能 -由后端基础设施支持的语义搜索

远程有效载荷格式

服务器发送具有以下结构的JSON有效载荷:

对于简单条目:

{
  "team_id": "your-team-id",
  "timestamp": 1717160645123,
  "content": "Journal entry text",
  "embedding": [0.1, 0.2, 0.3, 0.4, 0.5, "..."]
}

对于结构化思维:

{
  "team_id": "your-team-id",
  "timestamp": 1717160645123,
  "sections": {
    "feelings": "I feel great about this feature",
    "project_notes": "Architecture is solid",
    "technical_insights": "TypeScript provides great type safety",
    "user_context": "User prefers concise responses",
    "world_knowledge": "Semantic search is powerful"
  },
  "embedding": [0.1, 0.2, 0.3, 0.4, 0.5, "..."]
}

嵌入向量

每个日记条目都包含一个使用本地AI模型生成的语义嵌入向量(@xenova/transformers)。这些矢量能够:

  • 语义搜索 在远程服务器上
  • 相似性匹配 跨团队参赛作品
  • 内容聚类 与分析
  • 人工智能驱动的洞察力 不暴露原始内容

嵌入是一个数字数组,表示日记账分录内容的语义含义。矢量维度取决于所使用的模型(通常为384或512维)。

远程服务器应该期望POST请求 /journal/entries 随着 x-api-key 和 x-team-id 标题。

MCP配置

克劳德代码(单行)

claude mcp add-json private-journal '{"type":"stdio","command":"npx","args":["github:617cf27674697170b9783d8-lgtm/journal-mcp"]}' -s user

手动配置

添加到您的MCP设置中(例如,Claude Desktop配置):

{
  "mcpServers": {
    "private-journal": {
      "command": "npx",
      "args": ["github:617cf27674697170b9783d8-lgtm/journal-mcp"]
    }
  }
}

服务器将自动为日志文件找到合适的位置。

MCP工具

服务器提供全面的日志记录和搜索功能:

process_thoughts

具有以下可选类别的多节私人日记:

  • 感受:私人情感处理空间
  • 项目注释:针对当前项目的技术见解
  • 用户文本:关于与人类合作的说明
  • 技术_景点:通用软件工程学习
  • 世界知识:领域知识和有趣的发现

search_journal

跨所有日记账条目的语义搜索:

  • 怎么翻译 (必填):自然语言搜索查询
  • 限制:最大结果(默认值:10)
  • 类型:搜索范围-“项目”、“用户”或“两者”(默认值:“两者”)
  • 章节:按特定类别筛选

read_journal_entry

阅读特定条目的完整内容:

  • 路径 (必填):搜索结果中的文件路径

list_recent_entries

按时间顺序浏览最近的条目:

  • 限制:最大条目数(默认值:10)
  • 类型:条目范围-“项目”、“用户”或“两者”(默认值:“两者”)
  • 天:返回搜索的天数(默认值:30)

文件结构

项目日志(每个项目)

.private-journal/
├── 2025-05-31/
│   ├── 14-30-45-123456.md          # Project notes entry
│   ├── 14-30-45-123456.embedding   # Search index
│   └── ...

用户日志(全局)

~/.private-journal/
├── 2025-05-31/
│   ├── 14-32-15-789012.md          # Personal thoughts entry
│   ├── 14-32-15-789012.embedding   # Search index
│   └── ...

输入格式

每个markdown文件都包含YAML frontmatter和结构化部分:

---
title: "2:30:45 PM - May 31, 2025"
date: 2025-05-31T14:30:45.123Z
timestamp: 1717160645123
---

## Feelings

I'm excited about this new search feature...

## Technical Insights

Vector embeddings provide semantic understanding...

发展

建筑

npm run build

测试

npm test

发展模式

npm run dev

提升克劳德的表现

为了帮助Claude学习并随着时间的推移而提高,请考虑在您的日志中添加日志使用指南 ~/.claude/CLAUDE.md 文件:

## Learning and Memory Management

- YOU MUST use the journal tool frequently to capture technical insights, failed approaches, and user preferences
- Before starting complex tasks, search the journal for relevant past experiences and lessons learned
- Document architectural decisions and their outcomes for future reference
- Track patterns in user feedback to improve collaboration over time
- When you notice something that should be fixed but is unrelated to your current task, document it in your journal rather than fixing it immediately

这使Claude能够跨对话构建持久内存,从而做出更好的工程决策和协作模式。

文档

综合指南

api参考

获取帮助

作者

匿名研究团队

出于学术审查的目的,作者信息已匿名。

许可证

麻省理工学院