LLM记忆服务器

为多个AI平台提供共享记忆服务,实现跨平台记忆同步与检索。

  • by ranjanjyoti152
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ranjanjyoti152/LLM-MCP

使用说明

🧠 LLM内存MCP服务器

你的人工智能助手终于有了一个共享的大脑。

一个记忆。每个平台。零上下文丢失。

保存一个事实 光标 → 回忆一下 克劳德 → 在中搜索 VS Code → 在中更新它 双子座 → 到处都是。



🔥 为什么2000多名开发人员正在转向共享AI内存

无LLM内存 有LLM内存
😤 “我已经告诉克劳德我的技术栈了……” 🧠 每个AI都知道你在第一条消息上的堆栈
😤 “Cursor不知道我在Copilot做了什么…” 🧠 始终提供完整的跨平台环境
😤 “我一直在重复我的偏好…” 🧠 首选项自动检测并自动保存
😤 “我的AI忘记了我们的整个调试过程…” 🧠 对话保留可搜索的历史记录
😤 “我丢失了那个有用的代码片段…” 🧠 程序内存存储每个模式

⚡ 是什么让这与众不同

🏗️ 4层内存架构

不仅仅是一个键值存储。A. 认知记忆系统 受到人类记忆的启发:

  • 短期的 --工作上下文(自动过期)
  • 语义 --事实、偏好、决定(永久)
  • 情节性的 --对话历史记录(可搜索)
  • 程序性 --代码模式和操作方法

🔍 混合AI搜索

每 recall 查询搜索 一次全部4层,排名如下:

Score = semantic_similarity × 0.30
      + text_relevance     × 0.20
      + recency            × 0.25
      + importance          × 0.25

由...驱动 pgvector HNSW + GIN全文 指数。

🤖 自动注入智能

当任何AI连接时,它 自动地:

  1. 开始时加载您的工作上下文
  2. 回忆与主题相关的记忆
  3. 静默检测并保存偏好
  4. 最后保存对话
  5. 提取知识并巩固记忆

无需手动提示。

⚔️ 跨平台冲突解决

当 光标 说“用户更喜欢标签”和 克劳德 说“用户更喜欢空格”:

  • 🔍 自动检测 通过向量相似性
  • 📋 冲突队列 并排比较
  • 🎯 4种解决策略:保持现有,使用新,合并,两者都保留
  • 📊 版本历史 每一次知识变化

🚀 快速开始

从0到共享AI内存需要60秒。

先决条件

选项A:一个命令设置(推荐)

git clone https://github.com/ranjanjyoti152/LLM-MCP.git
cd LLM-MCP
./setup.sh

安装脚本会自动检测 光标、VS代码、Gemini CLI、Claude Desktop、Windsurf 并生成配置文件。

选项B:手动

git clone https://github.com/ranjanjyoti152/LLM-MCP.git
cd LLM-MCP
docker compose up -d --build

验证

docker compose ps
# llm-mcp-postgres    Up (healthy)   0.0.0.0:4569->5432
# llm-mcp-ollama      Up (healthy)   0.0.0.0:9050->9050
# llm-mcp-server      Up             0.0.0.0:4040->4040
# llm-mcp-dashboard   Up             0.0.0.0:4041->4041

第一次开机需要几分钟。 Ollama拉 nomic-embed-text 在报告健康之前嵌入模型(~274MB),服务器+仪表板等待健康检查。看着它 docker compose logs -f ollama(如果Ollama在请求时无法访问,服务器将回退到本地哈希嵌入器,因此写入仍然成功。)

试试看!

问你的AI:

“保存一个知识条目:我更喜欢Python作为后端,TypeScript作为前端。”

切换至 任何其他AI 并询问:

“我的编程语言偏好是什么?”

✨ 它记得。 跨越每一个平台。永远。


📊 Web仪表板

住在 http://localhost:4041 --功能齐全的内存管理UI。

📈 Overview
Bento grid metrics, health stats, platform charts
🧠 Knowledge
Search, filter, version history per entry
📝 Conversations
Full episodic memory with message threads
⚔️ Conflicts
Side-by-side comparison, 1-click resolve
🕐 Timeline
Unified activity feed across all memory types
🔧 Maintenance
Cleanup, consolidate, decay, compress

8个选项卡 ·黑暗主题·自动刷新·Chart.js可视化·冲突解决UI·版本历史模型


🏗️ 建筑

