Skip to main content
Glama

search-notes

Search Apple Notes using natural language queries to find specific notes based on content, titles, or keywords.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYes

Implementation Reference

  • src/index.ts:67-93 (registration)
    Registration of the 'search-notes' MCP tool, including the inline handler function that executes the tool logic by calling notesManager.searchNotes and formatting the response.
    server.tool( "search-notes", searchSchema, async ({ query }: SearchParams) => { try { const notes = notesManager.searchNotes(query); const message = notes.length ? `Found ${notes.length} notes:\n${notes.map(note => `• ${note.title}`).join('\n')}` : "No notes found matching your query"; return { content: [{ type: "text", text: message }] }; } catch (error) { return { content: [{ type: "text", text: `Error searching notes: ${error instanceof Error ? error.message : 'Unknown error'}` }], isError: true }; } } );
  • Input schema definition for the 'search-notes' tool using Zod validation.
    const searchSchema = { query: z.string().min(1, "Search query is required") };
  • TypeScript interface for SearchParams used in the tool handler signature.
    export interface SearchParams { query: string; }
  • Core implementation of note searching in AppleNotesManager using AppleScript to query Notes.app for notes matching the query in title.
    /** * Searches for notes by title * @param query - The search query * @returns Array of matching notes */ searchNotes(query: string): Note[] { const sanitizedQuery = query.replace(/"/g, '\\"'); const script = ` tell application "Notes" tell account "${this.ICLOUD_ACCOUNT}" get name of notes where name contains "${sanitizedQuery}" end tell end tell `; const result = runAppleScript(script); if (!result.success) { console.error('Failed to search notes:', result.error); return []; } return result.output .split(',') .filter(Boolean) .map(title => ({ id: Date.now().toString(), title: title.trim(), content: '', tags: [], created: new Date(), modified: new Date() })); }
  • Utility function to execute AppleScript commands, used by searchNotes to interact with Apple Notes.app.
    export function runAppleScript(script: string): AppleScriptResult { try { // Trim and sanitize the script const sanitizedScript = script.trim().replace(/[\r\n]+/g, ' '); // Execute the AppleScript command const output = execSync(`osascript -e '${sanitizedScript}'`, { encoding: 'utf8', timeout: 10000 // 10 second timeout }); return { success: true, output: output.trim() }; } catch (error) { console.error('AppleScript execution failed:', error); return { success: false, output: '', error: error instanceof Error ? error.message : 'Unknown error occurred while executing AppleScript' }; } }
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