Skip to main content
Glama

NotePilot (Notes Assistant AI Chat App)

Turn thoughts into structured knowledge..!

A minimal Notes application built on the Model-Context-Protocol (MCP). A Python MCP server exposes note management tools over stdio; an async client connects Claude AI to those tools so you can create, search, and manage notes through a natural-language chat interface.

Overview

You ──► Claude AI (Anthropic) ──► MCP Client ──► MCP Server ──► SQLite
              (tool calls)          (stdio)       (FastMCP)     (notes.db)

Claude receives a set of note-management tools from the MCP server. When you ask it to "create a note about X" or "find notes mentioning Y", it invokes the appropriate tool, gets the result, and responds conversationally.

Related MCP server: n8n-mcp

Tech Stack

Layer

Technology

Language

Python 3.12+

Package manager

uv

MCP framework

mcp[cli] (FastMCP)

AI / LLM

Anthropic SDK (AsyncAnthropic)

Database

SQLite via sqlite-utils

CLI formatting

colorama

Config

python-dotenv

Prerequisites

Configuration

Create a .env file in the project root:

ANTHROPIC_API_KEY="sk-ant-..."
CLAUDE_MODEL="claude-haiku-4-5-20251001"

Installation

# Clone the repo
git clone https://github.com/chaitanya-jadhav11/notes-mcp
cd notes-mcp

# Install dependencies
uv sync

Usage

# Start the interactive chat client
uv run -m client.client

You can then chat naturally with Claude. Examples:

You: Create a note titled "Shopping list" with milk, eggs, and bread.
You: Show me all my notes.
You: Search for notes about bread.
You: Update the shopping list to add butter.
You: Delete the shopping list note.

To inspect or develop the MCP server interactively:

uv run mcp dev server/server.py

Project Structure

notes-mcp/
├── .env                    # API key and model config (create this)
├── pyproject.toml          # Project metadata and dependencies
├── uv.lock                 # Pinned dependency lock file
├── notes.db                # SQLite database (auto-created on first run)
│
├── server/
│   ├── server.py           # FastMCP server — defines the 8 note tools
│   └── db.py               # SQLite CRUD layer (UUID keys, ISO timestamps)
│
└── client/
    ├── client.py           # MCPClient class + interactive REPL loop
    └── claude_client.py    # Anthropic API wrapper — manages conversation
                            # history, tool-call loops, and prompt caching

Available MCP Tools

The server exposes the following tools to Claude:

Tool

Description

list_notes

List all notes (id + title)

create_note

Create a note with a title and body

get_note_by_id

Fetch a single note by UUID

get_notes_by_title

Find notes by exact or partial title match

search_notes

Full-text search across note bodies

update_note

Update a note's title and/or body

delete_note_by_id

Delete a note by UUID

delete_notes_by_title

Delete all notes matching a title

App Screenshot

mcp-Notes-chat-example.jpg

Anthropic course certificate

Anthropic-MCP_cert.jpg

Available Tools

8 tools
create_noteC

Create a new note with title and body

Inputs: body (required), title (required).

delete_note_by_idC

Delete a note using its ID

Inputs: note_id (required).

delete_notes_by_titleC

Delete all notes matching a given title

Inputs: title (required).

get_note_by_idA

Retrieve a single note using its unique ID

Inputs: note_id (required).

get_notes_by_titleB

Get notes by title (exact or partial match)

Inputs: title (required), exact.

list_notesA

List all notes

Inputs: no named parameters.

search_notesD

Search notes

Inputs: query (required).

update_noteB

Update note title and/or body using note ID

Inputs: note_id (required), body, title.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 8 tools

    Disambiguation4/5

    Tools are mostly distinct, but search_notes and get_notes_by_title may overlap in functionality since search could also target titles. However, descriptions help differentiate: search is general, get_by_title is explicit. Overall clear boundaries.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern in snake_case (e.g., list_notes, create_note, delete_notes_by_title). Prepositions like 'by' are used uniformly where needed.

    Tool Count5/5

    8 tools is well-scoped for a note management server. Covers all CRUD operations plus search, with no redundancy. The number feels complete without being excessive.

    Completeness4/5

    Covers create, read (by ID, by title, list all), update, delete, and search. Minor gap: no way to retrieve notes by other attributes like date, but sufficient for basic note-taking.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      A Python-based MCP server adapted from the n8n_agent project that implements a note storage and summarization system. It enables users to create, retrieve, and summarize notes through the Model Context Protocol.
      -
    • A
      license
      A
      quality
      D
      maintenance
      A beginner-friendly MCP server for managing personal notes. Enables Claude to create, list, read, search, update, and delete notes saved as Markdown files.
      6
      MIT
    • F
      license
      B
      quality
      D
      maintenance
      A Python-based MCP server for Claude Desktop that enables you to save, append, read, and list local text notes, including appending Claude's responses.
      5
      -