Skip to content

Latest commit

 

History

34 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MemoMate · 中文生态 MCP 服务器集合 + 跨工具便携记忆

MemoMate

一个不断扩展的 MCP 服务器集合 + 便携、可导出的记忆库 —— 全部在一个 Python 仓库里。

简体中文  |  English


MemoMate 是一个项目里的两件事:

  1. servers/ —— 一组小而专注的 MCP 服务器,专为中文工具生态打造(arXiv、B 站、知乎、微信公众号……)。一个文件夹 = 一个服务器。这是主角。
  2. core/ —— 一个轻量、便携的记忆 MCP 服务器,基于 SQLite + FTS5。单文件存储、跨工具共享、可结构化查询。当 Claude Code 内置 memory 不够用时再用。

两者合起来展示了 MCP 端到端开发:广度(多个实用工具)+ 深度(一个有状态、可导出的存储)。

🌐 项目主页(单文件静态落地页):docs/index.html —— 本地双击即可打开;或在仓库 Settings → Pages → Source: main / /docs 一键发布为公网站点。


servers/ —— 主要看点

服务器 状态 功能
arxiv_search 可用 通过公开 Atom API 搜 arXiv 论文(零依赖)
bilibili_search 可用 搜 B 站视频 + 视频详情 + 取字幕转写(零依赖)
zhihu_search 可用 搜知乎问题与答案 + 取答案正文(零依赖)
weather_cn 可用 中文城市天气 + 3 天预报,wttr.in 免 key(零依赖)
github_trending 可用 GitHub 热门仓库 daily/weekly/monthly + 语言过滤(零依赖)
hackernews 可用 Hacker News 榜单(top/new/best/ask/show/job)+ 全文检索(官方 API + Algolia,零依赖)
wechat_mp 可用 解析公开微信公众号文章:标题/公众号/作者/时间/正文(零依赖)
stackoverflow 可用 搜 Stack Overflow 问题 + 取答案正文,官方 Stack Exchange API 免 key(零依赖)

每个 server 是一个独立的目录。新 server 按每日迭代节奏陆续上线。一页速查(每个 server 一句话 + 3 个示例 prompt)见 SERVERS.md。

针对各 IDE(Cursor、Claude Code、Trae、CodeBuddy、通义灵码 IDE……)的接入方式,参见下面的 接入你的 AI IDE。


为什么中国 AI IDE 用户需要 MemoMate?

国际 AI 编程工具(Cursor、Claude Code、Cline)擅长生成代码,但它们的 MCP 生态高度偏向西方栈 —— arXiv、GitHub、npm、Stack Overflow。中国开发者经常需要的东西,那些工具覆盖不到:

  • 搜 B 站 / 知乎 / 微信公众号上的技术文章和教程
  • 查 12306 火车班次、高德地图路线、豆瓣评分
  • 接入国内 SaaS,比如 Notion 国内、飞书、钉钉
  • 读国内 arXiv 镜像 / 中国知网,而不是慢吞吞的国际 arXiv

MemoMate 的 servers/ 集合恰好填补这个空白。 每个服务器都是一个聚焦于某个中文生态工具的小 MCP 服务器。任何 MCP 兼容的 IDE 都用同样的方式接入。

你常用的场景 对应的 MemoMate server 状态
找 B 站视频教程 bilibili_search ✅ 可用
查 arXiv 论文 arxiv_search ✅ 可用
搜知乎技术回答 zhihu_search ✅ 可用
查城市天气 / 出行参考 weather_cn ✅ 可用
读公众号长文 wechat_mp ✅ 可用
查火车票 / 排班 12306 🚧 计划中
看 GitHub 热门 github_trending ✅ 可用
刷 Hacker News / 搜 HN 帖 hackernews ✅ 可用
查 Stack Overflow 问答 stackoverflow ✅ 可用
查豆瓣电影 / 书评 douban 🚧 计划中
总结 arXiv 论文(本地 LLM) arxiv_summary 🚧 计划中(W09)
查 Notion workspace notion_query 🚧 计划中

如果你正在用 Trae / CodeBuddy / 通义灵码 IDE / Cursor / Claude Code,并且想让 AI 帮你 "找一下 B 站讲 LangGraph 的视频" 或者 "搜知乎上关于 RAG 评测的回答" —— MemoMate 就是为你做的。

接入你的 AI IDE

MCP 的 JSON 结构在所有客户端中完全一致(这是协议标准),不同的只是文件位置和编辑界面。

通用配置(任何接受 mcpServers 字段的地方都能塞进去):

