An advanced Model Context Protocol (MCP) server that provides comprehensive Apple Notes integration with enhanced features for knowledge management workflows. Built for Claude Desktop with full CRUD operations, search capabilities, and bulk processing tools.
- Why Enhanced?
- Features
- Installation
- Available Tools
- Usage Examples
- Architecture
- Troubleshooting
- Performance
- Contributing
- License
This server extends the original apple-notes-mcp with powerful additional features:
| Feature | Original | Enhanced | Description |
|---|---|---|---|
| Basic CRUD | โ | โ | Create, read, update, delete notes |
| Search Notes | โ | โ | Search by title and content |
| Folder Management | โ | โ | Create and list folders |
| Bulk Export | โ | โ | Export multiple notes (JSON/Markdown) |
| Advanced Filtering | โ | โ | Filter by folder with pagination |
| Large Dataset Support | โ | โ | 50MB buffer with pagination |
| Error Handling | Basic | Enhanced | Comprehensive error management |
- ๐ Create Notes: Create new notes with title and content
- ๐ Read Notes: Retrieve note content by name
- โ๏ธ Update Notes: Modify existing note content
- ๐ List Notes: List notes with filtering and pagination
- ๐ Search Notes: Find notes by title or content across all folders
- ๐ Folder Management: Create new folders and list existing ones
- ๐ฆ Bulk Export: Export multiple notes in JSON or Markdown format
- ๐ฏ Advanced Filtering: Filter by folder with configurable limits
- ๐ก๏ธ Security: Local-only operations, no external network calls
- macOS with Apple Notes app installed
- Node.js >= 16.0.0
- Claude Desktop with MCP support
-
Clone the repository:
git clone https://github.com/ReinaMacCredy/apple-notes-mcp.git cd apple-notes-mcp -
Install dependencies:
npm install
-
Test the server:
npm test -
Add to Claude Desktop:
# Global installation (recommended) claude mcp add --scope user apple-notes-enhanced -- node /path/to/apple-notes-mcp/server/index.js # Or with absolute path claude mcp add --scope user apple-notes-enhanced -- node "$(pwd)/server/index.js"
-
Verify installation:
claude mcp list # Should show: apple-notes-enhanced - โ Connected
Grant necessary permissions for AppleScript automation:
- System Preferences โ Security & Privacy โ Privacy โ Accessibility
- Add Terminal or Claude Desktop to the allowed applications
- Restart Claude Desktop after granting permissions
List all notes with optional filtering and pagination.
{
"folder": "Personal", // Optional: filter by folder name
"limit": 20 // Optional: max results (default: 20)
}Response: Array of note objects with metadata.
Search notes by title or content across your Apple Notes.
{
"query": "meeting notes", // Required: search term
"folder": "Work", // Optional: search within specific folder
"limit": 10 // Optional: max results (default: 10)
}Response: Array of matching notes with highlighted search context.
Retrieve the full content of a specific note.
{
"note_name": "Project Planning", // Required: exact note title
"folder": "Work" // Optional: folder hint for faster lookup
}Response: Full note content in HTML format.
Create a new note in the specified folder.
{
"name": "Daily Standup", // Required: note title
"content": "Meeting agenda...", // Required: note content
"folder": "Work" // Optional: target folder (default: "Notes")
}Response: Confirmation with created note details.
Update the content of an existing note.
{
"note_name": "Project Status", // Required: note to update
"new_content": "Updated info", // Required: new content
"folder": "Work" // Optional: folder hint
}Response: Confirmation with updated note details.
List all available folders in Apple Notes.
{} // No parameters requiredResponse: Array of folder objects with names and IDs.
Create a new folder in Apple Notes.
{
"folder_name": "Project Alpha" // Required: name for new folder
}Response: Confirmation with created folder details.
Export multiple notes with metadata in various formats.
{
"folder": "Personal", // Optional: export from specific folder
"format": "markdown", // Optional: "json" or "markdown" (default)
"limit": 50 // Optional: max notes to export (default: 50)
}Response: Exported notes in requested format with metadata.
# List recent notes
"List my 10 most recent notes in the Work folder"
# Search for content
"Search for notes containing 'project deadline' in Apple Notes"
# Create a daily note
"Create a note called 'Daily Journal 2024-01-15' with today's agenda"# Export knowledge base
"Export all notes from my 'Research' folder as markdown format"
# Organize notes
"Create a new folder called 'AI Projects' and list all existing folders"
# Bulk operations
"Find all notes about Python programming and export them as JSON"# Prepare for migration
"Export all permanent notes for migration to Notion"
# Cross-platform workflow
"List all folders and their note counts for organization review"
# Project organization
"Search for all notes containing 'trading bot' and create a summary"- MCP SDK: @modelcontextprotocol/sdk v1.11.3
- Runtime: Node.js with native child_process integration
- Automation: AppleScript via osascript for native macOS integration
- Security: Local-only execution, no external dependencies
The server uses AppleScript to interact directly with the Apple Notes app:
- Native macOS automation through osascript
- Proper text escaping for special characters
- Folder-aware operations for better organization
- Efficient bulk operations with pagination support
- ๐ Local Operations: All processing happens on your machine
- ๐ซ No Network Calls: Zero external API requests or data transmission
- ๐ก๏ธ Sandboxed: Operates within macOS security constraints
- โ Permission-Based: Requires explicit macOS accessibility permissions
AppleScript Permission Denied:
# Solution: Grant accessibility permissions
System Preferences โ Security & Privacy โ Privacy โ Accessibility
# Add Terminal, Claude Desktop, or your terminal applicationNotes App Not Responding:
# Solution: Initialize Notes app
open -a Notes
# Wait for app to fully load, then retryMCP Server Connection Failed:
# Check server status
claude mcp list
# Reinstall if needed
claude mcp remove apple-notes-enhanced
claude mcp add --scope user apple-notes-enhanced -- node /path/to/server/index.jsBulk Export Buffer Exceeded:
# Use smaller batch sizes
# The server automatically limits to 50 notes per export
# For larger datasets, export by folder or use multiple calls# Test AppleScript directly
osascript -e 'tell application "Notes" to return count of notes'
# Test server manually
node server/index.js
# Verify MCP configuration
claude mcp list | grep apple-notesFor Large Note Collections (1000+ notes):
- Use folder-based filtering for faster queries
- Implement pagination with smaller limit values
- Consider bulk export in multiple batches
Memory Management:
- Server uses 50MB buffer limit for bulk operations
- Automatic pagination prevents memory overflow
- Stateless design ensures minimal memory footprint
| Metric | Specification |
|---|---|
| Response Time | 100-500ms per operation |
| Concurrent Operations | Single-threaded AppleScript execution |
| Memory Usage | Minimal, stateless server design |
| Scalability | Optimized for personal use (100s-1000s notes) |
| Buffer Limit | 50MB for bulk operations |
| Batch Size | Up to 50 notes per bulk export |
- Rich Text Preservation: Enhanced formatting support
- Attachment Handling: Images, files, and link management
- Template System: Pre-defined note structures
- Real-time Sync: Live updates and change notifications
- Advanced Search: Regex patterns and tag-based filtering
- Backup Integration: Automated versioning and recovery
- Shortcuts App: Native macOS automation workflows
- Calendar Sync: Date-based note organization
- Contact Integration: People-based note tagging
- Location Services: Geographic note capture
We welcome contributions! Here's how you can help:
- Report Issues: Use GitHub Issues for bugs and feature requests
- Submit PRs: Fork the repo and submit pull requests
- Improve Documentation: Help make the docs clearer
- Share Use Cases: Tell us how you use the server
# Clone for development
git clone https://github.com/ReinaMacCredy/apple-notes-mcp.git
cd apple-notes-mcp
# Install dependencies
npm install
# Run tests
npm test
# Test server locally
node server/index.js- Follow ESLint configuration
- Add tests for new features
- Update documentation for API changes
- Ensure AppleScript compatibility
MIT License - See LICENSE file for details.
Questions or Issues? Please open a GitHub Issue or check our troubleshooting guide.
โญ Found this useful? Give us a star on GitHub to help others discover this enhanced Apple Notes integration!