Context7
Up-to-date docs for AI agents
作者提供的说明(英文原文)
A fully local MCP server for long-term memory with semantic search
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"longterm-memory": {
"command": "npx",
"args": [
"-y",
"longterm-memory-mcp"
]
}
}
}在终端中运行这条命令
claude mcp add longterm-memory -- npx -y longterm-memory-mcp粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"longterm-memory": {
"command": "npx",
"args": [
"-y",
"longterm-memory-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"longterm-memory": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"longterm-memory-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日
注册名称已通过 GitHub 账户 MarcelRoozekrans 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(1.6.1)于6天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Context7, Codebase Memory, Exa
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Up-to-date docs for AI agents
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
A fully local MCP server that gives AI agents persistent, semantic long-term memory — without any cloud dependencies.
Inspired by mcp-mem0, but runs 100% on your machine:
| Feature | mcp-mem0 | This project |
|---|---|---|
| Storage | PostgreSQL / Supabase | SQLite (Node's built-in node:sqlite) |
| Embeddings | OpenAI API | Local transformer (all-MiniLM-L6-v2) |
| Vector search | Cloud vector DB | In-process cosine similarity |
| LLM dependency | OpenAI / OpenRouter / Ollama | None |
| Setup | Database + API keys | `npx longterm-memory-mcp` |
| Tool | Description |
|---|---|
save_memory | Store text with auto-generated semantic embedding, tags, importance, and type |
search_memory | Find relevant memories using natural language queries (cosine similarity) |
update_memory | Modify an existing memory's content, metadata, tags, importance, or type |
delete_memory | Remove a specific memory by ID |
delete_all_memories | Wipe all memories (irreversible) |
get_all_memories | List all stored memories (paginated) |
memory_stats | Get count and database location |
| Tool | Description |
|---|---|
search_by_type | Filter memories by category (general, fact, preference, conversation, task, ephemeral) |
search_by_tags | Find memories matching any of the provided tags |
search_by_date_range | Find memories created within a specific date range (ISO format) |
| Tool | Description |
|---|---|
create_backup | Manually trigger a database backup with JSON export |
Install via the Claude Code marketplace — this sets up both the MCP server and a companion skill that teaches Claude how to use memory effectively:
/plugin marketplace add MarcelRoozekrans/LongtermMemory-MCP
/plugin install longterm-memory@longterm-memory-marketplace
This automatically:
long-term-memory skill (Claude learns to recall context at session start, save insights after tasks, and deduplicate memories)npx longterm-memory-mcp
npx keeps running the version it cached first and does not look for updates. To move to a new release, name the version, as in npx -y longterm-memory-mcp@1.6.0, or use @latest, which checks the registry on every start.
npm install -g longterm-memory-mcp
longterm-memory-mcp
git clone https://github.com/MarcelRoozekrans/LongtermMemory-MCP.git
cd LongtermMemory-MCP npm install && npm run build npm start
If you installed via the plugin marketplace, the MCP server is already configured. For manual setup, add to your MCP settings (~/.claude/settings.json or project .claude/settings.json):
{
"mcpServers": { "longterm-memory": { "command": "npx", "args": ["-y", "longterm-memory-mcp"] } } }
Add to claude_desktop_config.json:
{
"mcpServers": { "longterm-memory": { "command": "npx", "args": ["-y", "longterm-memory-mcp"] } } }
The repo includes agent instructions that teach AI agents how to use memory effectively (automatic recall, save patterns, deduplication):
| File | Purpose |
|---|---|
skills/long-term-memory/SKILL.md | Self-contained skill — auto-loaded by Claude Code plugin, can be referenced from any MCP client |
By default, memories are stored in a shared, user-scoped location:
~/.longterm-memory-mcp/memories.db
This means every project and every MCP client shares the same memory pool — you save a memory in one project and it's available everywhere.
Several sessions can use the same database at once. Each server process reads and writes the shared file directly (SQLite in WAL mode), so a memory saved in one session is visible to every other session right away, and no session overwrites what another saved. Requires Node.js 22.13 or later.
Databases from older releases open unchanged. A database from v1.0–1.3, which has no schema_meta table, is migrated in place with all its memories kept; a copy named memories.db.pre-migration- .bak is written next to it first.
Upgrading from 1.4 or earlier: stop every running session that uses the old version before starting one with the new version. Older releases keep the whole database in memory and rewrite the file on each save, so an old process left running would overwrite what new sessions saved.
To isolate memories for a specific project, set the MEMORY_DB_PATH environment variable:
{
"mcpServers": { "longterm-memory": { "command": "npx", "args": ["-y", "longterm-memory-mcp"], "env": { "MEMORY_DB_PATH": "/path/to/project/memories.db" } } } }
Each memory has a memory_type that determines how it's categorized and how quickly it decays:
| Type | Description | Decay half-life |
|---|---|---|
general | Default catch-all | 60 days |
fact | Verified information | 120 days |
preference | User/project preferences | 90 days |
conversation | Conversation context | 45 days |
task | Task-related notes | 30 days |
ephemeral | Short-lived context | 10 days |
["auth", "backend"]). Search with search_by_tags.core, identity, or pinned skip decay entirely.Memories decay over time to keep the store relevant:
Memory content is hashed (SHA-256) on save. If identical content already exists, the save is rejected with a reference to the existing memory ID. This prevents duplicate entries automatically.
Memories end up in the database and in its JSON backups, so content is filtered before it is stored:
… is never stored, embedded or hashed. An unclosed removes everything after it. Content that is empty once the spans are removed is rejected.save_memory and update_memory refuse content, metadata values and tags that look like a secret. The error names the pattern that matched and never the value.| Pattern | Matches |
|---|---|
private-key | PEM / OpenSSH / PGP private key headers (certificates are allowed) |
github-token | ghp_, gho_, ghu_, ghs_, ghr_ and github_pat_ tokens |
api-key | sk-… style API keys |
aws-access-key | AKIA… / ASIA… access key ids |
jwt | JSON Web Tokens |
slack-token | xoxb-, xoxp- and similar Slack tokens |
secret-assignment | random-looking values after password=, token:, secret=, api_key=, KEY= and similar. References ($VAR, ${{ … }}), placeholders (<…>), calls and plain words are allowed |
Configure it with environment variables:
{
"mcpServers": { "longterm-memory": { "command": "npx", "args": ["longterm-memory-mcp"], "env": { "MEMORY_GUARD_DISABLE": "jwt,slack-token", "MEMORY_GUARD_EXTRA_PATTERNS": "{\"internal-host\": \"\\\\b[a-z0-9-]+\\\\.corp\\\\.example\\\\b\"}" } } } }
MEMORY_GUARD_DISABLE: a comma-separated list of pattern names to turn off, or all for every built-in pattern. spans are removed either way. An unknown name stops the server at startup.MEMORY_GUARD_EXTRA_PATTERNS: a JSON object of extra patterns to reject, as name → regular expression.The guard applies to new saves and updates only. Memories stored before it existed are not rescanned.
The Claude Code plugin ships a UserPromptSubmit hook that recalls memories without the agent having to ask. On the first prompt of each session it searches with the prompt text and adds the best matches to the context as a short list:
Long-term memories that may be relevant (longterm-memory; search_memory gives the full text):
recall-sessions/ next to the database. Later prompts in that session cost one node start, about 30 ms, and no search.npx longterm-memory-mcp@ recall --hook, so a cached older copy is never used. The plugin's MCP server is pinned the same way.Configure it with environment variables in your Claude Code settings (env in ~/.claude/settings.json). The hook runs in Claude Code's environment, not the MCP server's, so a custom MEMORY_DB_PATH has to be set there too.
| Variable | Default | Meaning |
|---|---|---|
MEMORY_RECALL_ENABLED | true | false turns the hook off |
MEMORY_RECALL_K | 5 | at most this many memories (1–50) |
MEMORY_RECALL_THRESHOLD | 0.5 | minimum cosine similarity (-1 to 1) |
MEMORY_RECALL_MAX_TOKENS | 400 | cap on the injected block, estimated at 4 characters per token |
MEMORY_RECALL_STATE_DIR | /recall-sessions | where the once-per-session markers live; markers older than 30 days are removed |
The hook calls the recall subcommand, which also works on its own:
npx longterm-memory-mcp recall "how do we deploy the stack"
npx longterm-memory-mcp recall --k 3 --threshold 0.4 --project docker "deploy"
It prints the same list the hook injects, or No relevant memories found. on stderr. Options: --k, --threshold, --max-tokens and --project (default: the current directory's name, "" for none). It does not create a database that does not exist yet. With --hook it reads a Claude Code UserPromptSubmit event from stdin and answers with additionalContext.
Backups are managed automatically and can also be triggered manually via the create_backup tool.
只显示了开头部分;其余内容请在仓库中阅读