持久化内存与语义搜索服务

Muninn是一款MCP(模型上下文协议)服务器,为智能代理系统提供持久化内存和语义搜索功能,支持本地优先和隐私保护。

  • by sramkrishna
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 sramkrishna/muninn-mcp-server

使用说明

Muninn-内存MCP服务器

缪宁级 (Old Norse:Memory)是一个MCP(模型上下文协议)服务器,为代理AI系统提供持久内存和语义搜索功能。

Muninn以奥丁的记忆乌鸦(与思想乌鸦Hugin配对)命名,存储和回忆上下文信息,以实现智能桌面自动化和工作流学习。

特性

  • 混合存储:SQLite用于结构化查询+ChromaDB用于语义搜索
  • 本地优先:所有数据和嵌入都保留在您的机器上
  • 注重隐私:使用本地嵌入模型(无云API调用)
  • MCP兼容:适用于任何MCP客户端(Hugin、Claude Desktop等)

建筑

┌─────────────────────────────────────────┐
│            Muninn Memory Server          │
├─────────────────────────────────────────┤
│                                          │
│  ┌──────────────┐    ┌───────────────┐ │
│  │   SQLite     │    │   ChromaDB    │ │
│  │  (Structured)│    │   (Semantic)  │ │
│  └──────────────┘    └───────────────┘ │
│         ↑                    ↑          │
│         └────────┬───────────┘          │
│                  │                      │
│         ┌────────▼────────┐            │
│         │  Local Embedder │            │
│         │ sentence-trans. │            │
│         └─────────────────┘            │
│                                          │
│  Storage: ~/.local/share/muninn/        │
└─────────────────────────────────────────┘

安装

cd muninn-mcp-server
python3.13 -m venv .venv
source .venv/bin/activate
pip install -e .

用法

独立

muninn

使用Hugin(MCP客户端)

添加到 config.toml:

[servers.muninn]
command = "python3.13"
args = ["/path/to/muninn-mcp-server/src/muninn_mcp_server/server.py"]

可用工具

存储

  • store_event -使用自动嵌入功能存储桌面事件
  • store_pattern -存储检测到的行为模式
  • store_decision -记录代理决策和结果

检索(结构化)

  • query_events -基于SQL的结构化数据查询
  • get_recent_events -获取最近N个事件
  • get_events_by_type -按事件类型筛选

检索(语义)

  • semantic_search -按含义查找类似事件
  • get_context -获取当前形势的相关背景

分析

  • detect_patterns -在存储的数据中查找重复模式
  • get_statistics -汇总统计数据

数据存储

所有数据存储在本地:

~/.local/share/muninn/
├── muninn.db           # SQLite database
└── chroma/             # Vector embeddings

示例:商店桌面事件

# Via MCP client (e.g., Hugin + LLM)
await call_tool("store_event", {
    "event_type": "extension_change",
    "data": {
        "extension": "dash-to-panel",
        "action": "disabled",
        "reason": "causing crashes"
    },
    "description": "Disabled dash-to-panel extension due to repeated GNOME Shell crashes"
})

示例:语义搜索

# Find similar past issues
await call_tool("semantic_search", {
    "query": "extension stability problems",
    "limit": 5
})

隐私

  • 没有云API:本地生成的所有嵌入
  • 无遥测:所有数据都保留在您的机器上
  • 无外部依赖关系:SQLite和ChromaDB在本地运行

嵌入模型

用途 all-MiniLM-L6-v2 默认情况下为(80MB):

  • CPU速度快
  • 优质嵌入件
  • 完全离线运行

许可证

麻省理工学院