Skip to main content
Glama

MCP Notes Server

A minimal Model Context Protocol server, built from scratch in Python, that exposes a simple note-taking tool set to any MCP-compatible client (Claude Desktop, the MCP Inspector, a custom agent, etc).

Built as a from-scratch, non-toy example of all three MCP primitives — tools, a resource, and prompts — in one small, readable project.

What it does

  • add_note(title, content) — save a new note

  • list_notes() — list all saved note titles

  • search_notes(keyword) — search notes by title or content

  • delete_note(title) — delete a note by exact title

  • notes://all — a resource exposing every note as readable markdown

  • summarize_notes — a prompt that generates a ready-made "summarize all my notes" message

  • clean_up_note — a prompt that turns rough pasted text into a clean, titled note

Notes are persisted to a local notes_data.json file (created automatically on first run).

Related MCP server: sourcify-context-server

Project structure

store.py     # data layer — save/load/search notes (plain Python, no MCP code)
prompts.py   # reusable prompt templates (plain strings with placeholders)
app.py       # the MCP server itself — wires store.py and prompts.py into
             # MCP tools, a resource, and prompts using MCPServer

Requirements

Setup

git clone https://github.com/<your-username>/mcp-notes-server.git
cd mcp-notes-server
pip install -r requirements.txt

Running it

Quick test with the built-in inspector (a browser UI for calling tools without a full client):

mcp dev app.py

This opens a browser tab where you can call each tool, read the resource, and run the prompts directly.

Connect it to Claude Desktop — add this to your Claude Desktop MCP config (adjust the path to wherever you cloned this repo):

{
  "mcpServers": {
    "notes": {
      "command": "python",
      "args": ["/absolute/path/to/mcp-notes-server/app.py"]
    }
  }
}

Restart Claude Desktop, and it will be able to call these tools, read the resource, and offer the prompts directly inside a normal conversation.

Why it's built this way

store.py knows nothing about MCP — it's just a plain Python class that reads and writes a JSON file. app.py is a thin protocol wrapper on top of it. That separation is the one pattern worth taking away from this example: keep your actual logic MCP-agnostic, and wrap it at the edges. Swap NoteStore for a real database and nothing about the MCP layer has to change.

License

MIT — do whatever you want with this.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A simple notes system that allows creating, storing, and accessing text notes through MCP resources and tools, with built-in prompt support for generating summaries of stored notes.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients to access and manage a personal markdown knowledge base stored in Cloudflare R2. Provides tools for listing, reading, writing, searching (full-text and semantic), and following backlinks between notes.
    7
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables LLM clients to read, search, create, update, and delete notes in a self-hosted shared memory bank over MCP, using hybrid vector and full-text search with optional summarization.
    2
    MIT