┌─────────────────────────────────────────────────────────────────────────┐
│                           AI PLATFORMS                                   │
│                                                                         │
│  ┌──────────┐ ┌────────┐ ┌─────────┐ ┌────────┐ ┌───────┐ ┌────────┐  │
│  │ Windsurf │ │ Cursor │ │ VS Code │ │ Claude │ │Gemini │ │ Codex  │  │
│  └─────┬────┘ └───┬────┘ └────┬────┘ └───┬────┘ └──┬────┘ └───┬────┘  │
│        └───────────┴──────────┴──────────┴─────────┴──────────┘        │
│                                │                                        │
└────────────────────────────────┼────────────────────────────────────────┘
                                 │ MCP (Streamable HTTP)
                                 ▼
        ┌────────────────────────────────────────────────┐
        │         🧠 LLM Memory MCP Server :4040         │
        │                                                │
        │  39 Tools · 9 Prompts · 3 Resources            │
        │  Auto-injected instructions for every LLM      │
        │  Background scheduler (cleanup/decay/compress)  │
        │  Version tracking · Conflict resolution         │
        │                                                │
        │  📊 Dashboard UI :4041                          │
        │  19 REST endpoints · 8-tab interface            │
        └────────────────────┬───────────────────────────┘
                             │
                             ▼
        ┌────────────────────────────────────────────────┐
        │       PostgreSQL 16 + pgvector :4569            │
        │                                                │
        │  ┌─────────┐ ┌──────────┐ ┌───────────┐       │
        │  │Episodic  │ │ Semantic │ │Short-term │       │
        │  │convos +  │ │knowledge │ │TTL-expire │       │
        │  │messages  │ │+ vectors │ │+ consolid │       │
        │  └─────────┘ └──────────┘ └───────────┘       │
        │  ┌─────────┐ ┌──────────┐ ┌───────────┐       │
        │  │Procedural│ │Versions  │ │Conflicts  │       │
        │  │code snips│ │changelog │ │cross-plat │       │
        │  └─────────┘ └──────────┘ └───────────┘       │
        │                                                │
        │  HNSW vector index + GIN full-text index       │
        │  Hybrid search: semantic + keyword ranking      │
        └────────────────────────────────────────────────┘

🎯 支持平台

平台 运输 状态
帆板运动 流式HTTP ✅ 准备好了
光标 流式HTTP ✅ 准备好了
VS Code +GitHub Copilot 流式HTTP ✅ 准备好了
克劳德桌面版 可流式传输HTTP/stdio ✅ 准备好了
Gemini CLI 流式HTTP ✅ 准备好了
反重力 (谷歌) 流式HTTP ✅ 准备好了
ChatGPT (MCP兼容) 流式HTTP ✅ 准备好了
法典 (OpenAI) 流式HTTP ✅ 准备好了
任何兼容MCP的客户端 可流式传输HTTP ✅ 准备好了

🔧 平台配置

帆板运动

选项A --通过用户界面: 设置→ MCP → 添加服务器 → 粘贴URL。

选项B --配置文件(.windsurf/mcp_config.json):

{
  "mcpServers": {
    "llm-memory": {
      "serverUrl": "http://localhost:4040/mcp"
    }
  }
}

反重力(谷歌)

选项A --通过UI:转到 设置→ MCP服务器→ Add 并粘贴URL。

选项B --通过配置文件(mcp_config.json):

{
  "mcpServers": {
    "llm-memory": {
      "serverUrl": "http://localhost:4040/mcp"
    }
  }
}

光标

选项A --通过用户界面: 设置→ MCP服务器→ 添加新的MCP服务器

选项B --项目级配置(.cursor/mcp.json):

{
  "mcpServers": {
    "llm-memory": {
      "url": "http://localhost:4040/mcp"
    }
  }
}

选项C --全局配置(~/.cursor/mcp.json)--适用于所有项目。


VS代码+GitHub副本

选项A --通过命令面板: Ctrl+Shift+P → MCP: Add Server → HTTP → enter http://localhost:4040/mcp

选项B --工作区配置(.vscode/mcp.json):

{
  "servers": {
    "llm-memory": {
      "type": "http",
      "url": "http://localhost:4040/mcp"
    }
  }
}

选项C --用户设置(全局):将相同的配置添加到您的VS Code用户 settings.json 在...之下 "mcp".


Gemini CLI

编辑 ~/.gemini/settings.json:

{
  "mcpServers": {
    "llm-memory": {
      "httpUrl": "http://localhost:4040/mcp"
    }
  }
}

克劳德代码(CLI)

选项A——一个命令(HTTP):

