团队内存MCP服务器

AI编码代理共享团队记忆。A. 模型上下文协议 服务器,为Claude Code(和其他MCP客户端)提供持久、可搜索、实时的团队知识。
为什么
当多个开发人员在同一代码库上使用AI代理时,每个代理都从零上下文开始。Team Memory解决了这个问题:每个架构决策、任务、错误报告和约定都集中存储,并根据代理的角色自动显示。
特性
- 14个MCP工具 --读、写、搜索、同步、pin、导出、约定、入职、跨项目搜索
- PostgreSQL+pgvector --带俄语/英语词干的全文搜索,混合向量+FTS搜索
- 代理人身份 --每个代理令牌、不可伪造的作者归属、项目角色(开发人员/qa/负责人/deops)
- 角色感知自动召回 --代理接收按其角色优先排序的上下文(开发人员首先看到架构,QA首先看到错误)
- Web UI仪表板 --实时监控、知识图、条目管理、代理管理面板
- 实时同步 --跨所有连接代理的基于WebSocket的实时更新
- 6类 --架构、任务、决策、问题、进度、惯例
- 智能功能 --冲突解决(乐观锁定)、内存衰减、自动存档、版本历史
快速开始
1.启动PostgreSQL
docker compose up -d postgres2.启动服务器(HTTP模式)
DATABASE_URL="postgresql://memory:memory@localhost:5432/team_memory" \
MEMORY_TRANSPORT=http \
MEMORY_API_TOKEN="your-master-token" \
node dist/index.js打开 http://localhost:3846 对于仪表板。在管理面板中创建代理令牌。
3.配置克劳德代码
添加到您的项目 .mcp.json:
{
"mcpServers": {
"team-memory": {
"type": "http",
"url": "http://localhost:3846/mcp",
"headers": {
"Authorization": "Bearer ",
"X-Project-Id": "
"
}
}
}
}更换 ` 使用您的代理令牌(tm_...)以及 ` 使用仪表板中的项目UUID。
4.Docker Compose(全栈)
docker compose up -dMCP工具
| 工具 | 说明 |
|---|---|
memory_read | 使用筛选器(类别、域、搜索、标签)读取条目 |
memory_write | 创建新条目 |
memory_update | 更新现有条目(使用乐观锁定) |
memory_delete | 存档或永久删除 |
memory_unarchive | 恢复已存档的条目 |
memory_sync | 获取自时间戳以来的更改 |
memory_pin | 固定/取消固定条目(固定条目跳过自动存档) |
memory_export | 将条目导出为markdown或JSON |
memory_search | 语义向量搜索 |
memory_conventions | 管理项目惯例(添加/列出/删除) |
memory_onboard | 为新团队成员生成项目摘要 |
memory_cross_search | 搜索所有项目 |
代理身份和角色
每个团队成员都会得到一个个人令牌(tm_...).作者字段是从令牌中自动设置的,不可能进行欺骗。
系统访问:
- 主令牌(
MEMORY_API_TOKEN在.env)=admin,通过Web UI管理令牌 - 代理令牌=用户级访问权限
项目角色 (汽车召回订购的软偏见):
| 角色 | 优先类别 | 域 |
|---|---|---|
developer | 架构、决策、约定 | 后端、前端、数据库 |
qa | 问题、任务、约定 | 测试 |
lead | 进度、任务、决策 | 全部 |
devops | 架构、任务 | 基础设施、devops |
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
DATABASE_URL | -- | PostgreSQL连接字符串(必填) |
MEMORY_TRANSPORT | stdio | stdio (克劳德代码CLI)或 http (Web UI+远程) |
MEMORY_PORT | 3846 | HTTP服务器端口 |
MEMORY_API_TOKEN | -- | 主令牌(设置时启用身份验证) |
MEMORY_FTS_LANGUAGE | simple | PostgreSQL FTS配置(russian, english等等) |
OLLAMA_URL | http://localhost:11434 | Ollama服务器URL |
OLLAMA_EMBEDDING_MODEL | nomic-embed-text-v2-moe | 嵌入模型名称 |
MEMORY_AUTO_ARCHIVE | true | 启用自动存档 |
MEMORY_AUTO_ARCHIVE_DAYS | 14 | 自动存档前几天 |
MEMORY_CORS_ORIGIN | * | CORS生产来源 |
EXTRACT_NOTES_ENABLED | true | v4.5:从导入的会话中自动提取条目 |
EXTRACT_LLM_PROVIDER | gemini | gemini 或 ollama 用于提取LLM |
EXTRACT_MIN_CONFIDENCE | 0.6 | 将候选人降至LLM信心以下 |
EXTRACT_MIN_MARKER_STRENGTH | 0.3 | 删除没有明确“已决定”标记的候选人 |
EXTRACT_MAX_NOTES_PER_SESSION | 5 | 每个会话提取的条目上限 |
EXTRACT_MAX_MERGES_PER_SESSION | 3 | Cap-LLM每次会话合并 |
DEDUP_CONFIRM_THRESHOLD | 0.85 | 余弦≥→ 确认现有条目 |
DEDUP_MERGE_THRESHOLD | 0.7 | 余弦在\[0.7,0.85\]→合并 |
AUTO_DECAY_DAYS | 30 | Singleton自动记录存档时代 |
IMPORTANCE_RECOMPUTE_INTERVAL_HOURS | 24 | 重要性分数批量重新计算周期 |
自动笔记(v4.5)
通过导入会话 session_import 现在在后台扫描 原子,为什么要承载事实。每个事实都与现有事实进行了核对 通过余弦相似度输入:
- 得分>0.85 —
CONFIRM(增量确认_计数,不可编辑) - 0.7≤分数≤0.85 —
MERGE(LLM组合成一个≤500字符的事实) - **得分\",
"X-Project-Id": "" } } } }
替换 `` 您的代理代币(`tm_...`(a)联合国维持和平行动经费筹措的行政和预算问题咨询委员会的报告 `` UUID项目从Dashbord。
## 代理识别
每个团队成员都有一个个人代币(`tm_...`).记录作者自动从令牌中安装。
**系统访问:**
- 主令牌(`MEMORY_API_TOKEN` 在 `.env`)=管理员,通过Web UI管理令牌
- agent tokens=用户
**项目角色** (自动检索软优先级):
–角色›优先类别›域›
|------|----------------------|--------|
ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐ
【测试者】问题、挑战、会议
领导,任务,解决方案,一切。
–DevOps→架构、任务、基础设施、DevOps→
## 环境变量
变量是默认的,描述是
|------------|--------------|----------|
| `DATABASE_URL` PostgreSQL连接字符串(必填)
| `MEMORY_TRANSPORT` | `stdio` | `stdio` (克劳德代码命令行界面) `http` (WEB UI+远程)
| `MEMORY_PORT` | `3846` HTTP服务器端口
| `MEMORY_API_TOKEN` ◎Master Token(安装时启用AUTH)→
| `MEMORY_FTS_LANGUAGE` | `simple` FTS配置(`russian`, `english` 和博士。) |
| `OLLAMA_URL` | `http://localhost:11434` |网址:奥拉玛|
| `OLLAMA_EMBEDDING_MODEL` | `nomic-embed-text-v2-moe` 琥珀色模型
| `MEMORY_AUTO_ARCHIVE` | `true` 自动归档 |
| `MEMORY_AUTO_ARCHIVE_DAYS` | `14` 自动归档前几天
| `MEMORY_CORS_ORIGIN` | `*` |CORS起源|
## 安全
### 凭证
**不要在Production中使用违约密码!** 复制 `.env.example` 在 `.env` 更改密码:
cp .env.example .env
### HTTPS(反向代理)
对于Production,建议使用TLS进行Nginx反向代理:
server { listen 443 ssl; server_name memory.your-domain.com;
ssl_certificate /etc/letsencrypt/live/memory.your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/memory.your-domain.com/privkey.pem;
location / { proxy_pass http://127.0.0.1:3846; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
location /ws { proxy_pass http://127.0.0.1:3846; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
## 开发
npm install npm run build npm test # 140 тестов npm run clean # очистка dist/
## 许可证
麻省理工学院