databasedmcp

← Articles

Alternative to Evernote: a notes archive with Claude

Keep the notes you want to find again, in notebooks and tags, by telling Claude what to save. Then ask for them back in your own words.

6 min read

databasedmcp gives your AI assistant databases it keeps between conversations, so everything in this article works from the day you connect it. Free to start, no card.

Get started free

Why build it yourself

If you use Evernote, it's probably where things go that you want to find later: meeting notes, a recipe, the details of the boiler service, an article worth keeping. You sort them into notebooks, add a tag or two, and search for them months later.

That's four tables and a search. A lot of this text turns up in Claude anyway: you paste in meeting notes to tidy them, or work out a plan in a chat. Ask it to save the result, and it adds the note with a title and tags. Later, ask "what did the plumber say about the boiler?" and it searches for you.

Connect Claude to databasedmcp

databasedmcp is a remote MCP server that gives AI assistants private SQLite databases, with nothing to install.

In Claude on the web, desktop or mobile, open Settings → Connectors, choose Add custom connector and enter https://databasedmcp.com/mcp. Select Connect, sign in to databasedmcp with your email or Google, and select Allow. Then turn databasedmcp on for a conversation from the tools menu.

Claude asks before it runs anything that changes or deletes data. Reading runs without asking.

Any other MCP client works the same way; the docs have the details.

Copy this prompt to build it

Paste this into Claude to set up the database, its tables and its guide in one go. The rest of this article walks through what it makes and how you use it.

prompt
Set up a notes archive for me in databasedmcp, in one go.

1. Create a database called archive, described as "My notes archive: notebooks, notes and tags, kept by Claude from what I tell it".
2. Create four tables:
   - notebooks: id, name (required, unique).
   - notes: id, notebook_id (references notebooks), title (required), body (required, the text of the note), source_url (where it came from, if anywhere), created_at and updated_at (both default to now).
   - tags: id, name (required, unique, lowercase).
   - note_tags: note_id (references notes), tag_id (references tags), one row per pair.
3. Write the database a guide that says what each table is for, to look notebooks and tags up by name before adding them, to set updated_at whenever a note changes, and the queries for "search my notes for a word" and "notes with a tag".

From then on: when I ask you to save something, write it as a note in the notebook that fits, with a short title and a few tags. When I add to a note, append to its body. When I ask for something I saved, search titles and bodies. Show me the tables when you're finished.

Ask for the database

You don't write the schema. Describe what you want:

Set up a notes archive in databasedmcp: notebooks, notes and tags. When I ask you to save something, file it as a note with a title and tags; when I ask for something, search for it.

Claude creates a database called archive and its tables:

schema
CREATE TABLE notebooks (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL UNIQUE
);

CREATE TABLE notes (
  id INTEGER PRIMARY KEY,
  notebook_id INTEGER REFERENCES notebooks(id),
  title TEXT NOT NULL,
  body TEXT NOT NULL,
  source_url TEXT,
  created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE tags (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL UNIQUE
);

CREATE TABLE note_tags (
  note_id INTEGER NOT NULL REFERENCES notes(id),
  tag_id INTEGER NOT NULL REFERENCES tags(id),
  PRIMARY KEY (note_id, tag_id)
);

It also writes the database a guide on how the tables are meant to be used. The guide comes back with the schema whenever an assistant looks the database up. Claude files things the same way next week as today, and so does any other assistant you connect.

guide
# archive: my notes

- **notebooks**: Home, Work, Recipes and so on. Look one up by name before adding.
- **notes**: one row per note. `body` is the text; `source_url` is where it came from, if anywhere. Set `updated_at` whenever a note changes. To add to a note, append to its body.
- **tags**: lowercase words. Look one up before adding (`INSERT ... ON CONFLICT(name) DO NOTHING`).
- **note_tags**: which tags each note has.

Search: `SELECT id, title, updated_at FROM notes WHERE title LIKE '%word%' OR body LIKE '%word%' ORDER BY updated_at DESC`

By tag: `SELECT n.id, n.title FROM notes n JOIN note_tags nt ON nt.note_id = n.id JOIN tags t ON t.id = nt.tag_id WHERE t.name = 'house' ORDER BY n.updated_at DESC`

Use it

From here on you talk, and Claude writes the rows. Each request below is one statement:

Make a Home notebook.
execute
INSERT INTO notebooks (name) VALUES (?) RETURNING id
-- params: ["Home"]
Save this: the boiler was serviced today by Kettle & Pipe. Pressure should sit at 1.2 bar; the next service is due next autumn.
execute
INSERT INTO notes (notebook_id, title, body) VALUES (?, ?, ?) RETURNING id
-- params: [1,"Boiler service","Serviced by Kettle & Pipe. Pressure should sit at 1.2 bar. Next service due next autumn."]

Claude makes sure the tag exists.

execute
INSERT INTO tags (name) VALUES (?) ON CONFLICT(name) DO NOTHING
-- params: ["house"]
Tag it house.
execute
INSERT INTO note_tags (note_id, tag_id) SELECT ?, id FROM tags WHERE name = ?
-- params: [1,"house"]
Add to the boiler note: the engineer said the expansion vessel will need replacing in a year or two.
execute
UPDATE notes SET body = body || char(10) || ?, updated_at = datetime('now') WHERE id = ?
-- params: ["The expansion vessel will need replacing in a year or two.",1]

char(10) is a new line, so each addition starts on its own line.

Ask it questions

Once there's data, each report you'd pay for is a single query:

What did they say about the boiler pressure?
query
SELECT id, title, body, updated_at FROM notes WHERE title LIKE ? OR body LIKE ? ORDER BY updated_at DESC
-- params: ["%pressure%","%pressure%"]
Show me everything tagged house.
query
SELECT n.id, n.title, n.updated_at FROM notes n JOIN note_tags nt ON nt.note_id = n.id JOIN tags t ON t.id = nt.tag_id WHERE t.name = ? ORDER BY n.updated_at DESC
-- params: ["house"]
How many notes are in each notebook?
query
SELECT b.name, count(n.id) AS notes, max(n.updated_at) AS last_changed FROM notebooks b LEFT JOIN notes n ON n.notebook_id = b.id GROUP BY b.id ORDER BY notes DESC

You can also open the database on the website, page through its rows and run read-only SQL yourself.

What you give up

It's text only. Evernote keeps attachments, PDFs, photos and scanned documents, and can search the words inside them. databasedmcp stores rows of text and doesn't hold files, so for a receipt or a manual, save a note that says where the file lives. It doesn't clip web pages either: you paste the text or the link into the chat, and Claude saves what you give it.

There's no editor of its own. Evernote has apps for every device, works offline and lets you format a note as you write it. Here you write notes by talking to Claude, and you read them in a chat or on the databasedmcp website. If your notes are full of images and you edit them by hand every day, stay with Evernote.

Try it

databasedmcp is free to start, with no card. Free has 100 tool calls a week, enough to set this up and try it for a week. Starter has 1,000 for everyday use.

Create an account

More articles · databasedmcp · Docs