claude mcp add --transport http llm-memory http://localhost:4040/mcp

选项B——通过Docker本地(stdio):

claude mcp add llm-memory -- docker exec -i llm-mcp-server python server.py stdio

添加 --scope user 使用任一命令,使服务器在所有项目中都可用(默认范围是当前项目)。证实 claude mcp list.

A. project-memory 技能也在船上 .claude/skills/ --服务器连接后,调用/保存/压缩行为会自动触发,就像安装技能一样。


克劳德桌面版

选项A——本地(最佳性能): 直接通过Docker连接——不需要额外的工具。

首选 设置→ 开发者→ 编辑配置 (claude_desktop_config.json):

{
  "mcpServers": {
    "llm-memory": {
      "command": "docker",
      "args": [
        "exec",
        "-i",
        "llm-mcp-server",
        "python",
        "server.py",
        "stdio"
      ]
    }
  }
}

ChatGPT/Codex/其他MCP客户端

对于通过HTTP支持MCP的任何平台,请使用:

Endpoint:   http://localhost:4040/mcp
Transport:  Streamable HTTP (JSON-RPC over POST with optional SSE streaming)

🛠️ 39 MCP工具

💬 Conversations (Episodic Memory)
工具 它做什么
save_conversation 保存包含消息、元数据、重要性、结果的完整对话
search_memory 所有对话的全文+语义搜索
get_recent_conversations 按平台分类的最新对话
get_conversation_by_id 检索包含所有消息的特定对话
add_message_to_conversation 将消息附加到现有对话中
tag_conversation 添加/删除标签
delete_memory 按ID删除对话或知识
🧠 Knowledge (Semantic Memory)
工具 它做什么
save_knowledge 存储事实/偏好/指示/决定
save_knowledge_smart 冲突感知保存 --检测重复项和跨平台冲突
search_knowledge 按查询、类别、标签搜索
list_all_knowledge 带类别过滤器的分页列表
get_knowledge_by_category 一个类别中的所有条目
get_related_knowledge 按向量接近度分类的类似条目
update_knowledge 更新为 自动版本快照
auto_extract_preferences 从对话文本中批量提取首选项
get_context_summary 结合知识+对话语境
⏱️ Working Memory (Short-term)
工具 它做什么
save_short_term_memory 使用TTL自动到期保存瞬态上下文
get_working_context 加载所有活动会话上下文
consolidate_memories 推广重要STM→ 长期知识
💻 Code & Projects (Procedural Memory)
工具 它做什么
save_code_snippet 使用语言、标签和描述保存可重用代码
search_code_snippets 按关键字、语言、标签搜索
save_project_context 保存项目级技术栈和架构
get_project_context 按名称检索项目上下文
🔍 Search & Retrieval
工具 它做什么
recall 主要的 --一次搜索所有4个内存层,按综合得分排名;通过 project 促进主动回购
search_by_tags 跨类型标签搜索
compact_context 令牌保护程序 --将庞大的上下文块卸载到内存中,返回密集的摘要+回忆句柄
⚔️ Versioning & Conflicts
工具 它做什么
knowledge_history 任何知识输入的完整版本时间表
rollback_knowledge 还原到任何以前的版本
list_conflicts 查看未决/已解决的跨平台冲突
resolve_conflict 用策略解决:保持存在、使用新、合并、保持两者
🔧 Maintenance & Utility
工具 它做什么
count_memories 统计所有内存类型
summarize_platform_activity 每个平台的统计数据
cleanup_expired_memories 删除过期的STM和知识
decay_memories 降低旧记忆的重要性
export_memories 完整JSON备份
import_memories 从备份还原(带数据消除)
clear_platform_data 删除平台的所有数据⚠️

📡 3 MCP资源

URI 描述
memory://stats 数据库统计和计数
memory://platforms 所有存储数据的平台
memory://health 所有内存层的系统健康状况

🎯 9个智能提示

关键工作流的自动发现提示模板:

提示 它做什么
start_conversation 使用全内存上下文进行初始化
end_conversation 保存一切+提取知识
compact_now 将长上下文卸载到内存中以减少令牌使用
save_user_preference 结构化偏好存储
recall_everything 在所有内存中进行深度搜索
resolve_all_conflicts 指导性冲突解决
memory_maintenance 运行所有维护任务
onboard_new_user 首次设置和偏好捕获
debug_session 上下文感知调试工作流

💬 将提示作为命令调用

MCP提示显示为 斜杠命令,但确切的语法取决于平台。服务器注册为 llm-memory 在上述所有配置中。提示参数在命令后以空格分隔传递。

Claude Code (CLI)

提示显示为 /mcp__<server>__<prompt>:

/mcp__llm-memory__start_conversation claude-code "auth refactor"
/mcp__llm-memory__recall_everything "database decisions"
/mcp__llm-memory__compact_now my-repo claude-code
/mcp__llm-memory__end_conversation claude-code "Auth refactor" success

跑 /mcp 列出连接的服务器并浏览其提示。您通常不需要这些命令——在服务器连接的情况下,回调/保存/压缩会自动发生——但这些命令是用于显式控制的。

VS Code + GitHub Copilot

提示在Copilot聊天中显示为 /mcp.<server>.<prompt>:

/mcp.llm-memory.start_conversation
/mcp.llm-memory.recall_everything

类型 / 在聊天框中查看列表;聊天会提示你每个论点。

Claude Desktop

点击 + 消息框中的(附件)按钮,选择 llm-memory,然后从列表中选择一个提示。在提示时填写参数。将表面提示为可重复使用的模板,而不是键入斜线命令。

Gemini CLI

MCP直接提示注册为斜线命令:

/start_conversation
/recall_everything

跑 /mcp 查看连接的服务器及其可用提示。

Cursor / Windsurf / ChatGPT

这些客户专注于 自动调用工具 而不是斜线命令提示。只需用自然语言描述你想要什么,模型就会调用底层工具:

"Recall everything you know about this project's database decisions."
"Save this preference: I always use async/await."
"Compact this conversation into memory to save tokens."

同样的 recall / save_knowledge_smart / compact_context 工具在下面运行。


🧬 自动注射行为

当任何AI连接到此MCP服务器时,它 自动接收行为指令 --无需用户操作:

┌─────────────────────────────────────────────────────────────┐
│  CONVERSATION START (automatic)                              │
│  1. get_working_context() — load session context             │
│  2. recall("<topic>") — search all memory for relevance      │
│  3. Personalize response using recalled memories             │
│  4. save_short_term_memory() — track current task            │
├─────────────────────────────────────────────────────────────┤
│  DURING CONVERSATION (automatic, silent)                     │
│  • Detect preferences → save_knowledge_smart()               │
│  • Detect facts → save_knowledge_smart()                     │
│  • Detect decisions → save_knowledge_smart()                 │
│  • Detect code patterns → save_code_snippet()                │
│  • All saves are conflict-aware (dedup + cross-platform)     │
├─────────────────────────────────────────────────────────────┤
│  CONVERSATION END (automatic)                                │
│  1. save_conversation() — with importance + outcome          │
│  2. auto_extract_preferences() — batch knowledge extraction  │
│  3. consolidate_memories() — promote STM → long-term         │
└─────────────────────────────────────────────────────────────┘

结果: 每个AI助手从连接的那一刻起就具有记忆感知能力。没有设置。没有提示。它只是工作。


📁 项目结构

LLM-MCP/
├── server.py               # MCP server — 39 tools, 9 prompts, 3 resources
├── db.py                   # Async DB layer (asyncpg + pgvector + FTS)
├── embeddings.py           # Embedding engine (local/ollama/openai)
├── dashboard.py            # REST API for web dashboard (Starlette)
├── static/
│   └── index.html          # Dashboard UI (Tailwind + Chart.js)
├── prompts/
│   ├── system_prompt.md    # Standalone system prompt for any LLM
│   └── quick_prompts.md    # 12 copy-paste prompt templates
├── docker-compose.yml      # PostgreSQL + MCP Server + Dashboard
├── Dockerfile              # Python 3.12 slim container
├── setup.sh                # One-command auto-setup script
├── .env                    # Environment configuration
├── requirements.txt        # Python dependencies
├── test_client.py          # End-to-end test suite
├── test_versioning.py      # Versioning & conflict resolution tests
└── test_prompts.py         # MCP prompt discovery tests

⚙️ 配置

所有设置通过 .env:

变量 默认值 描述
POSTGRES_PORT 4569 PostgreSQL主机端口
MCP_PORT 4040 MCP服务器端口
DASHBOARD_PORT 4041 仪表板UI端口
POSTGRES_USER mcp_user 数据库用户
POSTGRES_PASSWORD mcp_secure_pass_2026 数据库密码
POSTGRES_DB mcp_memory 数据库名称
EMBEDDING_PROVIDER ollama local / ollama / openai
OLLAMA_PORT 9050 捆绑的Ollama API的主机端口
OLLAMA_MODEL nomic-embed-text 嵌入模型Ollama拉上第一个启动(~274MB)
OLLAMA_DIM 768 矢量维度——仅在切换到非768维模型时才更改
MAINTENANCE_INTERVAL_MINUTES 30 后台调度程序间隔

