Skip to main content
Glama
mcp-inotes

mcp-inotes

by pongsapakl

mcp-inotes

Python License

A lightweight MCP (Model Context Protocol) server that enables Claude and other LLMs to interact with Apple Notes.

About

This MCP server gives Claude the ability to create, read, and append to notes in Apple Notes. It's designed with a safety-first approach: all operations are restricted to a single designated folder, and the server only supports append operations (no overwrites or deletions).

Perfect for using Claude as your AI journaling assistant, note-taking companion, or personal knowledge base manager.

Related MCP server: Apple Notes MCP

Features

  • Create new notes with title and body

  • Read existing notes by ID

  • Append content to notes (no overwrites)

  • List all notes with metadata

  • Safety-first: Operations restricted to "Claude Diary" folder only

  • Append-only design prevents accidental data loss

  • Built with FastMCP

Prerequisites

  • macOS - Uses AppleScript to interact with Notes.app

  • Python 3.12+

  • Apple Notes.app

  • Claude Desktop or another MCP-compatible client

  • Basic familiarity with MCP servers

Installation

git clone https://github.com/pongsapakl/mcp-inotes.git
cd mcp-inotes
uv sync

Configuration

Add to your MCP settings file. For Claude Desktop, edit:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Alternative: ~/.mcp.json

{
  "mcpServers": {
    "mcp-inotes": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/mcp-inotes",
        "run",
        "python",
        "main.py"
      ]
    }
  }
}

Important: Replace /absolute/path/to/mcp-inotes with the actual path where you cloned this repository.

Required Setup

Before using the server, create a folder named "Claude Diary" in Apple Notes:

  1. Open Apple Notes

  2. Right-click in the sidebar

  3. Select "New Folder"

  4. Name it exactly: Claude Diary

This folder is where all notes will be created and managed.

Available Tools

  • create_note(title, body) - Create new note in Claude Diary folder

  • get_note(note_id) - Read full note content and metadata

  • append_to_note(note_id, content) - Append content to existing note (append-only)

  • get_notes_list() - List all notes with IDs and timestamps

Usage Examples

Here's how Claude can use these tools in practice:

Creating a daily journal entry:

User: "Create a journal entry for today about my morning routine"
Claude: [Uses create_note("Daily Journal - 2026-01-15", "Woke up at 7am...")]

Building on previous notes:

User: "Add my evening reflections to today's journal"
Claude: [Uses get_notes_list() to find today's note, then append_to_note()]

Searching through your notes:

User: "What did I write about my project last week?"
Claude: [Uses get_notes_list(), then get_note() to read relevant entries]

Safety & Constraints

This server is designed with deliberate limitations for safety:

Folder Restriction

  • All operations are hardcoded to work only with the "Claude Diary" folder

  • Cannot access, modify, or delete notes in other folders

  • Prevents accidental changes to important notes elsewhere in your Apple Notes

Append-Only Operations

  • No delete functionality

  • No overwrite functionality

  • Only supports creating new notes and appending to existing ones

  • Protects against accidental data loss

Why "Claude Diary"? The folder name is intentionally hardcoded rather than configurable. This constraint ensures you always know exactly where the MCP server can operate, reducing the risk of unintended modifications to other notes.

Limitations

  • Date filtering not implemented: The start_date and end_date parameters in get_notes_list() are accepted but not yet functional. Currently returns all notes from the Claude Diary folder.

  • macOS only: Relies on AppleScript, which is macOS-specific

  • Single folder: Cannot manage notes across multiple folders

  • No delete operations: By design, but means you'll need to manually clean up unwanted notes in Apple Notes

Troubleshooting

"Folder not found" error

  • Make sure you've created a folder named exactly "Claude Diary" in Apple Notes

  • The name is case-sensitive

Server not connecting

  • Verify the absolute path in your MCP config file is correct

  • Try running uv sync again to ensure dependencies are installed

  • Check Claude Desktop logs: ~/Library/Logs/Claude/

AppleScript permission denied

  • macOS may prompt you to grant permissions the first time

  • Check System Settings → Privacy & Security → Automation

  • Ensure Claude/your MCP client can control Apple Notes

Notes not appearing

  • Make sure you're looking in the "Claude Diary" folder in Apple Notes

  • Try refreshing the Notes app

  • Check that the note IDs being used are valid

Contributing

Contributions are welcome! Feel free to:

  • Report issues on GitHub

  • Submit pull requests for bug fixes or improvements

  • Suggest new features (while respecting the safety-first design philosophy)

License

MIT


Built with FastMCP | Learn more about Model Context Protocol

Available Tools

4 tools
append_to_noteA

Append content to an existing note (APPEND ONLY - no overwrite)

Args: note_id: The ID of the note to append to (x-coredata:// URL) content: The content to append

Returns: Success message

Note: This operation only APPENDS content. It cannot overwrite or delete existing content. This is a safety feature to prevent data loss.

Inputs: content (required), note_id (required). Returns: result

create_noteA

Create a new note in Claude Diary folder

Args: title: The title of the note body: The content/body of the note

Returns: Success message with note ID

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

get_noteA

Get full content of a specific note by ID

Args: note_id: The note ID (x-coredata:// URL)

Returns: Formatted note content with metadata

Inputs: note_id (required). Returns: result

get_notes_listA

Get list of notes from Claude Diary folder

Args: start_date: Start date in ISO format (YYYY-MM-DD) - not yet implemented end_date: End date in ISO format (YYYY-MM-DD) - not yet implemented

Returns: Formatted list of notes with metadata

Note: Currently returns all notes from Claude Diary folder. Date filtering is not yet implemented.

Inputs: end_date, start_date. Returns: result

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 4 tools

    Disambiguation5/5

    Each tool has a distinct purpose: create, append, retrieve single, and list. No overlap or ambiguity exists between the operations.

    Naming Consistency5/5

    All tool names follow the consistent verb_noun pattern (create_note, append_to_note, get_note, get_notes_list). The naming convention is uniform and predictable.

    Tool Count5/5

    With 4 tools, the server is well-scoped for a note-taking and diary management domain. Each tool serves a necessary function without redundancy.

    Completeness4/5

    The server covers create, append (update), read, and list operations, which covers the core lifecycle. Minor gaps include no delete functionality and date filtering not yet implemented, but these are not critical for the primary use case.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Enables AI assistants to read, create, search, update, and delete Apple Notes through natural language conversation, using JXA to communicate directly with the Notes app.
      8
      4,261 npm
      30
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables LLMs to read, write, and manage Apple Notes directly via markdown, including listing, fetching, creating, and appending notes.
      57 npm
      -