关于 Datanotes
Datanotes 是面向以 Markdown 笔记管理结构化数据的用户和 Agent 的开源数据库引擎。它在保留每行可编辑文件的同时验证类型化表格,并记录变更以供撤销。
主要功能
- 01将 Markdown 笔记作为类型化表格
- 02验证类型、链接、唯一值和检查约束
- 03将每行保留为可编辑的纯文件
- 04记录写入并撤销变更
- 05从 Git 仓库安装固定版本扩展
适用场景
- 01查询或更新结构化 Markdown 笔记
- 02校验 Agent 写入的数据
- 03撤销已记录的变更
- 04通过扩展添加表格和 MCP 工具
MCP 相关
`datanotes mcp` 服务允许 MCP 客户端通过运行于笔记文件夹上的引擎查询和写入数据,也可为该文件夹启动引擎。它还支持 HTTP 访问。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Datanotes
Datanotes 是一款面向 Markdown 的开源数据库引擎:它会将一个笔记文件夹作为带类型且经过验证的表运行,让你的程序和 AI Agent 通过 MCP 或 HTTP 查询、写入和撤销数据,同时每一行仍是由你掌控的普通文件。
为什么选择 Datanotes
- Agent 无法写入垃圾数据。 每次写入都会根据所属表进行检查:类型、链接、唯一值和 CHECK 约束。被拒绝的写入不会造成任何更改。响应会说明哪个值违反了哪条规则,以及如何修复。
- 每项更改都可以撤销。 引擎会记录自己执行的每次写入,并记录操作人:Agent、会话及其令牌。
undo_migration可以撤销任何更改。 - 它仍然只是 Markdown。 一行可以是一条笔记,也可以是一个组合笔记中的一个章节;其 front matter 键就是列。你可以阅读、编辑、grep 或将其提交到 Git。引擎也会读取并检查你手动编辑的内容。
- 扩展。 从 Git 仓库安装表和 MCP 工具,并固定版本且确认后再安装(
datanotes extension install)。 - 本地优先。 Datanotes 采用 Apache-2.0 许可,可在你的机器上运行。除非你启用相关功能,否则不会有任何内容离开本机。
不适用场景
Datanotes 会将每一行保存为一个文件,因此不能替代 SQLite 或 Postgres。以下场景应选择传统数据库:
- 大型分析数据集
- 高写入吞吐量
- 多个写入者同时操作同一个文件夹
Datanotes 适用于 10,000 条笔记。在 50,000 条笔记时,引擎首次启动约需 15 秒,重启需 2 到 3 秒。
快速开始
你需要 Node.js 22 或更高版本。在 Windows 上,请使用 Node.js 24.16 或更高版本,或 26.1 或更高版本。
在一个文件夹上启动引擎,该文件夹将成为你的数据库。文件夹可以为空,也可以已经包含笔记:
npx -y datanotes serve --database your_database_folder
在你的笔记上运行 Datanotes 将引导你创建第一个表。
连接你的 Agent
Agent 通过其 Model Context Protocol(MCP)服务 datanotes mcp 访问引擎。该服务会使用在文件夹上运行的引擎,或启动一个引擎。所有客户端都运行相同的命令:
npx -y datanotes mcp --database your_database_folder
Claude Code
claude mcp add datanotes -- \
npx -y datanotes mcp --database your_database_folder
Claude Desktop
将服务添加到 claude_desktop_config.json:
{
"mcpServers": {
"datanotes": {
"command": "npx",
"args": [
"-y", "datanotes", "mcp", "--database", "your_database_folder"
]
}
}
}
Cursor
将服务添加到项目中的 .cursor/mcp.json,或添加到 ~/.cursor/mcp.json:
{
"mcpServers": {
"datanotes": {
"command": "npx",
"args": [
"-y", "datanotes", "mcp", "--database", "your_database_folder"
]
}
}
}
VS Code
将服务添加到工作区中的 .vscode/mcp.json:
{
"servers": {
"datanotes": {
"type": "stdio",
"command": "npx",
"args": [
"-y", "datanotes", "mcp", "--database", "your_database_folder"
]
}
}
}
Codex
将服务添加到 ~/.codex/config.toml:
[mcp_servers.datanotes]
command = "npx"
args = ["-y", "datanotes", "mcp", "--database", "your_database_folder"]
Windows
在 Windows 上,客户端会通过 cmd /c 启动 npx。对于 Claude Code,在 Windows Subsystem for Linux(WSL)以外的环境中:
claude mcp add datanotes -- cmd /c npx -y datanotes mcp --database C:\Notes
在 JSON 文件中,命令为 cmd,反斜杠需要转义:
{
"mcpServers": {
"datanotes": {
"command": "cmd",
"args": [
"/c", "npx", "-y", "datanotes", "mcp", "--database", "C:\\Notes"
]
}
}
}
连接你的 Agent 介绍了 HTTP 传输和命名令牌。
在 TypeScript 中使用
使用 npm install datanotes 安装软件包。此脚本会在你的文件夹上查找引擎,创建一个表并查询数据:
import { DatanotesClient } from "datanotes/client";
import { localEngine } from "datanotes/local";
const engine = localEngine("your_database_folder");
if (!engine) throw new Error("Start the engine on the folder first");
const db = new DatanotesClient({ url: engine.url, token: engine.token });
const created = await db.call("create_table", {
name: "film",
description: "Classic films I watched or want to watch",
filename: "{title}",
columns: [
{
name: "title",
type: "string",
required: true,
unique: true,
description: "The film's title, as on its poster",
},
{
name: "minutes",
type: "integer",
min: 1,
description: "Running time in minutes",
},
],
});
if (!created.ok) throw new Error(String(created.value));
await db.call("insert_row", {
table: "film",
values: { title: "Nosferatu", minutes: 94 },
});
// Refused: nothing is written, and the answer explains why
const bad = await db.call("insert_row", {
table: "film",
values: { title: "Metropolis", minutes: 0 },
});
if (!bad.ok) console.log(bad.value);
const films = await db.call("select_rows", {
table: "film",
where: { minutes: { gt: 90 } },
});
console.log(films.value);
现在,每部电影都是一条笔记,位于 main/public/film/Nosferatu.md,其值保存在 front matter 中。JavaScript 客户端页面介绍了客户端的其他内容。
了解更多
许可证
Apache License 2.0:请参阅 LICENSE 和 NOTICE。版权所有 2026 Davide Fornelli。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。