{
  "mcpServers": {
    "memomate-bilibili": {
      "command": "uv",
      "args": ["run", "--directory", "D:/project/MemoMate", "memomate-bilibili"]
    },
    "memomate-arxiv": {
      "command": "uv",
      "args": ["run", "--directory", "D:/project/MemoMate", "memomate-arxiv"]
    },
    "memomate": {
      "command": "uv",
      "args": ["run", "--directory", "D:/project/MemoMate", "memomate-core"]
    }
  }
}

各 IDE 的配置位置

IDE 配置位置 备注
Cursor ~/.cursor/mcp.json(或项目级 .cursor/mcp.json) 直接编辑文件,然后重启 Cursor
Claude Code ~/.claude.json(或用 claude mcp add 命令) 推荐用 CLI,见下方
Trae(字节跳动) 设置 → AI 模型 / MCP Servers(菜单随版本变化) 把上方 mcpServers 的条目粘进去;或参考 Trae 官方文档
CodeBuddy(腾讯) 设置 → Extensions → MCP Servers 添加 stdio 类型,把命令与参数照 JSON 转写到 UI
通义灵码 IDE(阿里) 设置 → AI 增强 → MCP 服务器 新增 → stdio → 同上
Cline / Continue / Zed(VSCode/JetBrains 系扩展) 各自的 settings.json 里的 mcpServers 字段 格式相同

Claude Code CLI(推荐):

claude mcp add memomate-bilibili --scope user \
  -- uv run --directory D:/project/MemoMate memomate-bilibili

这就是 MemoMate 的核心价值 —— 同一个 server,所有 IDE 通用。在 Cursor 里搜的 B 站视频,用 save_memory 记下来,下次切到通义灵码 IDE 直接用 recall_memory 就能取出来。


HTTP 传输:多客户端共享一个进程

默认情况下,每个 server 都跑在 stdio 上 —— 由 IDE 拉起一个本地子进程,零网络面、零配置(上面所有接入示例都是这种方式)。每个 IDE 各起一个 server 子进程。

从这一版起,同一个 server 也可以跑在 HTTP 上,让本机的多个客户端(Claude Code + Cursor + 通义灵码 + 自己写的 Agent……)共享同一个 server 进程、同一份内存与缓存,而不是各起一份。传输层在启动时按 CLI flag / 环境变量选择,stdio 仍是默认 —— 已有的 stdio 配置无需任何改动。

实现采用 Streamable HTTP(MCP 2025 规范的标准 HTTP 传输;旧的 HTTP+SSE 已被规范弃用,但仍作为 --transport sse 保留)。

# 把 core 记忆 server 跑在 Streamable HTTP 上(默认绑 127.0.0.1:8000,路径 /mcp)
uv run memomate-core --transport streamable-http

# 自定义端口 / 路径(仍只对本机暴露)
uv run memomate-core --transport streamable-http --port 9000 --path /memory

# 任何工具 server 同理
uv run memomate-stackoverflow --transport streamable-http --port 8001

也可以用环境变量(CLI flag 优先级更高):

变量 作用 默认
MEMOMATE_TRANSPORT stdio / streamable-http / sse stdio
MEMOMATE_HOST HTTP 监听地址 127.0.0.1
MEMOMATE_PORT HTTP 监听端口 8000
MEMOMATE_HTTP_PATH HTTP 挂载路径 /mcp(SSE 为 /sse)

客户端接入 HTTP server(以 Claude Code 为例):

claude mcp add --transport http memomate-core http://127.0.0.1:8000/mcp

或在接受 mcpServers 的客户端里用 URL 形式(字段名各客户端略有差异):

