
Datanotes
io.github.davidefornelliPublished by GitHub account davidefornelliv3.0.0Updated Oct 24, 2026
The engine of your second brain: Markdown notes as database tables, for you and your agents.
Overview
Turns a folder of Markdown notes into typed, validated tables that an assistant can query, write and undo over MCP.
- What you can do
- Create and describe tables over a notes folder, with typed columns, links, unique values and constraints
- Query rows with filters and read notes as table rows
- Insert and update rows, with every write validated against the table schema
- Undo changes through the journal, which records the agent, session and token behind each write
- Install extra tables and MCP tools from a pinned, confirmed git repository
- When to use it
- Useful when you keep notes as Markdown files and want an assistant to read and write them as structured records, with validation and undo, instead of editing files blindly. It suits personal or small-team note folders, not large analytical datasets or many concurrent writers.
- Requirements
- Node.js 22 or newer (on Windows, Node.js 24.16 or newer or 26.1 or newer). The npm package datanotes, run locally over stdio with a database folder path passed on the command line. No accounts, API keys or environment variables are declared.
Installation
In SourceWeft
- Open Datanotes in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Datanotes
Datanotes is the open-source database engine for Markdown: it runs a folder of notes as typed, validated tables that your programs and AI agents query, write and undo over MCP or HTTP, while every row stays a plain file you own.
[npm version] [CI] [License: Apache-2.0]
Documentation: datanotes.dev
Why Datanotes
- Agents can't write garbage. Every write is checked against its table: types, links, unique values and CHECK constraints. A refused write changes nothing. Its answer says which value broke which rule and how to fix it.
- Every change can be undone. The engine journals every write it makes. It records who made it: the agent, its session and its token.
undo_migrationtakes any change back. - It's still just Markdown. A row is a note, or a section of a pack note, and its front matter keys are the columns. Read it, edit it, grep it or commit it to Git. The engine reads your hand edits and checks them too.
- Extensions. Install tables and MCP tools from a git repository, pinned and confirmed (
datanotes extension install). - Local first. Datanotes is Apache-2.0 and runs on your machine. Nothing leaves it unless you turn that feature on.
When not to use it
Datanotes keeps every row as a file, so it isn't a replacement for SQLite or Postgres. Choose a classic database for:
- Large analytical datasets
- High write throughput
- Many concurrent writers on one folder
Datanotes is comfortable at 10,000 notes. At 50,000 notes, the engine takes about 15 seconds for its first start, and 2 to 3 seconds to restart.
Quick start
You need Node.js 22 or newer. On Windows, use Node.js 24.16 or newer, or 26.1 or newer.
Start the engine on a folder, which becomes your database. It can be empty, or hold notes already:
Run Datanotes on your notes walks you through your first table.
Connect your agents
Agents reach the engine through its Model Context Protocol (MCP) server, datanotes mcp. It uses the engine that runs on the folder, or starts one. Every client runs the same command:
Claude Code
Claude Desktop
Add the server to claude_desktop_config.json:
Cursor
Add the server to .cursor/mcp.json in your project, or to ~/.cursor/mcp.json:
VS Code
Add the server to .vscode/mcp.json in your workspace:
Codex
Add the server to ~/.codex/config.toml:
Windows
On Windows, clients start npx through cmd /c. For Claude Code, outside Windows Subsystem for Linux (WSL):
In a JSON file, the command is cmd and the backslashes are escaped:
Connect your agents covers HTTP transport and named tokens.
Use it from TypeScript
Install the package with npm install datanotes. This script finds the engine on your folder, creates a table and queries it:
Each film is now a note, main/public/film/Nosferatu.md, with the values in its front matter. The JavaScript client page covers the rest of the client.
Learn more
License
Apache License 2.0: see LICENSE and NOTICE. Copyright 2026 Davide Fornelli.
Source: README.md at commit 455f00f
Tools
0Version history
1- v3.0.0LatestOct 12, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts