read_note
Retrieve content from Apple Notes by specifying a note name and optional account, enabling access to stored information for review or processing.
Instructions
Read the content of a specific note by name.
Args:
note_name: Name of the note to read
account: Optional account name where the note is located
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| note_name | Yes | ||
| account | No |
Implementation Reference
- apple_notes.py:198-239 (handler)The main handler function for the 'read_note' tool, decorated with @mcp.tool() for registration. It constructs and executes AppleScript to retrieve the content of a specified note from Apple Notes.app, handling optional account specification.@mcp.tool() async def read_note(note_name: str, account: Optional[str] = None) -> str: """Read the content of a specific note by name. Args: note_name: Name of the note to read account: Optional account name where the note is located """ if account: script = f''' tell application "Notes" set accountName to "{escape_applescript_string(account)}" set noteName to "{escape_applescript_string(note_name)}" try set targetAccount to account accountName set targetNote to note noteName of targetAccount return (body of targetNote) on error return "ERROR: Note not found" end try end tell ''' else: script = f''' tell application "Notes" set noteName to "{escape_applescript_string(note_name)}" repeat with anAccount in accounts try set targetNote to note noteName of anAccount return (body of targetNote) end try end repeat return "ERROR: Note not found" end tell ''' output, success = run_applescript(script) if not success or output == "ERROR: Note not found": return output if output else f"Note '{note_name}' not found." return f"Note: {note_name}\n\n{output}"
- apple_notes.py:17-35 (helper)Helper function to execute AppleScript commands via subprocess, used by read_note to interact with Notes.app.def run_applescript(script: str) -> tuple[str, bool]: """Run an AppleScript command and return the output.""" try: result = subprocess.run( ["osascript", "-e", script], capture_output=True, text=True, timeout=30 ) if result.returncode == 0: return result.stdout.strip(), True else: error_msg = result.stderr.strip() or result.stdout.strip() return f"Error: {error_msg}", False except subprocess.TimeoutExpired: return "Error: AppleScript execution timed out", False except Exception as e: return f"Error: {str(e)}", False
- apple_notes.py:37-44 (helper)Helper function to properly escape strings for safe insertion into AppleScript, used in read_note script construction.def escape_applescript_string(text: str) -> str: """Escape special characters for AppleScript strings.""" # Replace backslashes, quotes, and newlines text = text.replace("\\", "\\\\") text = text.replace('"', '\\"') text = text.replace("\n", "\\n") return text