内存日志MCP服务器
](https://github.com/neverinfamous/memory-journal-mcp) ](https://www.npmjs.com/package/memory-journal-mcp) ](https://hub.docker.com/r/writenotenow/memory-journal-mcp)    

🎯 人工智能背景+项目智能: 使用持久的项目内存桥接断开的AI会话 自动会话切换 --与GitHub工作流完全集成。
🚀 快速部署:
- **** -
npm install -g memory-journal-mcp - **** -基于Alpine的全语义搜索
🧠 停止体验AI失忆症
在人工智能的帮助下管理大型项目时,您面临着一个关键的挑战:
- 线程失忆 -每一次新的人工智能对话都是从零开始的,不知道之前的工作。
- 上下文丢失 -决策、实现和学习分散在断开连接的线程中。
- 重复工作 -AI会建议你已经尝试或放弃的解决方案。
- 上下文过载 -手动将项目历史记录复制到每个新对话中。
Memory Journal通过充当项目的 长期记忆弥合分散的人工智能会话之间的差距。
______________________________________________________________________
体验真正的情境感知开发:
- _“上个月我们为什么选择SQLite而不是Postgres来提供这项服务?”_ (语义搜索)
- _“跑
/issue-triage看板板中最高优先级工单的工作流程。"_ (GitHub操作) - _“最近谁在接触认证模块,我们的团队协作密度是多少?”_ (团队分析)
- _“我被这个数据库错误困住了。为@sarah设置一个‘拦截器’标志,这样她的经纪人下次就能看到它。”_ (Hush协议)
- _“关闭问题#42,并记录一个条目,解释我们对解析错误的架构修复。”_ (上下文生命周期)
- _“绘制一个可视化图表,显示我最近10个架构决策之间的相互关系。”_ (知识图谱)
______________________________________________________________________
🎯 我们的独特之处
70个MCP工具 · 17工作流程提示 · 36资源 · 10个工具组 · 代码模式 · GitHub指挥官 (问题分类、PR审查、里程碑冲刺、安全/质量/绩效审计)· GitHub集成 (问题、PR、行动、看板、里程碑、见解)· 团队协作 (共享数据库、矢量搜索、跨项目洞察、Hush协议标志)
| 特性 | 描述 |
|---|---|
| 会话智能 | 代理自动查询项目历史记录,在检查点创建条目,并通过以下方式在会话之间切换上下文 /session-summary 和 team-session-summary |
| GitHub集成 | 18个工具,用于问题、PR、行动、看板、里程碑(%)、副驾驶评审和14天洞察 |
| 动态项目路线 | 使用单个服务器实例,通过以下方式无缝切换上下文并跨多个存储库访问CI/CD问题跟踪 PROJECT_REGISTRY |
| 知识图谱 | 8种关系类型链接规格→ 实现→ 测试→ 带有美人鱼可视化的公关 |
| 混合搜索 | 结合FTS5关键字、语义向量相似性、自动启发式和日期范围过滤器的互惠排名融合 |
| 代码模式 | 在受信任的管理员执行环境中执行多步操作——通过以下方式节省高达90%的令牌 mj.* API |
| 可配置简报 | 15个环境变量/CLI标志控件 memory://briefing 内容——条目、团队、GitHub细节、技能意识、时间顺序 |
| 报告和分析 | 站立、回顾、公关总结、摘要、周期分析和里程碑跟踪 |
| 嘘协议(标志) | 用结构化、可操作和可搜索的AI标志(拦截器、评论)取代Slack/Teams噪音,这些标志会自动出现在会话简报中 |
| 团队协作 | 25个具有完全奇偶校验的工具——CRUD、向量搜索、关系图、跨项目洞察、作者归因、Hush协议标志 |
| 数据互操作 | 双向Markdown往返、统一IO命名空间和具有硬边界检查路径遍历防御的模式安全JSON导出 |
| 备份与恢复 | 一个命令备份/恢复,具有自动调度、保留策略和安全网自动备份功能 |
| 安全与运输 | OAuth 2.1(RFC 9728/8414,JWT/JWKS,作用域),流式HTTP+SSE,速率限制,CORS,SQL注入预防,非根Docker |
| 结构化错误处理 | 每个工具都会返回 {success, error, code, category, suggestion, recoverable} --代理获得分类、补救提示和可恢复性信号 |
| 代理协作 | IDE代理和Copilot共享上下文;审查结果成为可搜索的知识;代理建议可重用的规则和技能(设置) |
| 本地代理技能 | 捆绑的基础编码范式(autonomous-dev, python, docker, tailwind-css, golang, playwright-standard等)建立永久的AI行为和架构规则 |
| GitHub指挥官 | 问题分类、PR审查、冲刺里程碑以及带有日志跟踪的安全/质量/性能审计的管道技能(文档) |
______________________________________________________________________
flowchart TB
subgraph Session["🤖 AI Session Start"]
Briefing["📋 Read Briefing
(memory://briefing)"]
end
subgraph Core["📝 Journal Operations"]
Create["Create Entry"]
Retrieve["Retrieve & Search"]
Link["Link Entries"]
end
subgraph Search["🔍 Hybrid Search"]
FTS["Keyword (FTS5)"]
Semantic["Semantic (Vector)"]
DateRange["Date Range"]
RRF["Reciprocal Rank Fusion"]
end
subgraph GitHub["🐙 GitHub Integration"]
Issues["Issues & Milestones"]
PRs["Pull Requests"]
Actions["GitHub Actions"]
Kanban["Kanban Boards"]
Insights["Repository Insights"]
end
subgraph Outputs["📊 Outputs"]
Reports["Standups & Retrospectives"]
Graphs["Knowledge Graphs"]
Timeline["Project Timelines"]
end
Session --> Core
Core --> Search
Core GitHub
Search --> Outputs
GitHub --> Outputs______________________________________________________________________
Recommended AI Agent Instructions/Rule
_建议规则(添加到AGENTS.md、GEMINI.md、系统提示等)_
🛑 强制会话启动例程
在新会话中满足任何用户请求之前执行:
- 目标:地狱
repo_name从活动工作区上下文或用户提示。如果任务与特定项目无关,则回退到使用没有仓库名称的通用资源(默认为第一个注册的工作区)。 - 取回:使用MCP
read_resource工具(服务器:memory-journal-mcp)阅读memory://briefing/{repo_name}(或memory://briefing如果回落)。
- 限制:不要使用 execute_code 对于这一步。
- 确认标志:如果简报JSON包含
activeFlags(计数>0),您必须在表格上方打印一个警报:⚠️ **{count} active flag(s)** — review before proceeding.后面是每面旗帜(🚩 {flag_type} → @{target_user}: {preview}). - 渲染表:将剩余的JSON解析为一个密集的2列Markdown表(字段,值)。
- 限制:表中没有项目符号列表。不要截断摘要或问题。 - 格式化:组相关属性(使用 用于换行)。 - 所需组:GitHub(回购、分支、CI、PR、洞察)、问题、条目计数、最新条目/摘要、分析、里程碑、工作区。
- 停止并等待:不要自主地恢复过去的任务或开始处理会议摘要中提到的新问题。简报仅限于上下文。
______________________________________________________________________
工具筛选
\[!重要\] 所有快捷方式和工具组包括 代码模式 (mj_execute_code)默认情况下,用于令牌高效操作。要排除它,请添加-codemode到您的过滤器:--tool-filter starter,-codemode
通过以下方式控制暴露的工具 MEMORY_JOURNAL_MCP_TOOL_FILTER (或CLI: --tool-filter):
| 筛选器 | 工具 | 用例 |
|---|---|---|
full | 70 | 所有工具(默认) |
starter | ~11 | 核心+搜索+编码模式 |
essential | ~7 | 占地面积最小 |
readonly | 17 | 禁用所有突变 |
-github | 52 | 排除组 |
-github,-analytics | 50 | 排除多个组 |
筛选器语法: shortcut 或 group 或 tool_name (白名单模式)· -group (禁用组)· -tool (禁用工具)· +tool (在组禁用后重新启用)
自定义选择: 列出各个工具名称以创建自己的白名单: --tool-filter "create_entry,search_entries,semantic_search"
组: core, search, analytics, relationships, io, admin, github, backup, team, codemode
______________________________________________________________________
📋 核心能力
🛠️ 70个MCP工具 (10组)
| 组 | 工具 | 描述 |
|---|---|---|
codemode | 1 | 代码模式(沙盒代码执行)🌟 推荐 |
core | 6 | 输入CRUD、标签、测试 |
search | 4 | 文本搜索、日期范围、语义、矢量统计 |
analytics | 2 | 统计数据、跨项目见解 |
relationships | 2 | 链接条目,可视化图形 |
io | 3 | JSON/PMarkdown导出和文件级Markdown数据集成互操作性(导入/导出) |
admin | 5 | 更新、删除、重建/添加向量索引、合并标签 |
github | 18 | 问题、PR、背景、看板、, 里程碑, 洞察, 问题生命周期, 副驾驶评论 |
backup | 4 | 备份、列表、还原、清理 |
team | 25 | CRUD、搜索、统计、关系、IO(Markdown导入/导出)、备份、向量搜索、跨项目洞察、矩阵、, Hush协议标志 (要求 TEAM_DB_PATH) |
🎯 17工作流程提示
find-related-通过语义相似性发现连接的条目prepare-standup-每日站立总结prepare-retro-Sprint回顾weekly-digest-每日每周总结analyze-period-具有洞察力的深度周期分析goal-tracker-里程碑和成就跟踪get-context-bundle-Git/GitHub/Kanban的项目上下文get-recent-entries-格式化的最新条目project-status-summary-GitHub项目状态报告pr-summary-拉取请求日志活动摘要code-review-prep-全面PR审查准备pr-retrospective-完成公关分析并学习actions-failure-digest-CI/CD故障分析project-milestone-tracker-里程碑进度跟踪confirm-briefing-向用户确认会话上下文session-summary-创建一个包含成就、待办事项和下一个会话上下文的会话摘要条目team-session-summary-创建与团队数据库安全隔离的回顾性团队会话摘要条目
📡 36资源 (27个静态+9个模板)
静态资源 (出现在资源列表中):
memory://briefing- 会话初始化:AI代理的紧凑上下文(约300个令牌)——包括localTime可选activeFlagsmemory://instructions- 行为指导:AI代理的完整服务器说明memory://recent-10个最新条目memory://significant-重大里程碑和突破memory://graph/recent-最近关系的真人美人鱼图memory://health-服务器运行状况和诊断memory://graph/actions-CI/CD叙事图memory://actions/recent-最近运行的工作流memory://tags-所有带有使用次数的标签memory://statistics-期刊统计memory://rules-用于代理感知的用户规则文件内容memory://workflows-可用代理工作流摘要memory://skills-代理技能指数(姓名、路径、摘录)memory://github/status-GitHub存储库状态概述memory://github/insights-存储库星级、分叉和14天流量摘要memory://github/milestones-具有完成百分比的开放里程碑memory://team/recent-最近有作者署名的团队参赛作品memory://team/statistics-团队条目计数、类型和作者细分memory://help-带有描述和工具计数的工具组索引memory://help/gotchas-现场笔记、边缘案例和关键使用模式memory://metrics/summary-自服务器启动以来的聚合工具调用指标(调用、错误、令牌估计、持续时间)——高优先级memory://metrics/tokens-按输出令牌成本排序的每个工具令牌使用情况明细——中等优先级memory://metrics/system-进程级指标:内存(MB)、正常运行时间、Node.js版本、平台——中等优先级memory://metrics/users-每用户呼叫计数(当OAuth用户标识符存在时填充)——低优先级memory://audit-JSONL操作遥测日志中的最后50个写/管理工具调用条目(需要AUDIT_LOG_PATH)memory://flags-活动(未解决)团队标志仪表板(需要TEAM_DB_PATH)memory://flags/vocabulary-配置的标志词汇表术语
模板资源 (需要参数,直接通过URI获取):
memory://projects/{number}/timeline-项目活动时间表memory://issues/{issue_number}/entries-与问题相关的条目memory://prs/{pr_number}/entries-链接到PR的条目memory://prs/{pr_number}/timeline-公关+期刊时间线组合memory://kanban/{project_number}-GitHub项目看板板memory://kanban/{project_number}/diagram-看板美人鱼可视化memory://milestones/{number}-里程碑细节和完工进度memory://help/{group}-带参数和注释的每组工具参考memory://briefing/{repo}-针对特定存储库的上下文
_注: memory://github/status, memory://github/insights, memory://github/milestones,以及 memory://milestones/{number} 资源还接受可选 /{repo} 用于跨回购目标的路径后缀。_
______________________________________________________________________
⚡ 代码模式:最高效率(节省90%的令牌)
代码模式(mj_execute_code)这是一种革命性的方法 将令牌使用量大幅减少高达90% 并且默认包含在所有预设中。AI代理使用单个沙盒执行来更快地推理,而不是在连续的工具调用上花费数千个令牌。
代码在 worker_threads沙盒 设计为安全的多租户进程隔离环境。全部 mj.* API对沙箱中的日志调用execute,提供:
- 静态代码验证 --受阻模式包括
require(),process,eval(),以及文件系统访问 - 速率限制 --每个客户端每分钟执行60次
- 硬超时 --可配置的执行限制(默认30秒)
- API完全访问 --所有10个工具组均可通过
mj.*(例如。,mj.core.createEntry(),mj.search.searchEntries(),mj.github.getGithubIssues(),mj.team.passTeamFlag()) - 严格只读合同 --调用下面的任何变异方法
--tool-filter readonly安全地停止沙盒以防止执行,返回结构化{ success: false, error: "..." }响应代理,而不是原始MCP协议异常。
⚡ 仅代码模式(最大令牌节省)
与一起跑步 仅启用代码模式 --一个单一的工具,通过 mj.* API
{
"mcpServers": {
"memory-journal-mcp": {
"command": "memory-journal-mcp",
"args": ["--tool-filter", "codemode"]
}
}
}这暴露了 mj_execute_code。代理针对键入的对象编写JavaScript mj.* SDK——在一次执行中跨所有10个工具组组合操作并返回所需的数据。这反映了 代码模式模式 由Cloudflare为其整个API开创:无论存在多少功能,都是固定的代币成本。
禁用代码模式
如果您更喜欢单独的工具调用,请排除codemode:
{
"args": ["--tool-filter", "starter,-codemode"]
}______________________________________________________________________
🤫 Hush协议:异步团队协作
这 Hush协议 通过用结构化的、机器可操作的标志替换嘈杂的Slack/Teams消息,重新构想人工智能增强工作流程的团队协作。
当您遇到阻止者、需要审核或想要广播里程碑时,您的AI代理可以在共享的团队数据库中升起标记:
- 可操作的可见性:活动旗帜会自动出现在最顶部
memory://briefing所有团队成员的有效载荷。当另一个开发人员的代理启动会话时,它会立即看到您的阻止程序,并可以帮助自动解决它们。 - 结构类型:升起特定类型的旗帜(
blocker,needs_review,help_requested,fyi).您可以通过以下方式自定义团队的词汇表--flag-vocabulary配置。 - 可搜索历史记录:与消失在虚空中的聊天消息不同,Hush标志是永久的、可查询的AI日记条目。您的代理可以搜索过去
needs_review了解建筑障碍是如何被克服的。
仪表板和操作:阅读 memory://flags 查看活动仪表板概述和使用 mj.team.passTeamFlag() / mj.team.resolveTeamFlag() 在代码模式下以编程方式管理它们。
______________________________________________________________________
🚀 快速开始
选项1:npm(推荐)
npm install -g memory-journal-mcp选项2:来源
git clone https://github.com/neverinfamous/memory-journal-mcp.git
cd memory-journal-mcp
npm install
npm run build添加到MCP配置
将此添加到您的 ~/.cursor/mcp.jsonClaude Desktop配置或等效配置:
基本配置
{
"mcpServers": {
"memory-journal-mcp": {
"command": "memory-journal-mcp",
"env": {
"GITHUB_TOKEN": "ghp_your_token_here",
"PROJECT_REGISTRY": "{\"my-repo\":{\"path\":\"/path/to/your/git/repo\",\"project_number\":1}}",
"ALLOWED_IO_ROOTS": "/path/to/your/git/repo"
}
}
}
}高级配置(推荐)
展示服务器的全部功能,包括多项目路由、团队协作、副本意识和上下文注入。
{
"mcpServers": {
"memory-journal-mcp": {
"command": "memory-journal-mcp",
"env": {
"DB_PATH": "/path/to/your/memory_journal.db",
"TEAM_DB_PATH": "/path/to/shared/team.db",
"GITHUB_TOKEN": "ghp_your_token_here",
"PROJECT_REGISTRY": "{\"my-repo\":{\"path\":\"/path/to/repo\",\"project_number\":1},\"other-repo\":{\"path\":\"/path/to/other\",\"project_number\":5}}",
"ALLOWED_IO_ROOTS": "/path/to/repo,/path/to/other,/path/to/your/skills",
"AUTO_REBUILD_INDEX": "true",
"MEMORY_JOURNAL_MCP_TOOL_FILTER": "codemode",
"CODEMODE_INTERNAL_FULL_ACCESS": "true",
"BRIEFING_ENTRY_COUNT": "3",
"BRIEFING_SUMMARY_COUNT": "1",
"BRIEFING_INCLUDE_TEAM": "true",
"BRIEFING_ISSUE_COUNT": "3",
"BRIEFING_PR_COUNT": "3",
"BRIEFING_PR_STATUS": "true",
"BRIEFING_WORKFLOW_COUNT": "3",
"BRIEFING_WORKFLOW_STATUS": "true",
"BRIEFING_COPILOT_REVIEWS": "true",
"RULES_FILE_PATH": "/path/to/your/RULES.md",
"SKILLS_DIR_PATH": "/path/to/your/skills",
"MEMORY_JOURNAL_WORKFLOW_SUMMARY": "/deploy: prod deployment | /audit: security scan",
"AUDIT_LOG_PATH": "/path/to/your/mcp-audit.jsonl",
"TEAM_AUTHOR": "your_username"
}
}
}
}💡 提示: 优化您的上下文窗口! 日记条目 (BRIEFING_ENTRY_COUNT)捕获频繁的、精细的操作(例如错误修复、实现步骤)。 会议摘要 (BRIEFING_SUMMARY_COUNT)表面高级回顾意味着在不同的人工智能会议上不断传递战略背景。适当地使用这两种方法,使代理简报保持高度集中!
变体 (修改上面的配置):
| 变体 | 更改 |
|---|---|
| 最小(无GitHub) | 删除 env 完全封锁 |
| npx(不安装) | 更换 "command" 和 "npx" 并添加 "args": ["-y", "memory-journal-mcp"] |
| 来源 | 更换 "command" 和 "node" 并添加 "args": ["dist/cli.js"] |
| 仅代码模式 | 添加 "args": ["--tool-filter", "codemode"] (单一工具,所有功能) |
| 码头工人 | 更换 "command" 和 "docker" 和使用 run -i --rm -v ./data:/app/data writenotenow/memory-journal-mcp:latest 作为args |
| 团队协作 | 添加 "TEAM_DB_PATH": "./team.db" 到 env |
重新启动MCP客户端并开始记录日志!
选项3:HTTP/SSE传输(远程访问)
🔒 安全态势:Stdio与HTTP - 标准(默认): 在本地IDE或命令行环境的安全边界内隐式运行。不需要显式身份验证,因为执行上下文已受信任。 - HTTP/SSE: 通过网络套接字公开服务器。默认情况下,HTTP仅绑定到localhost并阻止通配符CORS,以防止未经授权的访问和CSRF攻击。 公网绑定(--server-host 0.0.0.0)需要显式身份验证 (--auth-token或--oauth-enabled).如果您试图在不保护它的情况下公开它,服务器将抛出致命错误。
对于远程访问或基于web的客户端,请在HTTP模式下运行服务器:
memory-journal-mcp --transport http --port 3000要绑定到所有接口(容器所需)并启用自动主动分析调度程序(例如每日摘要),您必须提供一个身份验证令牌:
export MCP_AUTH_TOKEN="your_secure_random_token"
memory-journal-mcp --transport http --port 3000 --server-host 0.0.0.0 --digest-interval 1440终点:
| 端点 | 描述 | 模式 |
|---|---|---|
GET / | 服务器信息和可用端点 | 两者 |
POST /mcp | JSON-RPC请求(初始化、工具/调用等) | 两者都有 |
GET /mcp | 服务器到客户端通知的SSE流 | 有状态 |
DELETE /mcp | 会话终止 | 有状态 |
GET /sse | 传统SSE连接(MCP 2024-11-05) | 状态良好 |
POST /messages | 传统SSE消息端点 | 有状态 |
GET /health | 健康检查({ status, timestamp }) | 两者都有 |
GET /.well-known/oauth-protected-resource | RFC 9728受保护资源元数据 | 两者都有 |
会话管理: 默认情况下,服务器使用有状态会话。包括 mcp-session-id 后续请求中的标头(从初始化返回)。
- OAuth 2.1 --RFC 9728/8414,JWT/JWKS,粒度范围(通过以下方式选择加入
--oauth-enabled) - 7安全标头 --CSP、HSTS(选择加入)、X-Frame-Options等
- 速率限制 --每个IP每分钟需要100个· 跨域资源共享 --可配置的多源(精确匹配)· 1MB车身限制
- 服务器超时 --请求(120秒),保持活动(65秒),标头(66秒)· 404处理器 · 跨协议警卫
- 建立来源 · 软件物料清单 · 供应链认证 · 非根执行
卷曲示例:
初始化会话(返回 mcp-session-id 头球
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'列出工具(带会话):
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: YOUR_SESSION_ID" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'无状态模式(无服务器)
对于无服务器部署(Lambda、Workers、Vercel),请使用无状态模式:
memory-journal-mcp --transport http --port 3000 --stateless| 模式 | 进度通知 | 传统SSE | 无服务器 |
|---|---|---|---|
| 有状态(默认) | ✅ 是 | ✅ 是 | ⚠️ 综合体 |
无国籍(--stateless) | ❌ 否 | ❌ 否 | ✅ 原住民 |
自动调度(仅限HTTP)
在HTTP/SSE模式下运行时,使用CLI标志启用定期维护作业。这些作业在进程中运行 setInterval --不需要外部cron。
注: 这些标志在stdio传输中被忽略,因为stdio会话是短暂的(与IDE会话绑定)。对于stdio,使用操作系统级调度(任务调度器、cron)或手动运行备份/清理工具。
memory-journal-mcp --transport http --port 3000 \
--backup-interval 60 --keep-backups 10 \
--vacuum-interval 1440 \
--rebuild-index-interval 720| 标志 | 默认值 | 描述 |
|---|---|---|
--backup-interval | 0(关闭) | 创建带时间戳的数据库备份并自动修剪旧备份 |
--keep-backups | 5 | 自动清理期间保留的最大备份数 |
--vacuum-interval | 0(关闭) | 运行 PRAGMA optimize 并将数据库刷新到磁盘 |
--rebuild-index-interval | 0(关闭) | 重建全矢量索引以保持语义搜索质量 |
每个作业都是错误隔离的——一个作业中的失败不会影响其他作业。调度程序状态(上次运行、结果、下次运行)可通过以下方式查看 memory://health.
GitHub集成配置
GitHub工具(get_github_issues, get_github_prs等)在以下情况下从git上下文中自动检测存储库 PROJECT_REGISTRY 配置或MCP服务器在git存储库中运行。
| 环境变量 | 描述 |
|---|---|
DB_PATH | 数据库文件位置(CLI: --db;默认值: ./memory_journal.db) |
TEAM_DB_PATH | 团队数据库文件位置(CLI: --team-db) |
TEAM_AUTHOR | 覆盖团队条目的作者名称(默认值: git config user.name) |
GITHUB_TOKEN | 用于API访问的GitHub个人访问令牌 |
DEFAULT_PROJECT_NUMBER | 创建问题时自动分配的默认GitHub项目编号 |
PROJECT_REGISTRY | 存储库的JSON映射 { path, project_number } 多项目自动检测与路由 |
AUTO_REBUILD_INDEX | 设置为 true 在服务器启动时重建向量索引 |
MCP_HOST | 服务器绑定主机(0.0.0.0 对于容器,默认值为: localhost) |
MCP_AUTH_TOKEN | HTTP传输身份验证的承载令牌(CLI: --auth-token).不得为默认占位符令牌。 |
ALLOWED_IO_ROOTS | 关键安全边界:逗号分隔的绝对路径,授予文件系统对代码模式和导出工具的访问权限(默认:无/失败关闭) |
MCP_CORS_ORIGIN | 允许HTTP传输的CORS源,逗号分隔(默认:空白,严格选择加入) |
MCP_RATE_LIMIT_MAX | 每个客户端IP每分钟的最大请求数,仅限HTTP(默认值: 100) |
LOG_LEVEL | 日志冗长: error, warn, info, debug (默认值: info;CLI: --log-level) |
MCP_ENABLE_HSTS | 在HTTP响应上启用HSTS安全标头(CLI: --enable-hsts;默认值: false) |
OAUTH_ENABLED | 设置为 true 启用OAuth 2.1身份验证(仅限HTTP) |
OAUTH_ISSUER | OAuth发行者URL(例如。, https://auth.example.com/realms/mcp) |
OAUTH_AUDIENCE | 预计JWT观众人数 |
OAUTH_JWKS_URI | 用于令牌签名验证的JWKS端点 |
OAUTH_CLOCK_TOLERANCE | JWT验证允许的时钟偏差容差(秒)(默认值: 5) |
CODE_MODE_MAX_RESULT_SIZE | mj_execute_code结果有效负载的最大大小(字节)(CLI: --codemode-max-result-size;默认值: 102400) |
CODEMODE_INTERNAL_FULL_ACCESS | 绕过代码模式沙箱中的工具筛选器约束(CLI: --codemode-internal-full-access;默认值: false) |
BRIEFING_ENTRY_COUNT | 简报中的日记条目(CLI: --briefing-entries;默认值: 3) |
BRIEFING_SUMMARY_COUNT | 在简报中列出会话摘要(CLI: --briefing-summaries;默认值: 1) |
BRIEFING_INCLUDE_TEAM | 在简报中包含团队数据库条目(true/false;默认值: false) |
BRIEFING_ISSUE_COUNT | 简报中列出的问题; 0 =仅计数(默认值: 0) |
BRIEFING_PR_COUNT | 在简报中列出PR; 0 =仅计数(默认值: 0) |
BRIEFING_PR_STATUS | 显示PR状态细分(打开/合并/关闭;默认值: false) |
BRIEFING_MILESTONE_COUNT | 简报中列出的里程碑; 0 =完全隐藏(CLI: --briefing-milestones;默认值: 3) |
BRIEFING_WORKFLOW_COUNT | 工作流程按照简报中的列表运行; 0 =仅状态(默认值: 0) |
BRIEFING_WORKFLOW_STATUS | 在简报中显示工作流状态细分(默认值: false) |
BRIEFING_COPILOT_REVIEWS | 在简报中汇总副驾驶审查状态(默认值: false) |
RULES_FILE_PATH | 代理感知用户规则文件的路径(CLI: --rules-file) |
SKILLS_DIR_PATH | 代理感知技能目录路径(CLI: --skills-dir) |
MEMORY_JOURNAL_WORKFLOW_SUMMARY | 自由文本工作流摘要 memory://workflows (CLI: --workflow-summary) |
INSTRUCTION_LEVEL | 简报深度: essential, standard, full (CLI: --instruction-level;默认值: standard) |
PROJECT_LINT_CMD | GitHub Commander验证门的Project lint命令(默认值: npm run lint) |
PROJECT_TYPECHECK_CMD | 项目类型检查命令(默认值: npm run typecheck;空=跳过) |
PROJECT_BUILD_CMD | 项目生成命令(默认值: npm run build;空=跳过) |
PROJECT_TEST_CMD | 项目测试命令(默认值: npm run test) |
PROJECT_E2E_CMD | 项目E2E测试命令(默认值:空=跳过) |
PROJECT_PACKAGE_MANAGER | 包管理器覆盖: npm, yarn, pnpm, bun (默认:从锁文件自动检测) |
PROJECT_HAS_DOCKERFILE | 启用Docker审计步骤(默认:自动检测) |
COMMANDER_HITL_FILE_THRESHOLD | 如果更改了人在循环检查点,则触摸>N个文件(默认值: 10) |
COMMANDER_SECURITY_TOOLS | 覆盖安全工具自动检测(逗号分隔;默认:自动检测) |
COMMANDER_BRANCH_PREFIX | PR的分支命名前缀(默认值: fix) |
AUDIT_LOG_PATH | 写入/管理工具调用的JSONL操作遥测日志的路径。以10MB的速度旋转(保留5个存档)。省略禁用遥测日志记录。 |
AUDIT_REDACT | 设置为 false 在遥测日志条目中包含工具参数(默认值: true) |
AUDIT_READS | 除了write/admin(CLI: --audit-reads;默认值: false) |
AUDIT_LOG_MAX_SIZE | 旋转前最大操作遥测文件大小(字节)(CLI: --audit-log-max-size;默认值: 10485760) |
MCP_METRICS_ENABLED | 设置为 false 禁用内存中的工具调用度量累积(默认值: true) |
FLAG_VOCABULARY | Hush协议(CLI: --flag-vocabulary;默认值: blocker,needs_review,help_requested,fyi) |
多项目工作流:为使代理商无缝支持多个项目,提供 PROJECT_REGISTRY.
动态上下文解析与自动检测
执行GitHub工具(问题、PR、上下文等)时,服务器按以下顺序解析存储库上下文:
- 动态项目路线:如果代理人通过
repo与您的密钥匹配的字符串PROJECT_REGISTRY,服务器动态挂载映射到该项目的物理目录。它在本地执行git命令并自动推断owner. - 显式覆盖:如果代理人同时提供这两种服务
owner和repo明确地说,这些值覆盖API调用的自动检测。 - 缺少上下文:没有
PROJECT_REGISTRY或者显式参数,服务器阻止执行并返回{requiresUserInput: true}以提示代理人。
自动项目路线(看板/问题)
打开问题或查看/移动看板卡时,服务器需要一个GitHub项目编号。它通过以下方式确定:
- 探索原始
project_number代理人通过的论点。 - 检查是否
repo字符串与您的PROJECT_REGISTRY,将其无缝映射到预配置project_number. - 回归全球定义
DEFAULT_PROJECT_NUMBER如果设置。
🔐 OAuth 2.1身份验证
对于生产部署,请在HTTP传输上启用OAuth 2.1身份验证:
| 组件 | 状态 | 描述 |
|---|---|---|
| 受保护的资源元数据 | ✅ | RFC 9728 /.well-known/oauth-protected-resource |
| 身份验证服务器发现 | ✅ | RFC 8414元数据发现与缓存 |
| 令牌验证 | ✅ | 支持JWKS的JWT验证 |
| 范围执行 | ✅ | 颗粒状的 read, write, admin 范围 |
| HTTP传输 | ✅ | 使用OAuth中间件的流式HTTP |
支持的范围:
| 范围 | 工具组 |
|---|---|
read | 核心、搜索、分析、关系、io |
write | github,团队(+所有阅读组) |
admin | 管理员、备份、代码模式(+所有写/读组) |
快速入门:
memory-journal-mcp --transport http --port 3000 \
--oauth-enabled \
--oauth-issuer https://auth.example.com/realms/mcp \
--oauth-audience memory-journal-mcp \
--oauth-jwks-uri https://auth.example.com/realms/mcp/protocol/openid-connect/certs或者通过环境变量:
export OAUTH_ENABLED=true
export OAUTH_ISSUER=https://auth.example.com/realms/mcp
export OAUTH_AUDIENCE=memory-journal-mcp
export OAUTH_CLOCK_TOLERANCE=5
memory-journal-mcp --transport http --port 3000注: OAuth是选择加入的。如果未启用,服务器将通过以下方式退回到简单的令牌身份验证 MCP_AUTH_TOKEN 或者在没有身份验证的情况下运行。🔄 会话管理
- 会话开始 → 代理读取
memory://briefing(或memory://briefing/{repo})并显示项目背景 - 会话摘要 → use
/session-summary捕捉进度和下一个会话上下文 - 下一场会议的简报包括前面的总结——上下文无缝衔接
🔧 配置
GitHub集成(可选)
export GITHUB_TOKEN="your_token" # For Projects/Issues/PRs范围: repo, project, read:org (仅组织级项目发现)
GitHub管理功能
内存日志提供 混合方法 GitHub管理层:
| 能力来源 | 目的 |
|---|---|
| MCP服务器 | 专业功能:看板可视化、里程碑、日志链接、项目时间表 |
| 代理(gh CLI) | 完整的GitHub突变:创建/关闭问题、创建/合并PR、管理发布 |
MCP服务器工具(阅读+看板+里程碑+问题生命周期):
get_github_issues/get_github_issue-查询问题get_github_prs/get_github_pr-查询拉取请求get_github_context-完整存储库上下文get_kanban_board/add_kanban_item/move_kanban_item/delete_kanban_item- 看板管理get_github_milestones/get_github_milestone- 里程碑跟踪完成百分比create_github_milestone/update_github_milestone/delete_github_milestone- CRUD里程碑get_repo_insights- 存储库流量和分析 (明星、克隆、观点、推荐人、热门路径)create_github_issue_with_entry/close_github_issue_with_entry- 期刊链接的问题生命周期
为什么是这个设计? MCP服务器专注于将日记条目与GitHub集成的增值功能(看板视图、里程碑、时间线资源、上下文链接)。标准GitHub突变(创建/关闭问题、合并PR、管理发布)由代理直接通过以下方式处理 gh CLI。****
GitHub指挥官工作流程
服务器原生捆绑了 github-commander 代理技能(可通过 memory://skills/github-commander).这为您的AI助手扩展了9个自主的DevOps工作流,用于存储库管理: 问题分类, 里程碑冲刺, 公关评论, 副驾驶审核, 安全性审计, 代码质量审核, 绩效审计, 路线图启动,以及 依赖关系更新.使用配置验证层 PROJECT_* 环境覆盖以在代理任务期间在本地强制执行CI匹配!
🏗️ 建筑
数据流
flowchart TB
AI["🤖 AI Agent
(Cursor, Windsurf, Claude)"]
subgraph MCP["Memory Journal MCP Server"]
Tools["🛠️ 70 Tools"]
Resources["📡 36 Resources"]
Prompts["💬 17 Prompts"]
end
subgraph Storage["Persistence Layer"]
SQLite[("💾 SQLite
Entries, Tags, Relationships")]
Vector[("🔍 Vector Index
Semantic Embeddings")]
Backups["📦 Backups"]
end
subgraph External["External Integrations"]
GitHub["🐙 GitHub API
Issues, PRs, Actions"]
Kanban["📋 Projects v2
Kanban Boards"]
end
AI |"MCP Protocol"| MCP
Tools --> Storage
Tools --> External
Resources --> Storage
Resources --> External堆栈
┌─────────────────────────────────────────────────────────────┐
│ MCP Server Layer (TypeScript) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ Tools (70) │ │ Resources (36) │ │ Prompts (17)│ │
│ │ with Annotations│ │ with Annotations│ │ │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Native SQLite Engine │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ better-sqlite3 │ │ sqlite-vec │ │ transformers│ │
│ │ (High-Perf I/O) │ │ (Vector Index) │ │ (Embeddings)│ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ SQLite Database with Hybrid Search │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ entries + tags + relationships + embeddings + backups ││
│ └─────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘______________________________________________________________________
🔧 技术亮点
性能和便携性
- TypeScript+原生SQLite -高性能
better-sqlite3具有同步I/O - sqlite-vc -通过SQLite扩展进行矢量相似性搜索
- @拥抱面/变压器 -在JavaScript中嵌入本地ML模型
- 背景预热 -模型权重(~23MB)在服务器启动时异步加载到内存中,以避免首次请求延迟。如果在预热完成之前调用服务器,则第一次语义搜索或向量插入将导致网络绑定冷启动(约1.5秒-3秒),而权重将在本地缓存。
性能基准
Memory Journal旨在在AI任务执行期间实现极低的开销。我们包括a vitest bench 保持这些基线保证的套件:
- 数据库读取:操作在几分之一毫秒内执行。
calculateImportance比检索50个最近的条目快13-14x。 - 矢量搜索引擎:搜索(~140-220ops/sec)和索引(~1600-1900+ops/sec
sqlite-vec使用SQL原生KNN查询。 - 核心MCP例程:
getTools使用缓存的O(1)调度(比get_recent_entries).create_entry和search_entries以亚毫秒级的开销通过整个MCP层执行。
要在本地运行基准测试套件:
npm run bench测试
在两个框架中进行了广泛测试:
| 套件 | 命令 | 封面 |
|---|---|---|
| Vitest(单元/集成) | npm test | 数据库、工具、资源、处理程序、安全性、GitHub、矢量搜索、codemode |
| 剧作家(e2e) | npm run test:e2e | HTTP/SSE传输、身份验证、会话、CORS、安全标头、调度器 |
npm test # Unit + integration tests
npm run test:e2e # End-to-end HTTP/SSE transport tests安全
- 确定性错误处理 -每个工具返回结构化
{success, error, code, category, suggestion, recoverable}具有可操作上下文的响应——没有原始异常,没有无声的失败,没有误导性的信息 - 本地优先 -所有数据存储在本地,没有外部API调用(可选的GitHub除外)
- 输入验证 -Zod模式、内容大小限制、SQL注入预防
- 路径遍历保护 -备份文件名已验证
- MCP 2025-03-26注释 -行为暗示(
readOnlyHint,destructiveHint等等) - HTTP传输强化 -7个安全标头、可配置的多源CORS、1MB主体限制、内置速率限制(100请求/分钟)、服务器超时、HSTS(选择加入)、30分钟会话超时、404处理程序、跨协议保护
- 令牌清理 -GitHub令牌和凭据从错误日志中自动编辑
数据和隐私
- 单个SQLite文件 -您拥有自己的数据
- 便携的 -移动你的
.db文件在任何地方 - 软删除 -条目可以恢复
- 还原时自动备份 -切勿意外丢失数据
______________________________________________________________________
📚 文档和资源
- **** -完整的文档
- 副驾驶设置指南 -IDE代理和GitHub Copilot之间的跨代理内存桥
- 部署指南 -CI/CD管道、环境和版本升级检查表
- **** -容器图像
- **** -Node.js发行版
- 问题 -Bug报告和功能请求
______________________________________________________________________
📄 许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
🤝 贡献
由开发者构建,为开发者服务。PR欢迎!看 贡献.md 作为指导方针。
______________________________________________________________________
_从v2.x迁移?_ 您现有的数据库完全兼容。TypeScript版本使用相同的模式和数据格式。
