记忆女神(或记忆女神之名,Mnemosyne在希腊神话中是记忆与记忆女神)
用于多智能体通信和持久状态管理的MCP服务器
问题
在多智能体系统中,Claude实例在48小时内达到上下文限制,每天消耗令牌预算直至崩溃。协调多个AI智能体需要消息传递、状态持久化和智能体发现。
解决方案轻量级的多代理基础设施,具备消息队列、状态持久化和代理注册功能。
特点/功能
代理管理
- 代理注册表创建并跟踪带有描述的人工智能代理
- 状态监控检查代理状态和未读消息数量
- 代理发现列出所有注册代理
消息传递
- 异步消息传递在代理之间发送消息
- 消息队列获取最新的、最旧的或所有未读消息
- 阅读追踪将消息标记为已读,自动更新未读消息数量
状态持久性
- 状态存储由代理保存带有时间戳的对话状态
- 快速检索在2秒内查询最新状态
- 历史搜索使用日期过滤检索多个状态
基础设施
- 文件日志记录所有操作均已记录至
server.log - 单一数据库带有自动迁移功能的 SQLite 文件
- 零配置开箱即用
建筑学(或“建筑”)
[Claude Desktop] → [MCP Server] → [SQLite]
↓
11 tools across 3 domains:
- Agents (3): create, status, list
- Messages (6): create, get, query, mark read
- States (3): save, get_latest, search栈(Stack)Node.js 22.19.0 + TypeScript + SQLite
安装
先决条件Node.js 22.19.0+ 和 Claude 桌面版
# Clone
git clone https://github.com/KevinMorales0/mnemosyne.git
cd mnemosyne
# Package
npm npx @anthropic-ai/mcpb pack在Claude Desktop中安装该软件包
使用方法
代理管理
"Create an agent named 'coordinator' with description 'Main orchestrator'"
"Get status for agent 'coordinator'"
"List all registered agents"消息传递
"Send a message from 'agent1' to 'agent2': Task completed successfully"
"Get the latest unread message for 'agent2'"
"Get all unread messages for 'agent2'"
"Mark message 5 as read"状态持久性
"Save state for 'coordinator': daily completed, no alerts, context under control"
"Get the latest state for 'coordinator'"
"Get the last 3 states for 'coordinator'"MCP 工具
代理工具
agent_create
- 输入:
agent_name,description - 输出创建的代理名称
agent_get_status
- 输入:
agent_name - 输出代理名称,当前日期/时间(含星期几),未读消息数量
agents_get_details
- 输入无
- 输出包含所有代理名称和描述的数组
消息工具
message_create
- 输入:
sender,receiver,content - 输出创建的消息ID
message_get_by_id
- 输入:
id - 输出消息详情(ID、发送者、接收者、内容、日期)
message_get_latest_unreaded
- 输入:
receiver - 输出接收者最新的未读消息
message_get_oldest_unreaded
- 输入:
receiver - 输出接收者最新的未读消息(注:原文中的“Oldest”若理解为“最新的”在语境上可能有些矛盾,因为通常“oldest”指最旧的,但在此处若理解为强调接收者消息中有未读的,且可能是指最新的一条未被特别强调为最旧的,为保持语句通顺,故译为“最新的未读消息”,实际翻译需根据具体语境调整)
messages_get_unreaded
- 输入:
receiver - 输出接收者所有未读消息的数组
message_set_as_readed
- 输入:
id - 输出消息ID(标记消息为已读,减少未读消息计数)
国家工具(或“政府工具”)
state_save
- 输入:
agent_name,content - 输出保存状态的日期时间
state_get_latest
- 输入:
agent_name - 输出最新状态内容 + 日期时间
states_get_latest
- 输入:
agent_name,states_back - 输出按DateTime降序排列的状态数组
用例
多智能体协调
- 协调代理创建工作代理
- 协调员通过消息发送任务
- 工作人员检查状态以查看未读消息
- 工作人员检索并处理消息
- 工作人员在完成任务时将消息标记为已读
状态管理
- 代理在会话结束时保存状态
- 协调器查询代理状态以进行健康检查
- 历史模式检测搜索
- 上下文延续中的状态检索
代理发现
- 新代理在启动时自动注册
- 协调员列出所有可用的代理
- 代理相互查询状态
演出
- 查询响应时间:\<2秒
- 存储:SQLite 文件每增加一个状态/消息大约增长 1KB
- 处理1000+个状态和消息而不出现性能下降
- 代理名称和时间戳的自动索引
- 基于文件的日志记录用于调试
技术选择
- TypeScript类型安全性和更佳的开发者体验
- SQLite嵌入式数据库,支持自动迁移
- 文件日志记录无需外部依赖的简单调试
- 仅限本地无需认证,无需网络,零配置
- MCP协议Claude桌面集成的标准接口
许可证
麻省理工学院(MIT)
