notes-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DEBUG | No | Log each request to stderr. | |
| NEXTCLOUD_URL | Yes | The URL of your Nextcloud instance, e.g. https://your-nextcloud.example.com. | |
| NEXTCLOUD_USER | Yes | Your Nextcloud username. | |
| NEXTCLOUD_TIMEOUT_MS | No | Per-request deadline. Must be a whole number of milliseconds, at most 2147483647. | 60000 |
| NEXTCLOUD_APP_PASSWORD | Yes | A Nextcloud app password generated under Settings > Security > Devices & sessions. The MCP server only needs an app-password, never your real account password. | |
| NEXTCLOUD_MAX_RESPONSE_BYTES | No | Largest response body buffered. Raise it for very large notes. | 10485760 |
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pingA | Verify connectivity and credentials against the Nextcloud Notes API. Returns the configured server, user and the notes folder settings. |
| list_notesA | List notes, optionally filtered by category. The server matches categories exactly, so pass recursive=true to include subcategories such as "work/clients" under "work". Use exclude=["content"] to keep the response small when only metadata is needed. |
| get_noteA | Fetch one note including its content and etag. Pass the etag to update_note to make the write conditional on nothing else having changed the note first. |
| create_noteA | Create a note. The category is a "/"-delimited folder path and is created automatically if missing. The server sanitises the title and category, so use the values in the response rather than the ones supplied. |
| update_noteA | Update a note. Only the supplied fields change. Passing content replaces the whole body — use append_to_note to add to it. Pass the etag from get_note to refuse the write if someone else changed the note first. |
| append_to_noteA | Append text to the end of a note without resending its whole body. Reads the note and writes it back conditionally, so a concurrent edit is reported rather than overwritten. |
| delete_noteB | Delete a note. The note file goes to the Nextcloud trash, so it is recoverable from the Files app until the trash is emptied, but this server cannot restore it. |
| list_categoriesA | List every category that contains at least one note, with direct and recursive note counts. Categories are derived from the notes themselves because the Notes API has no endpoint for them, so a category holding no notes will not appear here even though the Notes app shows it. |
| set_note_categoryA | Move a note to a category, creating the category if it does not exist. Pass "" to make the note uncategorized. Any attachments move with the note. |
| rename_categoryA | Rename a category by moving every note in it. The Notes API has no category rename, so this rewrites each note individually and is not atomic: a partial failure leaves some notes moved. The per-note outcome is reported. Pass recursive=true to re-parent nested subcategories too. |
| get_settingsA | Read the Notes app settings: notes folder, file suffix, editor mode, and whether hidden files count as notes. |
| update_settingsA | Change the Notes app settings. Set fileSuffix to the extension itself, including the dot — ".md", ".org", or any custom extension; the server stores a non-standard one as the custom suffix. Changing notesPath re-points the app at a different folder: notes in the old folder stop appearing in Notes until it is pointed back. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 12 tools
Each tool has a clearly distinct purpose: ping/get_settings read connectivity and settings; list_notes/get_note retrieve; create/update/append/delete modify; category tools manage categorization. The append vs update distinction is explicitly clarified in descriptions, and set_note_category vs rename_category are well-separated.
Most tools follow a consistent verb_noun snake_case pattern (get_note, create_note, update_note, delete_note, list_notes, etc.). Minor deviations like 'ping' and 'get_settings' break the resource_verb pattern slightly but remain readable and predictable.
12 tools is well-scoped for a notes server covering CRUD, settings, and category management. Each tool earns its place with no redundancy; the count sits comfortably in the ideal 3-15 range.
Full note lifecycle (create/read/update/append/delete) and category management are covered, plus settings and connectivity checks. Minor gap: no restore_note despite delete going to trash, and list_categories excludes empty categories, but these are documented limitations rather than dead ends.