Skip to main content
Glama
Siddhant-K-code

Apple Notes MCP Server

create-note

Create new notes in Apple Notes with title, content, and optional tags using natural language commands.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
titleYes
contentYes
tagsNo

Implementation Reference

  • 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
        };
      }
    }
  • 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
      );
    };
Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Siddhant-K-code/mcp-apple-notes'

If you have feedback or need assistance with the MCP directory API, please join our Discord server