create-note
Create new notes in Apple Notes with title, content, and optional tags using natural language commands.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| content | Yes | ||
| tags | No |
Implementation Reference
- src/index.ts:36-64 (handler)MCP tool handler for 'create-note': calls AppleNotesManager.createNote and returns formatted success or error response.async ({ title, content, tags = [] }: CreateNoteParams) => { try { const note = notesManager.createNote(title, content, tags); if (!note) { return { content: [{ type: "text", text: "Failed to create note. Please check your Apple Notes configuration." }], isError: true }; } return { content: [{ type: "text", text: `✅ Note created successfully: "${note.title}"` }] }; } catch (error) { return { content: [{ type: "text", text: `Error creating note: ${error instanceof Error ? error.message : 'Unknown error'}` }], isError: true }; } }
- src/index.ts:18-22 (schema)Input schema for 'create-note' tool using Zod validators.const createNoteSchema = { title: z.string().min(1, "Title is required"), content: z.string().min(1, "Content is required"), tags: z.array(z.string()).optional() };
- src/index.ts:34-65 (registration)Registration of the 'create-note' tool on the MCP server."create-note", createNoteSchema, async ({ title, content, tags = [] }: CreateNoteParams) => { try { const note = notesManager.createNote(title, content, tags); if (!note) { return { content: [{ type: "text", text: "Failed to create note. Please check your Apple Notes configuration." }], isError: true }; } return { content: [{ type: "text", text: `✅ Note created successfully: "${note.title}"` }] }; } catch (error) { return { content: [{ type: "text", text: `Error creating note: ${error instanceof Error ? error.message : 'Unknown error'}` }], isError: true }; } } );
- Core helper method in AppleNotesManager that executes AppleScript to create the note in Apple Notes app.createNote(title: string, content: string, tags: string[] = []): Note | null { const formattedContent = formatContent(content); const script = ` tell application "Notes" tell account "${this.ICLOUD_ACCOUNT}" make new note with properties {name:"${title}", body:"${formattedContent}"} end tell end tell `; const result = runAppleScript(script); if (!result.success) { console.error('Failed to create note:', result.error); return null; } return { id: Date.now().toString(), title, content, tags, created: new Date(), modified: new Date() }; }
- Helper function to format note content for AppleScript compatibility.const formatContent = (content: string): string => { if (!content) return ''; // Define replacement patterns for text formatting const replacements: [string, RegExp][] = [ ['\n', /\n/g], ['\t', /\t/g], ['"', /"/g], // Escape quotes for AppleScript ]; return replacements.reduce( (text, [char, pattern]) => text.replace(pattern, char === '"' ? '\\"' : '<br>'), content ); };