关于 Emerald
Emerald 是供个人和 AI 模型共同维护结构化记录的本地文件型 SQLite 工作区,提供明确的数据类型、校验规则和断言。其 MCP 服务通过专用读写工具操作文件,提交前预览写入,并可在支持 MCP Apps 的客户端中呈现视图。
主要功能
- 01在 .emd 文件中保存类型化表格和校验规则
- 02关联格式并跨记录计算汇总
- 03检查断言并显示失败或未检查结果
- 04导入电子表格、CSV、JSON、Markdown 和文件夹
- 05提交前预览写入并在修改前保留副本
- 06在支持的客户端中呈现表格、看板和路线图
适用场景
- 01根据提供的账单和报告追踪个人财务
- 02以行记录保存项目决策、里程碑和待解问题
- 03将文件导入经过校验且可复用的表格格式
- 04在 AI 对话中检查或可视化结构化记录
MCP 相关
MCP 服务通过专用工具读写 Emerald 文档,而非提供通用查询。写入在提交前均为试运行,修改前会在文档旁保存副本;支持 MCP Apps 的客户端可显示渲染视图。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
85收录的工具列表 · 更新于 5 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | 此计算机上 .emd 文件的绝对路径。 |
| format | string | 否 | 按名称指定的一种已声明格式,用于获取其完整列清单。 |
详细介绍
Emerald
聊天背后的数据库。 一个本地文件数据库,由你和 AI 模型共同填入;每张表都有真正的类型和约束,因此你们整理出的内容始终准确。 免费软件,采用 AGPL-3.0。仅限桌面端,无服务、无需账户。getemerald.dev
Emerald 是什么
- 文档就是一个文件。
.emd,是存储在你磁盘上的真正 SQLite 数据库,可以按文件选择以 SQLite 字节或文本形式存储。sqlite3可以打开它,架构有文档说明,普通工具可以读取每张表,包括你声明的表。 - 为你保留的任何内容声明一张表:一笔扣款、一份工资、一册书、一个里程碑。它是一种格式:一张具有真实类型、并为你声明的每条规则设置
CHECK的真正表,而不是模板。写入时,不符合要求的值会被拒绝,而不是等到之后才发现。 - 格式之间可以关联,并据此计算数据:根据起止时间计算时长,汇总指向此处的各行数据。总计绝不会悄悄跳过无法读取的行。
- 声明是必须成立的规则:收据总额等于刷卡金额,每一小时都已付薪。每条声明都会被证明、判定失败或标记为未检查;若未检查,会说明原因。
- 文件会按格式读取:电子表格、CSV、行数据 JSON 文件、Markdown 笔记或文件夹。列只需映射一次,并保存为读取器,每次都会检查。模型可以提供映射或位置,但绝不能提供值。
- 模型通过 MCP 在其中操作。 服务直接读取和写入文档,并使用结构化工具,而不是通用查询:任何文档都可用 28 个,搭配账本则有 85 个。每次写入在你确认提交前都是试运行;写入前会在文档旁保留副本;如果文档的架构版本早于服务,绝不会迁移,只会报告。
- 它会在对话中绘图。 让它显示工作表、看板或路线图,服务就会像应用一样绘制;支持 MCP Apps 的宿主环境中可见(Claude 桌面应用的 Code 选项卡和 VS Code 的 Copilot Chat 中均可查看);其他地方则会以文本形式给出相同答案。
- 包是别人已经整理好的格式,并附带相应视图。Emerald 附带两个包:账本和开发包。创建并分享自己的包是下一步计划。
- 无需联网,也无需登录。 应用本身不会发起网络请求——无论是用于 AI 还是遥测;如果它曾发起网络请求,测试就会失败。你可以选择开启唯一例外:更新,默认关闭。开启后,它每天会向 GitHub 查询一次最新版本号;在 Windows 上,还会从其 GitHub 发布页下载较新的版本。帮助 → 立即检查更新会查询一次。你也可以使用这台机器上的本地模型运行时;只有在你点击后才会查找,并通过回环地址进行。
账本
- 为想要管理自己的钱、而不是被钱管理的人设计:把他们拥有的一切放在一个属于自己的地方。
- 读取你已有的文件:信用卡账单、银行导出文件、工资单、基金报告。
- 记录每笔扣款,并区分转账和支出、月度账单和一次性账单。
- 每笔总额都可以展开查看参与汇总的各行数据。
- 读取一整年的助学基金报告:其中一个月基金没有收到任何款项,尽管工资单显示已扣款。
- 不连接你的银行。你只需提供文件。
开发包
-
项目的记忆以行的形式记录:里程碑、单元、决策、待解问题和收件箱。
-
会话从这些行开始,而不是从聊天摘要开始。若请求与已做出的决策相矛盾,就按该决策作答。
-
一个项目的会话会在另一个项目的收件箱中留下一条备注,而该项目的下一次会话会从这条备注开始。
-
Emerald 就是用它构建的:docs/memory.emd 是这个项目的记忆,每次处理此仓库的会话都会先询问它。
-
在仓库中设置它只需一条命令,在仓库文件夹中运行即可(从 0.2.0 起):
npx -y emerald-mcp init [path/to/document.emd]它会创建包含开发包的文档(默认为
docs/memory.emd,也可以指定其他名称;以文本形式存储在仓库中,因此会提交并显示差异),在CLAUDE.md中写入一个带标记的部分,包含会话开始时要询问的问题和每种格式的列;如果尚未安装 Claude Code 插件,还会写入两个钩子,在会话中打印start_here和收件箱。再次运行不会更改任何内容;格式发生变化后,它只会重写对应部分。
安装
目前有三种方式:
-
桌面应用,适用于 Windows 和 macOS,可从 最新版本下载。
.emd文档会有自己的图标,双击即可打开。它未经代码签名:Windows 会显示 “Windows 已保护你的电脑”(点击 更多信息,然后点击 仍要运行;安装程序仅面向当前用户,不需要管理员密码),macOS 会提示 Apple 无法验证此应用(点击 完成,然后依次点击 系统设置 → 隐私与安全性、仍要打开)。0.1.2 或更早版本的 Mac 副本会改为显示 “Emerald 已损坏”,且没有“仍要打开”选项:在终端中运行一次xattr -cr /Applications/Emerald.app,或者下载新版。每个版本都由此仓库的 发布工作流根据标签构建并附带证明,旁边还有一个SHA256SUMS文件:gh attestation verify <file> --repo kfireliyahu/emerald-emd会向 GitHub 验证该文件是否由此工作流构建。安装程序的名称不含版本号(Emerald-Setup.exe、Emerald-arm64.dmg、Emerald-x64.dmg),因此releases/latest/download/<name>始终指向最新版本。 更新默认关闭:在关于中开启后,应用每天会向 GitHub 查询一次是否有新版本。Windows 上,应用随后会在后台下载更新,根据该版本发布的校验和进行验证,并在窗口顶部安静地显示已就绪;只有在你按下安装并重启后才会安装,并会在重新打开时恢复到你之前打开的文档。Mac 上,应用会提示有更新,点击下载会打开发布页面(Mac 更新程序需要经过签名的应用)。 从 0.1.2 起,手动更新可自动完成;更早的版本需要手动下载一次新版。 -
MCP 服务,以 npm 包
emerald-mcp的形式提供:只需在助手的 MCP 配置中添加一行,即可用于任何文档;若也要使用账本工具,请勿省略--engine-only:claude mcp add emerald -- npx -y emerald-mcp --engine-only -
Claude Code 插件,包含服务、在对话中呈现的视图、用于与他人声明格式的技能,以及将项目的
start_here和收件箱引入会话的钩子(它的运行内容):/plugin marketplace add kfireliyahu/emerald-emd /plugin install emerald@emerald-emd
仓库
构建和运行
git clone https://github.com/kfireliyahu/emerald-emd.git
cd emerald-emd
npm ci # npm install works too; this is the reproducible form
npm run dev # the app, in a browser tab
npm run test # the whole suite
npm run build # the app -> dist/, what the desktop shell serves
npm run desktop # build everything and open the desktop window
npm run build:plugin # the MCP server -> dist-plugin/server.mjs
npm run build:demo # Emerald's page and the tours -> dist-demo/
npm run dist:win # the Windows installer -> release/
npm run dist:mac # the macOS disk image -> release/ (needs a Mac)
- 使用 Node 24 构建和测试。
npm ci会输出审计提示(来自 MCP SDK 和路由器;已记录)。首次运行任何会打开桌面窗口的程序时,都会下载一次 Electron 二进制文件;构建需要联网的只有这一次。 - 界面包括宽数据页面、列映射器、导入审核和存款表格,并且刻意不支持手机布局。在浏览器中,Chrome 和 Edge 通过 File System Access API 静默保存;Safari 和 Firefox 则通过下载保存。桌面应用在所有环境中都能静默保存。
此检出版本中的 MCP 服务
.mcp.json 指向带有 --engine-only 的 dist-plugin/server.mjs,因此,在此目录启动的 Claude Code 会话会自动发现它,并提示你批准一次。从其他位置启动:
claude mcp add emerald -- node /absolute/path/to/dist-plugin/server.mjs --engine-only
如需使用账本的工具,请不要加上 --engine-only。构建后的文件夹可独立运行——所有软件包都已打包其中,它就是当前的 npm 软件包——因此可在任何能运行 Node 的位置运行。docs/plugin.md 介绍了工具接口、已测试的宿主和相关规则。
目录内容
docs/:规范、架构、数据模型、引擎和各领域的说明。docs/09-decision-log.md记录了各项设计背后的原因;docs/memory.emd则以行的形式记录了构建进度。docs/demo.md:页面、演示流程,以及其他页面如何嵌入其中。src/domain/是引擎,不导入 React、SQLite 或 DOM 中的任何内容;src/data/是存储层;src/ui/是应用;src/plugin/是 MCP 服务;electron/是桌面外壳;src/data/packs/是两个数据包。
问题与贡献
- 欢迎提交问题和参与讨论。
- 代码贡献需先签署贡献者协议;LICENSING.md 说明了原因。开放贡献后,最需要熟悉相关格式的人员参与的部分是导入映射和语言环境包。
- 切勿加入真实的账单文件。 测试样本均为合成数据,且测试会拒绝其他类型的文件。
免责声明
- 它负责计算,不提供建议。 Emerald 展示的内容均不构成财务、税务、法律或投资建议。它只会汇总你提供的数据,并指出不一致之处;该如何处理由你自行决定,也可以咨询你平时会寻求帮助的人。
- 请核对读取结果。 从工资单、账单、基金报告或收据中读取的数字,无论由代码还是模型读取,都可能有误。原始文档才是真实依据;Emerald 会将读取结果保存在文档旁,供你对照。
- 模型说的话由模型负责。 助手通过 MCP 操作文档时,其回复内容和写入请求均由该助手及其提供方根据各自条款决定,并非由本项目决定。Emerald 负责拒绝不合适的操作,并在每次写入前展示内容。
- 你的文件归你所有。 Emerald 会写入你打开的文档,并在其旁边保存副本,不会在其他任何位置创建副本。请像备份其他文件一样备份它;这里的任何内容都无法恢复丢失的文件。
- 无关联关系。 Emerald 与任何银行、发卡机构、基金、雇主、薪资服务提供商或 AI 服务提供商均无关联,亦未获得其认可,也不代表其行事。账本会读取这些机构提供的文件,无论文件采用何种格式。
- 按原样提供。 本软件不提供任何形式的保证,详见 AGPL-3.0 第 15 和第 16 节。桌面版未经签名,由此仓库的工作流构建;是否使用或从源代码构建,请自行判断。
隐私
Emerald 不收集任何信息。完整隐私政策请见 PRIVACY.md。
许可证
代码采用 AGPL-3.0-only 许可(LICENSE);笔记和文章采用 CC BY 4.0 许可;格式声明、数据包和合成样例采用 CC0 许可。LICENSING.md 说明了各项内容分别采用何种许可、名称和标志不代表什么,以及如何获取商业许可。桌面应用的“关于”页面也说明了这些内容,点击“帮助”即可查看所有捆绑内容的第三方声明。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。