upnote-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| UPNOTE_DB | No | Path to upnote.sqlite3 | auto-detected per platform |
| UPNOTE_DATA_DIR | No | UpNote data directory | ~/Library/Containers/com.getupnote.desktop/Data/Library/Application Support/UpNote (macOS) |
| UPNOTE_IMAGES_DIR | No | Attachment blob directory | <data dir>/images |
| UPNOTE_WRITE_MODE | No | Create backend: url (default) or sqlite | url |
| UPNOTE_BACKUPS_DIR | No | Where pre-write backups go | <data dir>/MCP Backups |
| UPNOTE_ALLOW_WHILE_RUNNING | No | Permit direct writes while UpNote runs (set to 1 to override) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_notesA | Search notes by text in the title/body, optionally scoped to a notebook or tag. Returns brief records (id, title, snippet, notebooks, flags, timestamps),
most-recently-updated first. Omit |
| get_noteB | Get a single note's full content and metadata in the requested format. |
| list_notebooksA | List all notebooks as a parent/child tree, with per-notebook note counts. |
| list_notesC | List notes by a filter: recent, notebook (needs notebook_id), tag (needs tag_id), bookmarked, pinned, trashed, or templates. |
| list_tagsA | List all tags with their note counts. |
| get_note_attachmentsA | List the attachments/files referenced by a note, with on-disk paths. |
| read_attachmentA | Read an attachment by file id. Small files are returned inline as base64; large files return their on-disk path instead. |
| get_statsA | Return library statistics (counts of notes, notebooks, tags, files) and the DB path. |
| create_noteA | Create a new note. By default this uses the upnote:// URL scheme (app-native and safe while UpNote is running); the app generates the note, so no id is returned. Set the UPNOTE_WRITE_MODE=sqlite environment variable to create via direct SQLite instead (requires the app to be quit; returns the new note id). For 'notebook', pass a notebook title (URL mode) or notebook id (sqlite mode). |
| create_notebookC | Create a new notebook via the upnote:// URL scheme. |
| update_noteA | Edit a note's title/content/flags via direct SQLite write. Requires the UpNote app to be quit (override with UPNOTE_ALLOW_WHILE_RUNNING=1). A database backup is taken automatically. Use dry_run=true to preview. |
| move_noteA | Move a note into the given notebook (direct SQLite write; app must be quit). |
| append_noteA | Append content to the end of a note, preserving its existing body verbatim. Unlike update_note (which replaces content), this concatenates the new content after the current html, optionally under an '## heading' divider. Safe for rich/image-heavy notes. Direct SQLite write; the app must be quit. |
| merge_notesA | Fold one note into another: append the source's body under an '## ' divider, migrate its images so nothing is orphaned, then trash the source. Ideal for triaging an inbox/whiteboard note into an existing canonical note. Direct SQLite write; the app must be quit. Use dry_run=true to preview. |
| delete_noteA | Delete a note: move to trash (default) or hard-delete with hard=true. Direct SQLite write; the app must be quit. Use dry_run=true to preview. |
| restore_noteB | Restore a trashed/deleted note (direct SQLite write; app must be quit). |
| tag_noteA | Add a tag (by title or id) to a note, creating the tag if needed. Direct SQLite write; the app must be quit. |
| untag_noteA | Remove a tag (by title or id) from a note (direct SQLite write; app must be quit). |
| open_in_upnoteA | Open a note in UpNote (by note_id) or run a search in the app (by query) using the upnote:// URL scheme. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/bug-breeder/upnote-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server