mcp-notes-server
You can use this server as a small MCP notebook to store, organize, search, and manage notes in a single SQLite file.
Add notes with a required title, optional body, and optional tags.
Search notes with full-text search over titles and bodies, including prefix matching and optional tag filters.
List notes by most recently changed, with optional tag filtering, limit, and offset.
Read a single note in full by its id.
Update a note's title, body, or tags while leaving omitted fields unchanged.
Delete notes by id.
List all tags in use with the number of notes carrying each tag.
Persist notes in SQLite, defaulting to
~/.mcp-notes/notes.db, with an FTS5 index kept in sync.Expose all capabilities as MCP tools over JSON-RPC on stdin/stdout for an AI agent.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-notes-server save a note about the deployment decision and tag it infra"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-notes-server
A small MCP server that gives an AI agent a notebook: write notes, search them full text, organise them with tags. Written in plain Python 3.11, standard library only, no dependencies to install and nothing to run in the background.
Why
An agent forgets everything between sessions. Files work for long documents, but not for the hundreds of small facts that pile up during work: a decision, a hostname, why an approach was dropped. This server keeps them in one SQLite file and makes them findable in one tool call.
It is also a compact, readable reference of what a Model Context Protocol server actually is:
JSON-RPC 2.0 over stdin and stdout, an initialize handshake, and a list of typed tools.
Related MCP server: Notes MCP Server
Install
git clone https://github.com/Aliaksandr-Andronchyk/mcp-notes-server.git
cd mcp-notes-server
python3 -m mcp_notes --helpPython 3.11 or newer, with SQLite compiled with FTS5 (the default on macOS and Debian).
Connect to Claude Code
One line:
claude mcp add notes -- python3 -m mcp_notesRun it from the clone, or add --db ~/.mcp-notes/notes.db and use an absolute path to
python3 if you launch from elsewhere. The equivalent entry in .mcp.json or
claude_desktop_config.json:
{
"mcpServers": {
"notes": {
"command": "python3",
"args": ["-m", "mcp_notes", "--db", "~/.mcp-notes/notes.db"],
"cwd": "/path/to/mcp-notes-server"
}
}
}Check it with claude mcp list, then ask the agent to "save a note about X" or
"search my notes for X".
Tools
Tool | What it does |
| Save a note: |
| Full text search over title and body, optional |
| Recently changed notes first, optional |
| Read one note in full by |
| Change |
| Delete by |
| Every tag in use with the number of notes carrying it. |
Search treats each word as a prefix, so migra finds migrations, and requires all words to
match. Search text is tokenized and quoted before it reaches SQLite, so FTS5 operators typed by
a user are matched as ordinary words instead of changing the query. Tags are lowercased, a
leading # is stripped, and duplicates are dropped.
Storage
One SQLite file, ~/.mcp-notes/notes.db by default, overridden by --db or the MCP_NOTES_DB
environment variable. Notes live in an ordinary table; an FTS5 index is kept in sync by triggers,
so writes through any path stay searchable. Back it up by copying the file.
Run by hand
Useful for debugging without a client attached:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"add_note","arguments":{"title":"hello","tags":["demo"]}}}' \
| python3 -m mcp_notes --db /tmp/notes.dbLogs go to stderr, because stdout carries the protocol and has to stay clean.
Tests
pip install pytest
python3 -m pytest tests -q37 tests covering storage, search behaviour, the JSON-RPC layer and a full stdio session.
Licence
MIT.
Available Tools
7 toolsadd_noteA
Save a new note with a title, an optional body and optional tags.
Inputs: title (required), body, tags.
delete_noteB
Delete a note by id.
Inputs: id (required).
get_noteA
Read one note in full by its id.
Inputs: id (required).
list_notesA
List notes by last change, optionally filtered by tag.
Inputs: tag, limit, offset.
list_tagsA
All tags in use with the number of notes carrying each.
Inputs: no named parameters.
search_notesA
Full text search over titles and bodies, newest ranking first, optionally narrowed to one tag. Every word is a prefix match.
Inputs: query (required), tag, limit.
update_noteA
Change title, body or tags of a note. Omitted fields stay as they are.
Inputs: id (required), body, tags, title.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool maps to a distinct action and resource: CRUD operations on notes, search, and tag listing. There is no overlap or ambiguity between tools.
All tools follow a clear verb_noun pattern: add_note, search_notes, list_notes, get_note, update_note, delete_note, list_tags. Singular/plural variation is natural and does not harm predictability.
Seven tools is a well-scoped size for a notes server. Each tool serves a necessary purpose without redundancy or bloat.
The note lifecycle is fully covered with create, read, list, update, and delete, plus search and tag management. There are no obvious dead ends or missing core operations.
Maintenance
Related MCP Connectors
Cross-session, cross-device memory for your agent: remember and recall notes. No key to start.
Persistent memory for AI agents. Search and store durable facts, preferences and decisions.
Persistent memory for AI agents. Search, store, and recall across sessions.
Markdown notes and whiteboards your AI agent can read and write.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables AI assistants to manage a personal markdown-based knowledge base with natural language interactions. Supports creating, searching, updating, and organizing notes across categories like people, recipes, meetings, and procedures.111-
- AlicenseAqualityDmaintenanceEnables creating, managing, and searching Markdown notes with support for tags, timestamps, and full-text search. Includes AI prompts for analyzing and summarizing notes.61MIT
- AlicenseAqualityDmaintenanceProvides persistent key-value storage with full-text search, tags, and namespaces for AI agents to maintain context across sessions.737 PyPIMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to search, read, create, update, and remove personal markdown notes stored locally, providing persistent memory across sessions.20 npm2MIT