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) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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