Datanotes について
Datanotesは、Markdownノートで構造化データを管理する人やエージェント向けのオープンソースデータベースエンジンです。各行を編集可能なファイルとして保ちながら型付きテーブルを検証し、変更を記録して取り消せます。
主な機能
- 01Markdownノートを型付きテーブルとして扱う
- 02型・リンク・一意性・制約の検証
- 03各行を編集可能な通常ファイルで保持
- 04書き込みの記録と変更の取り消し
- 05Gitリポジトリから固定した拡張機能を導入
活用シーン
- 01構造化されたMarkdownノートの検索や更新
- 02エージェントが書き込むデータの検証
- 03記録済みの変更の取り消し
- 04拡張機能によるテーブルやMCPツールの追加
MCP 対応
`datanotes mcp`サーバーにより、MCPクライアントはノートフォルダー上で稼働するエンジンを通じてデータを検索・書き込みできます。エンジンの起動にも対応し、HTTPアクセスも利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Datanotes
Datanotes は Markdown 向けのオープンソースデータベースエンジンです。ノートのフォルダーを、プログラムや AI エージェントが MCP または HTTP 経由でクエリ、書き込み、取り消しを行える、型付けされ検証済みのテーブルとして扱います。また、各行は常に、所有者であるあなたが管理するプレーンなファイルのままです。
ドキュメント:datanotes.dev
Datanotes を選ぶ理由
- エージェントは不正なデータを書き込めません。 書き込みのたびに、型、リンク、一意の値、CHECK 制約についてテーブルに照らして検証します。書き込みが拒否されても、何も変更されません。どの値がどのルールに違反したか、どう修正すればよいかを回答で示します。
- すべての変更を取り消せます。 エンジンは実行したすべての書き込みを記録します。変更を行った主体(エージェント、そのセッション、トークン)も記録します。
undo_migrationであらゆる変更を元に戻せます。 - 中身はあくまで Markdown です。 行はノート、またはパックノートのセクションで、そのフロントマターのキーが列になります。読み取り、編集、grep、Git へのコミットができます。エンジンは手動での編集も読み取り、同様に検証します。
- 拡張機能。 Git リポジトリからテーブルと MCP ツールを、ピン留めして確認したうえでインストールできます(
datanotes extension install)。 - ローカル優先。 Datanotes は Apache-2.0 で、あなたのマシン上で動作します。機能を有効にしないかぎり、データが外部に送信されることはありません。
向いていない用途
Datanotes は各行をファイルとして保持するため、SQLite や Postgres の代わりにはなりません。次の用途には、従来型のデータベースを選んでください。
- 大規模な分析データセット
- 高い書き込みスループット
- 1 つのフォルダーに対する多数の同時書き込み
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 を実行するでは、最初のテーブルを作成する手順を説明しています。
エージェントを接続する
エージェントは 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 を起動します。Windows Subsystem for Linux(WSL)以外で Claude Code を使用する場合:
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"
]
}
}
}
エージェントの接続では、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 になりました。JavaScript クライアントのページでは、クライアントのその他の使い方を説明しています。
詳細はこちら
ライセンス
Apache License 2.0: LICENSE と NOTICE を参照してください。Copyright 2026 Davide Fornelli。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。