用途
amnesic 是一个 MCP 服务器,为 SQL 数据库提供持久化的语义记忆。每次 AI 会话开始时都是“冷启动”:你需要重新解释有哪些表、status 列的 3 代表什么、哪个外键连接 orders 和 users。amnesic 用一个按数据库保存的本地 SQLite 知识库解决这个问题,使这些注释和关系在会话之间持续存在。它把自己定位为介于“查询执行器”和“企业级数据目录”之间的第三种选择:具备数据目录级的语义记忆,但只有查询执行器的部署成本。
主要能力
- 持久化注释:为表和列添加注释,注释在重启、模型更新和新会话后依然保留。注释一次 status 枚举,未来每个会话自动看到标签。
- 关系图:发现并保存外键关系,未来的 JOIN 查询可直接使用该图。
- 可搜索知识库:使用 SQLite FTS5 与 BM25 排序进行关键词搜索,无嵌入、无外部服务。db_search 支持在大型模式中按关键词查找相关表/列,返回带描述和高亮片段的排序结果。
- 环境间同步:在 staging 中积累注释,然后同步到 prod。返回 {synced, skipped, warnings},目标模式中缺失的表会跳过并说明原因,缺失的列会警告但不阻塞其余同步。
- 可移植性:知识可导出、导入、清除、移除,即使没有数据库凭据也能操作本地文件。
- 只读安全设计:拒绝 INSERT、UPDATE、DELETE、DROP、TRUNCATE、ALTER、CREATE、EXEC、EXECUTE、MERGE、BULK、GRANT、REVOKE、DENY,包括隐藏在 WITH CTE 中的写入语句。只有 SELECT 和 WITH ... SELECT 能到达数据库。
使用方式
安装可通过三种方式之一:
- pipx(一次性安装):
- uv(单二进制替代,速度快,无需 Python):
- 普通 pip(安装到当前 Python 环境):
安装后 amnesic init 会询问数据库类型、主机和凭据,测试连接后再保存,密码安全存储在 ~/.config/amnesic/.env(chmod 600),连接块写入 ~/.config/amnesic/connections.toml。设置 $AMNESIC_HOME 或 $XDG_CONFIG_HOME 可覆盖存储位置。
若不想使用凭据,可运行 amnesic init --demo,它会添加一个自包含的 SQLite 示例数据库(电商模式:customers / products / orders,带外键和枚举列),让你在一分钟内试用所有工具。
稍后添加更多连接使用 amnesic add;轮换密码使用 amnesic set-secret,变量名是 connections.toml 中 ${...} 引用的环境变量名,向导自动生成为 <CONNECTION_NAME_UPPERCASE_WITH_UNDERSCORES>_PASSWORD。
将 amnesic 添加到 AI 客户端时,所有 MCP 客户端使用同一片段:
- Claude Code:使用一行安装,无需编辑 JSON(来源:SurajKGoyal/amnesic-marketplace)。
- Claude Desktop:添加到配置文件,macOS 为 ~/Library/Application Support/Claude/claude_desktop_config.json,Windows 为 %APPDATA%\Claude\claude_desktop_config.json,Linux 为 ~/.config/Claude/claude_desktop_config.json。
- Cursor:一键安装,或添加到项目 .cursor/mcp.json 或全局 ~/.cursor/mcp.json。
- VS Code(带 MCP 扩展):添加到 .vscode/mcp.json。
不使用全局安装时(临时方式),可用 uvx 或 pipx 在 MCP 客户端每次启动时获取,需显式传递驱动 extras,多驱动用逗号分隔,如 amnesic[postgres,mssql],或使用 amnesic[all]。
升级使用与安装相同的工具,然后重启 MCP 客户端。升级是安全的,注释不会丢失,知识文件在首次加载时自动迁移到新 schema,只会添加列,绝不删除数据。查看版本使用 amnesic --version。
管理连接和知识的命令:export / import / clear / remove,这些命令只操作本地文件,即使连接凭据未设置也能工作。remove 会以精准字符串编辑 connections.toml,保持其他块的格式和注释逐字节不变。
高级用法:若想自行管理配置文件,可生成空白模板,写出 ~/.config/amnesic/connections.toml 并退出向导。凭据使用 ${ENV_VAR},不要硬编码密码。密钥从 ~/.config/amnesic/.env 自动加载(格式 KEY=VALUE,每行一条,# 为注释)。规范连接名使用点号表示法,例如 orders.prod、orders.staging、analytics、local。
适用场景
- 单人开发者在自己的项目、开发库或测试数据上使用 Claude Pro / Cursor / Copilot。
- 查询个人 SQLite 或自托管 Postgres 的业余项目。
- 处理公开模式的开源维护者。
- 使用具有明确隔离的企业级 AI 的团队:AWS Bedrock(租户 + IAM)、Azure OpenAI(区域固定、自有订阅)、Anthropic Enterprise(零数据保留、退出训练)、Vertex AI(自有 GCP 项目)、自托管(Ollama、vLLM、本地 Claude/GPT,数据不出网络)。
- 任何使用付费 AI 计划、具有零保留保证和覆盖相关处理的 DPA 的用户。
限制
- 不执行插入、更新、删除等写入操作,也不提供执行计划、索引建议或数据库健康诊断——这些不是它的职责,应配合查询执行器使用。
- 数据库本身并不知道列的含义,只有通过 amnesic 的注释层才能提供语义。
- 若数据库保存他人数据(用户、客户、患者)且未确认 AI 提供商条款覆盖该处理,或使用消费级 AI 处理受监管数据(HIPAA 覆盖实体的 PHI、PCI-DSS 持卡人数据、GDPR 或印度 DPDP 法案下的受限 PII),或雇主政策限制在生产库使用外部 AI 工具,或受数据驻留规则约束,需要更谨慎评估。
- 信任边界取决于 MCP 客户端将数据发送到哪里,而不是 amnesic 本身。
- 文档中未提供具体的收费、价格、平台兼容性细节之外的更多信息。