- Unified localStorage key to 'theme-preference' across all components
- Fixed header.tsx using wrong localStorage key ('theme' instead of 'theme-preference')
- Added localStorage hybrid persistence for instant theme changes
- Removed router.refresh() which was causing stale data revert
- Replaced Blue theme with Sepia
- Consolidated auth() calls to prevent race conditions
- Updated UserSettingsData types to include all themes
Keep Notes MCP Server
Model Context Protocol (MCP) server for integrating Keep Notes note-taking app with N8N, Cursor, and other automation tools.
Installation
cd mcp-server
npm install
Usage
Quick Start (Windows)
Le plus simple pour démarrer le serveur MCP:
# Exécuter depuis le dossier mcp-server
.\start-mcp.ps1
Ou le script batch:
start-mcp.bat
Ces scripts vérifient automatiquement les prérequis et démarrent le serveur.
Standalone Server (Cross-platform)
npm start
Ou directement:
node index.js
Pour le mode SSE (Server-Sent Events):
npm run start:sse
Voir START-MCP.md pour le guide complet de démarrage.
With Cursor MCP
Add to your Cursor MCP client configuration:
{
"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 titlecontent(string, required): Note contentcolor(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 itemslabels(array, optional): Note labels/tagsisPinned(boolean, optional): Pin the noteisArchived(boolean, optional): Archive the noteimages(array, optional): Note images as base64 encoded stringslinks(array, optional): Note linksreminder(string, optional): Reminder date/time (ISO 8601 format)isReminderDone(boolean, optional): Mark reminder as donereminderRecurrence(string, optional): Reminder recurrence (daily, weekly, monthly, yearly)reminderLocation(string, optional): Reminder locationisMarkdown(boolean, optional): Enable markdown supportsize(string, optional): Note size (small, medium, large)notebookId(string, optional): Notebook ID to associate the note with
Example:
{
"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 notessearch(string, optional): Search query to filter notesnotebookId(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 querynotebookId(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 nameicon(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 IDname(string, optional): Notebook nameicon(string, optional): Notebook iconcolor(string, optional): Notebook colororder(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 namecolor(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 IDname(string, optional): Label namecolor(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
{
"tool": "create_note",
"arguments": {
"title": "{{ $json.subject }}",
"content": "{{ $json.body }}",
"labels": ["email", "inbox"],
"notebookId": "cuid123..."
}
}
Search notes
{
"tool": "search_notes",
"arguments": {
"query": "meeting",
"notebookId": "cuid123..."
}
}
Create a notebook
{
"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:
- Create Note with Classification - Création de notes avec classification automatique par IA
- Search & Summary - Recherche et résumé intelligent de notes
- Notebook Manager - Gestion complète des notebooks (CRUD)
- Reminder Notifications - Automatisation des rappels avec notifications
- Label Manager - Gestion des labels avec suggestion IA
- Email to Note - Conversion automatique d'emails en notes
Pour plus de détails, consultez N8N-WORKFLOWS.md
Importation des Workflows
Chaque workflow peut être importé directement dans N8N via le fichier JSON correspondant:
# Exemple: Importer le workflow de création de notes
# Ouvrir N8N → Import from File → Sélectionner n8n-workflow-create-note.json
License
MIT