{
  "mcpServers": {
    "memomate-core": {
      "type": "http",
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}

⚠️ 设计上只面向本机:HTTP 传输用于本机多客户端共享同一个 server 进程(替代 stdio 每个 client 各起一个子进程),不为跨机直连暴露而设。core 记忆 server 没有认证;底层 MCP SDK 也默认开启 DNS-rebinding 保护、只放行 127.0.0.1 / localhost / [::1] 的 Host 头。如果确有跨机访问需要,请套反向代理 + 鉴权,反代后端仍跑在 127.0.0.1。


core/ —— 可选的便携记忆服务器

一个长期记忆 MCP 服务器,存储后端是 SQLite + FTS5。数据保存在单个文件 ~/.memomate/memories.db 里,你可以:

  • 用任意 SQLite 工具直接查看(DB Browser、DataGrip)
  • 复制一个文件完成备份
  • 通过 Syncthing / Dropbox / Git 在多设备同步
  • 在不同 AI 客户端共享(Claude Code / Cursor / Continue / 任何 MCP 兼容客户端 —— 都用同一份记忆)
  • 用标签或全文搜索结构化查询

Claude Code 已经有内置 memory,为什么还要 MemoMate?

Claude Code v2.1+ 已经内置了优秀的 memory 功能 —— 你说"记住..."或"remember that..."时它会自动把内容写到 ~/.claude/projects/<project>/memory/*.md。对大多数工作流,这就够了 —— 内置 memory 才是你应该用的。

MemoMate 的 memory 服务器填补的是内置无法解决的场景:

需求 内置 memory MemoMate core/
日常"记住这个偏好" ✅ 最佳 大材小用
项目级笔记 ✅ 最佳 不够自然
跨工具记忆(Claude Code + Cursor + Continue + 自定义 Agent) ❌ 仅 Claude Code ✅ 任何 MCP 客户端
结构化查询(标签 + FTS5) ❌ 纯 markdown ✅ SQLite FTS5 + tag 字段
可编程导出 / 备份 / 检查 ⚠️ 散落的 markdown 文件 ✅ 单个便携 .db 文件
用户级(跨项目)事实 ⚠️ 单项目作用域 ✅ 存在 ~/.memomate/
在你自己的脚本里编程访问 ❌ 需要解析 markdown ✅ 标准 SQL

下面四行中有任意一个对你重要,就装 core/。如果都不需要,跳过 core/,只用上面的 servers 就够了。

如何明确触发 MemoMate 的 memory

由于 Claude Code 内置 memory 在通用的"记住 / remember"提示下有系统级优先级,想用 MemoMate 时要明确点名:

  • "save to MemoMate: ..."
  • "用 MemoMate 记一下:..."
  • "recall from memomate: ..."
  • "列出 memomate 里的记忆"

这个"显式路由"是有意的设计选择 —— 详见下方 与内置 memory 共存的设计思路。


快速开始

需要 Python 3.11+。本项目用 uv 做依赖管理。

# clone 并 install
git clone https://github.com/Mrduan-cloud/MemoMate.git
cd MemoMate
uv sync

# 跑 memory server(可选)
uv run memomate-core

# 跑一个工具 server
uv run memomate-arxiv

在 AI IDE 里注册

参见上方 接入你的 AI IDE 的完整说明,覆盖 Cursor、Claude Code、Trae、CodeBuddy、通义灵码 IDE、Cline、Continue、Zed。


架构

MemoMate/
├── core/                       # 记忆 MCP 服务器(可选)
│   ├── server.py               # FastMCP 入口,5 个工具
│   └── store.py                # SQLite + FTS5 存储(WAL + 线程安全,支持多客户端 / 多线程并发)
├── runtime/                    # 共享传输层:所有 server 经 run_server() 选 stdio / Streamable HTTP / SSE
└── servers/                    # 工具 MCP 服务器(主角)
    ├── arxiv_search/           # 可用
    ├── bilibili_search/        # 可用
    ├── zhihu_search/           # 可用
    ├── weather_cn/             # 可用
    ├── github_trending/        # 可用
    ├── hackernews/             # 可用
    ├── wechat_mp/              # 可用
    └── stackoverflow/          # 可用

Memory 工具(core/)

工具 作用
save_memory(content, tags?, source?) 把一条事实持久化到 SQLite
recall_memory(query, limit=5) 在已保存的记忆里做 FTS5 全文搜索
list_recent_memories(limit=10) 按反时间序列列出最近的记忆
forget_memory(memory_id) 按 id 硬删除
memory_stats() 返回总条数和 db 路径

加一个新的工具 server

  1. 在 servers/<name>/ 下建 __init__.py、__main__.py、server.py、README.md。
  2. 在 server.py 里暴露 mcp = FastMCP("memomate-<name>") 和 main() 入口。
  3. 在 pyproject.toml 的 [project.scripts] 注册为 memomate-<name>。

可以参考 servers/arxiv_search/ 的实现作为模板。


与内置 memory 共存的设计思路

开发过程中,我尝试通过强化工具 docstring 让 MemoMate 的 save_memory 成为"记住 X"提示的默认目的地。试了几轮 —— 强化描述、加显式路由提示 —— 都没能盖过 Claude Code 的内置 memory。它的优先级高于用户安装的 MCP 工具。

经验不是"Claude Code 内置赢了我的项目",而是:

当你的 MCP 服务器和宿主的官方功能重叠时,不要在同一个触发词上竞争。在能力维度差异化(可移植性、查询模型、导出格式),并要求显式路由。

这也是为什么 MemoMate 的主要定位从"你的记忆层"切换到了"你的便携记忆层 + 一组实用 MCP 服务器集合"。可移植性和 servers 集合才是内置 memory 给不了的价值。


License

MIT

About

Memory MCP Server for AI assistants, alongside a growing collection of utility MCP Servers

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages