feat(mcp): add all 4 note types, translate N8N docs to English, add N8N workflow examples
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 55s

- tools.js: expose type enum ['text','markdown','richtext','checklist'] in create_note & update_note
  - default changed from 'text' to 'richtext' (matches Prisma schema)
  - isMarkdown marked as deprecated in favour of type='markdown'
- N8N-CONFIG.md: full French → English translation
- N8N-WORKFLOWS.md: full French → English translation
- N8N-EXAMPLES.md: new comprehensive examples for all 22 MCP tools + workflow patterns
- n8n-workflow-mcp-reminder-bot.json: cron → get_due_reminders → Telegram → mark done
- n8n-workflow-mcp-email-to-note.json: IMAP → create_note → urgent Slack alert
- n8n-workflow-mcp-daily-digest.json: 8AM cron → notes + reminders digest → save + Slack
- n8n-workflow-mcp-webhook-to-note.json: universal webhook → create_note → respond
- notebooks-list.tsx: fix truncated notebook names (pe-24→pe-14), replace hover overlay with Tooltip
This commit is contained in:
Antigravity
2026-05-03 20:49:11 +00:00
parent 0311c97a35
commit 0ebf10344d
9 changed files with 1203 additions and 113 deletions

View File

@@ -1,34 +1,34 @@
# Configuration N8N - Memento MCP Server
# N8N Configuration Memento MCP Server
## Configuration MCP Client dans N8N
## MCP Client Setup in N8N
Le serveur MCP utilise le transport **Streamable HTTP** (remplace l'ancien SSE).
The MCP server uses **Streamable HTTP** transport (replaces the legacy SSE transport).
### 1. Generer une cle API
### 1. Generate an API Key
Dans Memento : **Parametres > MCP > Generer une cle**
In Memento: **Settings > MCP > Generate a key**
La cle a le format `mcp_sk_...` et est associee a votre compte utilisateur. Seules vos notes seront accessibles.
The key has the format `mcp_sk_...` and is scoped to your user account. Only your notes will be accessible.
### 2. Configurer le noeud MCP Client dans N8N
### 2. Configure the MCP Client Node in N8N
1. Ajouter un noeud **MCP Client** dans votre workflow
2. **Server Transport** : `Streamable HTTP`
3. **MCP Endpoint URL** : `http://memento-mcp:3001/mcp` (Docker) ou `http://VOTRE_IP:3001/mcp`
4. **Authentication** : Header Auth
- Header Name : `x-api-key`
- Header Value : votre cle API (`mcp_sk_...`)
1. Add an **MCP Client** node to your workflow
2. **Server Transport**: `Streamable HTTP`
3. **MCP Endpoint URL**: `http://memento-mcp:3001/mcp` (Docker) or `http://YOUR_IP:3001/mcp`
4. **Authentication**: Header Auth
- Header Name: `x-api-key`
- Header Value: your API key (`mcp_sk_...`)
### Alternative : curl
### Alternative: curl
```bash
# Health check
curl -H "x-api-key: mcp_sk_votrecle" http://localhost:3001/
curl -H "x-api-key: mcp_sk_yourkey" http://localhost:3001/
# Lister les outils
# List available tools
curl -X POST http://localhost:3001/mcp \
-H "Content-Type: application/json" \
-H "x-api-key: mcp_sk_votrecle" \
-H "x-api-key: mcp_sk_yourkey" \
-d '{
"jsonrpc": "2.0",
"id": 1,
@@ -36,10 +36,10 @@ curl -X POST http://localhost:3001/mcp \
"params": {}
}'
# Creer une note
# Create a note
curl -X POST http://localhost:3001/mcp \
-H "Content-Type: application/json" \
-H "x-api-key: mcp_sk_votrecle" \
-H "x-api-key: mcp_sk_yourkey" \
-d '{
"jsonrpc": "2.0",
"id": 2,
@@ -47,72 +47,81 @@ curl -X POST http://localhost:3001/mcp \
"params": {
"name": "create_note",
"arguments": {
"title": "Ma note",
"content": "Contenu de la note"
"title": "My note",
"content": "Note content here"
}
}
}'
```
## Outils disponibles (22)
## Available Tools (22)
### Notes (11)
| Outil | Description |
|-------|-------------|
| `create_note` | Creer une note |
| `get_notes` | Lister les notes |
| `get_note` | Recuperer une note par ID |
| `update_note` | Modifier une note |
| `delete_note` | Supprimer une note |
| `search_notes` | Rechercher par mot-cle |
| `move_note` | Deplacer vers un notebook |
| `toggle_pin` | Epingler/Depingler |
| `toggle_archive` | Archiver/Desarchiver |
| `export_notes` | Exporter en JSON |
| `import_notes` | Importer depuis JSON |
| Tool | Description |
|------|-------------|
| `create_note` | Create a note |
| `get_notes` | List notes |
| `get_note` | Get a note by ID |
| `update_note` | Update a note |
| `delete_note` | Delete a note |
| `search_notes` | Search by keyword |
| `move_note` | Move to a notebook |
| `toggle_pin` | Pin / unpin |
| `toggle_archive` | Archive / unarchive |
| `export_notes` | Export as JSON |
| `import_notes` | Import from JSON |
#### Note Types
| `type` value | Description |
|--------------|-------------|
| `richtext` | Rich text editor — **default** |
| `markdown` | Markdown rendered (use instead of `isMarkdown`) |
| `text` | Plain text |
| `checklist` | Interactive checklist with `checkItems` |
### Notebooks (6)
| Outil | Description |
|-------|-------------|
| `create_notebook` | Creer un notebook |
| `get_notebooks` | Lister les notebooks |
| `get_notebook` | Details d'un notebook |
| `update_notebook` | Modifier un notebook |
| `delete_notebook` | Supprimer un notebook |
| `reorder_notebooks` | Reordonner |
| Tool | Description |
|------|-------------|
| `create_notebook` | Create a notebook |
| `get_notebooks` | List all notebooks |
| `get_notebook` | Get notebook details |
| `update_notebook` | Update a notebook |
| `delete_notebook` | Delete a notebook |
| `reorder_notebooks` | Reorder notebooks |
### Labels (4)
| Outil | Description |
|-------|-------------|
| `create_label` | Creer un label |
| `get_labels` | Lister les labels |
| `update_label` | Modifier un label |
| `delete_label` | Supprimer un label |
| Tool | Description |
|------|-------------|
| `create_label` | Create a label |
| `get_labels` | List labels |
| `update_label` | Update a label |
| `delete_label` | Delete a label |
### Rappels (1)
### Reminders (1)
| Outil | Description |
|-------|-------------|
| `get_due_reminders` | Recuperer les rappels dus |
| Tool | Description |
|------|-------------|
| `get_due_reminders` | Get due reminders |
## Endpoints HTTP
## HTTP Endpoints
| Endpoint | Methode | Description |
|----------|---------|-------------|
| Endpoint | Method | Description |
|----------|--------|-------------|
| `/` | GET | Health check |
| `/mcp` | GET/POST | Endpoint MCP principal |
| `/sse` | GET/POST | Legacy (redirige vers `/mcp`) |
| `/sessions` | GET | Sessions actives |
| `/mcp` | GET/POST | Main MCP endpoint |
| `/sse` | GET/POST | Legacy (redirects to `/mcp`) |
| `/sessions` | GET | Active sessions |
## Securite
## Security
- **Authentification obligatoire** en production (`MCP_REQUIRE_AUTH=true` dans Docker)
- Les cles API sont gerees depuis **Parametres > MCP** dans Memento
- Chaque cle est scopee a un utilisateur : seules ses notes sont accessibles
- Les cles sont hashees en base (SHA256), seul le raw key est montre a la creation
- **Authentication required** in production (`MCP_REQUIRE_AUTH=true` in Docker)
- API keys are managed from **Settings > MCP** in Memento
- Each key is scoped to a single user: only their notes are accessible
- Keys are hashed in the database (SHA256); the raw key is only shown once at creation
## Ports