局域网接入

替换 localhost 使用远程AI平台的机器IP:

http://192.168.x.x:4040/mcp       # MCP Server
http://192.168.x.x:4041            # Dashboard

🗄️ 数据库模式

8张桌子 使用混合搜索索引:

┌─────────────────┐     ┌──────────────────┐
│  conversations   │────▶│    messages       │  Episodic memory
│  (importance,    │     │  (role, content,  │
│   outcome,       │     │   embedding)      │
│   embedding)     │     └──────────────────┘
└─────────────────┘

┌─────────────────┐     ┌──────────────────┐
│   knowledge      │────▶│knowledge_versions│  Semantic memory
│  (category,      │     │  (version, diff,  │  + version history
│   version,       │     │   changed_by)     │
│   embedding)     │     └──────────────────┘
└─────────────────┘

┌─────────────────┐     ┌──────────────────┐
│short_term_memory │     │memory_conflicts  │  Working memory
│  (TTL, context,  │     │  (existing vs    │  + conflict tracking
│   consolidated)  │     │   conflicting)   │
└─────────────────┘     └──────────────────┘

┌─────────────────┐     ┌──────────────────┐
│  code_snippets   │     │    projects       │  Procedural memory
│  (language,      │     │  (tech_stack,     │  + project context
│   embedding)     │     │   architecture)   │
└─────────────────┘     └──────────────────┘

指标: HNSW(向量相似性)+GIN(全文搜索)+B-tree(重要性、过期)用于亚毫秒混合查询。


🧪 测试

# Full test suite
python test_client.py

# Versioning & conflict resolution
python test_versioning.py

# MCP prompt discovery
python test_prompts.py
Manual verification commands
# Check services
docker compose ps

# PostgreSQL direct query
docker exec llm-mcp-postgres psql -U mcp_user -d mcp_memory \
  -c "SELECT COUNT(*) as knowledge FROM knowledge;"

# MCP server logs
docker logs -f llm-mcp-server

# Dashboard logs
docker logs -f llm-mcp-dashboard

# Restart everything
docker compose restart

📋 Docker命令

命令 描述
docker compose up -d --build 启动所有服务
docker compose down 停止所有服务
docker compose logs -f mcp-server 流式服务器日志
docker compose logs -f dashboard 流式仪表板日志
docker compose down -v 停下& 删除所有数据 ⚠️

🔒 安全

  • 绑定到 127.0.0.1 仅适用于本地: MCP_HOST=127.0.0.1
  • 改变 POSTGRES_PASSWORD 生产中
  • 添加带有TLS的反向代理(nginx/Caddy)以进行远程访问
  • 默认情况下无身份验证——专为本地/可信网络使用而设计

🗺️ 路线图

  • [x] 基于pgvector嵌入的语义搜索
  • [x] 自动对话摘要(压缩)
  • [x] 内存过期和存档策略
  • [x] 后台维护调度程序
  • [x] 多层记忆(短期、语义、情景、程序)
  • [x] 重要性评分和基于时间的衰减
  • [x] 一个命令自动设置脚本
  • [x] 内存版本控制和更改跟踪
  • [x] 跨平台冲突解决
  • [x] 具有实时可视化功能的Web仪表板
  • [x] 自动注入行为指令
  • [x] MCP提示工作流
  • []用于多用户的身份验证/API密钥
  • []关于新记忆的Webhook通知
  • []用户之间的内存共享
  • []云托管选项(不需要Docker)
  • []移动伴侣应用程序

🤝 贡献

  1. 叉子 存储库
  2. 创建 特征分支(git checkout -b feature/amazing-feature)
  3. 提交 您的更改(git commit -m 'Add amazing feature')
  4. 推 到分行(git push origin feature/amazing-feature)
  5. 打开 拉取请求

欢迎所有贡献——功能、错误修复、文档、翻译。


📄 许可证

MIT许可证——见 许可证 了解详情。


⭐ 如果这个项目能让你避免在人工智能面前重复自己,那就给它一颗星吧!

标记此回购 · 报告错误 · 请求功能


内置于❤️ 通过 兰杰约蒂152

别再重复了。让你的AI共享一个大脑。


如果你觉得这很有用,可以考虑与使用多种人工智能工具的其他开发人员分享。