Tiny local MCP notes server in Python: create, list, and search notes stored in a local JSON file.
Runs on your machine from its package; the steps are below.
At most: creates or changes data: records, files, settings.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Distributed as an MCP bundle (`https://github.com/bradraylucas-eng/mcp-notes-server/releases/download/v1.0.0/mcp-notes-server.mcpb`) — download it and import the bundle in your MCP client.
A minimal, free and open-source Model Context Protocol (MCP) server in Python that gives any MCP-compatible AI assistant a persistent notebook: create notes, list them, and search them — stored in a plain local JSON file you own.
Built with the official mcp Python SDK (FastMCP). No database, no cloud, no accounts. Your notes never leave your machine.
| Tool | What it does |
|---|---|
create_note | Create a note with a title (required, ≤120 chars) and body (≤10,000 chars). Returns the saved record with id and timestamps. |
list_notes | List saved notes, newest first (configurable limit, 1–500). |
search_notes | Case-insensitive keyword search across titles and bodies. |
git clone <this-repo-url>
cd mcp-notes-server
pip install -r requirements.txt
python server.py
The server speaks MCP over stdio. Connect it from any MCP host — see the config examples below and in examples/.
Add to your claude_desktop_config.json (see examples/claude_desktop_config.example.json):
{
"mcpServers": {
"notes-server": {
"command": "python",
"args": ["/absolute/path/to/mcp-notes-server/server.py"]
}
}
}
See examples/mcp-client-config.generic.json — the same stdio command/args pattern works for most hosts.
notes.json (created automatically next to server.py) to see the raw storage — it's just JSON.notes.json file; saves are atomic (write to temp file, then replace).@mcp.tool() — the type annotations become the tool input schemas. The whole server is one readable file (~150 lines), meant to be copied and adapted.Run the smoke test (no MCP host needed):
python tests/smoke_test.py
Verified end-to-end over the real MCP protocol (stdio, official SDK v1.x) — tools listed, note created, searched, and listed: see tests/mcp_e2e_test.py and run it yourself after pip install -r requirements.txt. Note the requirements pin mcp<2: the 2.x SDK renamed FastMCP, and this code targets the v1 API.
This free server is one of three starters in the MCP Server Starter Templates pack — the full pack adds a read-only SQLite lookup server (with a tested SQL-injection guard: SELECT-only validation) and a web-summary server skeleton, plus client configs for all three, a testing checklist, and security notes for taking MCP servers toward production.
→ MCP Server Starter Templates (and more AI agent tools: AgentProof testing kits, LLM/RAG eval kits, verified datasets for agents): bradray2.gumroad.com
Free samples of the paid kits live in the companion repo, ai-agent-tools-free-samples.
MIT — see LICENSE. Use it, fork it, ship it.
Copyright (c) 2026 Brad Lucas.