# Keep Notes MCP Server Model Context Protocol (MCP) server for integrating Keep Notes note-taking app with N8N, Cursor, and other automation tools. ## Installation ```bash cd mcp-server npm install ``` ## Usage ### Quick Start (Windows) Le plus simple pour démarrer le serveur MCP: ```powershell # Exécuter depuis le dossier mcp-server .\start-mcp.ps1 ``` Ou le script batch: ```cmd start-mcp.bat ``` Ces scripts vérifient automatiquement les prérequis et démarrent le serveur. ### Standalone Server (Cross-platform) ```bash npm start ``` Ou directement: ```bash node index.js ``` Pour le mode SSE (Server-Sent Events): ```bash npm run start:sse ``` Voir [START-MCP.md](./START-MCP.md) pour le guide complet de démarrage. ### With Cursor MCP Add to your Cursor MCP client configuration: ```json { "mcpServers": { "keep-notes": { "command": "node", "args": ["D:/dev_new_pc/Keep/mcp-server/index.js"] } } } ``` ### With N8N Configure the MCP node in N8N with the server details above. ## Available Tools ### Note Management #### create_note Create a new note in Keep Notes. **Parameters:** - `title` (string, optional): Note title - `content` (string, required): Note content - `color` (string, optional): Note color (default, red, orange, yellow, green, teal, blue, purple, pink, gray) - `type` (string, optional): Note type (text or checklist) - `checkItems` (array, optional): Checklist items - `labels` (array, optional): Note labels/tags - `isPinned` (boolean, optional): Pin the note - `isArchived` (boolean, optional): Archive the note - `images` (array, optional): Note images as base64 encoded strings - `links` (array, optional): Note links - `reminder` (string, optional): Reminder date/time (ISO 8601 format) - `isReminderDone` (boolean, optional): Mark reminder as done - `reminderRecurrence` (string, optional): Reminder recurrence (daily, weekly, monthly, yearly) - `reminderLocation` (string, optional): Reminder location - `isMarkdown` (boolean, optional): Enable markdown support - `size` (string, optional): Note size (small, medium, large) - `notebookId` (string, optional): Notebook ID to associate the note with **Example:** ```json { "title": "Shopping List", "content": "Buy groceries", "color": "blue", "type": "checklist", "checkItems": [ { "id": "1", "text": "Milk", "checked": false }, { "id": "2", "text": "Bread", "checked": false } ], "labels": ["shopping", "personal"], "notebookId": "cuid123..." } ``` #### get_notes Get all notes from Keep Notes. **Parameters:** - `includeArchived` (boolean, optional): Include archived notes - `search` (string, optional): Search query to filter notes - `notebookId` (string, optional): Filter notes by notebook ID #### get_note Get a specific note by ID. **Parameters:** - `id` (string, required): Note ID #### update_note Update an existing note. **Parameters:** - `id` (string, required): Note ID - All other fields from create_note are optional #### delete_note Delete a note by ID. **Parameters:** - `id` (string, required): Note ID #### search_notes Search notes by query. **Parameters:** - `query` (string, required): Search query - `notebookId` (string, optional): Filter search by notebook ID #### get_labels Get all unique labels from notes (legacy method). **Parameters:** None #### toggle_pin Toggle pin status of a note. **Parameters:** - `id` (string, required): Note ID #### toggle_archive Toggle archive status of a note. **Parameters:** - `id` (string, required): Note ID ### Notebook Management #### create_notebook Create a new notebook. **Parameters:** - `name` (string, required): Notebook name - `icon` (string, optional): Notebook icon (emoji) - `color` (string, optional): Notebook color (hex code) - `order` (number, optional): Notebook order #### get_notebooks Get all notebooks. **Parameters:** None #### get_notebook Get a specific notebook by ID with its notes. **Parameters:** - `id` (string, required): Notebook ID #### update_notebook Update an existing notebook. **Parameters:** - `id` (string, required): Notebook ID - `name` (string, optional): Notebook name - `icon` (string, optional): Notebook icon - `color` (string, optional): Notebook color - `order` (number, optional): Notebook order #### delete_notebook Delete a notebook by ID. **Parameters:** - `id` (string, required): Notebook ID ### Label Management #### create_label Create a new label. **Parameters:** - `name` (string, required): Label name - `color` (string, optional): Label color (red, orange, yellow, green, teal, blue, purple, pink, gray) - `notebookId` (string, required): Notebook ID to associate the label with #### get_labels_detailed Get all labels with details. **Parameters:** - `notebookId` (string, optional): Filter labels by notebook ID #### update_label Update an existing label. **Parameters:** - `id` (string, required): Label ID - `name` (string, optional): Label name - `color` (string, optional): Label color #### delete_label Delete a label by ID. **Parameters:** - `id` (string, required): Label ID ## N8N Integration Example ### Create a note from email ```json { "tool": "create_note", "arguments": { "title": "{{ $json.subject }}", "content": "{{ $json.body }}", "labels": ["email", "inbox"], "notebookId": "cuid123..." } } ``` ### Search notes ```json { "tool": "search_notes", "arguments": { "query": "meeting", "notebookId": "cuid123..." } } ``` ### Create a notebook ```json { "tool": "create_notebook", "arguments": { "name": "Work Projects", "icon": "💼", "color": "#3B82F6" } } ``` ## Database The MCP server connects to the same SQLite database as the Keep Notes web app located at: `D:/dev_new_pc/Keep/keep-notes/prisma/dev.db` ## Prisma Schema Reference The MCP server works with the following Prisma models: ### Note Model - id: String (CUID) - title: String? - content: String - color: String (default: "default") - isPinned: Boolean - isArchived: Boolean - type: String (default: "text") - checkItems: String? (JSON) - labels: String? (JSON) - images: String? (JSON) - links: String? (JSON) - reminder: DateTime? - isReminderDone: Boolean - reminderRecurrence: String? - reminderLocation: String? - isMarkdown: Boolean - size: String (default: "small") - notebookId: String? - userId: String? - order: Int - createdAt: DateTime - updatedAt: DateTime ### Notebook Model - id: String (CUID) - name: String - icon: String? - color: String? - order: Int - userId: String - createdAt: DateTime - updatedAt: DateTime ### Label Model - id: String (CUID) - name: String - color: String (default: "gray") - notebookId: String? - userId: String? - createdAt: DateTime - updatedAt: DateTime ## N8N Workflows Ce serveur MCP est accompagné de 6 workflows N8N prêts à l'emploi pour une intégration complète: 1. **Create Note with Classification** - Création de notes avec classification automatique par IA 2. **Search & Summary** - Recherche et résumé intelligent de notes 3. **Notebook Manager** - Gestion complète des notebooks (CRUD) 4. **Reminder Notifications** - Automatisation des rappels avec notifications 5. **Label Manager** - Gestion des labels avec suggestion IA 6. **Email to Note** - Conversion automatique d'emails en notes Pour plus de détails, consultez [N8N-WORKFLOWS.md](./N8N-WORKFLOWS.md) ### Importation des Workflows Chaque workflow peut être importé directement dans N8N via le fichier JSON correspondant: ```bash # Exemple: Importer le workflow de création de notes # Ouvrir N8N → Import from File → Sélectionner n8n-workflow-create-note.json ``` ## License MIT