NoteDiscovery MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NOTEDISCOVERY_URL | No | The URL of the NoteDiscovery instance | http://localhost:8000 |
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 |
|---|---|
| search_notesA | Search through all notes using full-text search. Returns matching notes with snippets showing where the match was found. Use this to find notes by content, keywords, or phrases. |
| list_notesA | List notes in the knowledge base with their metadata (title, path, last modified date, size). Use this to get an overview of available notes or find notes by browsing. Use folder to list only part of the vault. |
| list_foldersA | List folders in the knowledge base, including empty ones, with the number of notes and subfolders directly inside each one. |
| get_noteA | Read the full content of a specific note by its path. Returns the complete markdown content along with metadata. Use this after finding a note via search or list to read its contents. |
| list_tagsA | List all tags used across notes with the count of notes for each tag. Use this to understand how notes are organized and find topics. |
| get_notes_by_tagA | Get all notes that have a specific tag, or several tags. Use this to find related notes on a topic. |
| get_graphA | Get the knowledge graph showing relationships between notes. Returns nodes (notes) and edges (links between them). Use this to understand how notes connect to each other. |
| get_backlinksA | Get all notes that link TO a specific note (backlinks/reverse links). Use this to discover what other notes reference the current note, helping understand its importance and connections in the knowledge base. |
| create_noteA | Create a new note or update an existing one. The note will be saved as a markdown file. Use this to save new information or update existing notes. |
| delete_noteA | Delete a note permanently. Use with caution - this cannot be undone. |
| create_folderB | Create a new folder for organizing notes. |
| move_folderA | Move or rename a folder with all its notes and subfolders. Fails if a folder already exists at the new path. Other notes do not change: the result lists the notes whose links into it no longer work. |
| delete_folderA | Delete an empty folder. Fails if the folder still has anything in it, or if it is the vault root. |
| append_to_noteA | Append content to an existing note without overwriting. Perfect for journals, logs, meeting notes, or collecting ideas incrementally. |
| edit_noteA | Edit part of an existing note by replacing one exact piece of text, without resending the whole note. old_str must match the note content (as returned by get_note) exactly once, including whitespace and line breaks; otherwise nothing is written. To edit a section, include its heading in old_str. Prefer this over create_note for changes to existing notes. |
| move_noteB | Move or rename a note to a different path. Use this to reorganize notes or rename them. Other notes do not change: the result lists the notes whose links to it no longer work. |
| get_recent_notesA | Get recently modified notes. Useful for finding what you were working on recently. |
| create_note_from_templateA | Create a new note from a template. Built-in placeholders like {{title}}, {{date}}, {{datetime}}, {{folder}}, {{date:FMT}} are substituted automatically (FMT is a Python strftime string). Use update_note afterwards if you need to inject custom content. |
| list_templatesB | List available note templates. Templates provide pre-formatted structures for common note types. |
| get_templateA | Get the content of a specific template. Use this to see what a template contains before using it. |
| health_checkA | Check if NoteDiscovery server is running and healthy. Use this to verify connectivity. |
| get_configA | Get NoteDiscovery server configuration: app name, version, whether search is enabled, authentication mode, autosave delay. Useful for confirming what server you're connected to and what features are available before calling other tools. |
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 22 tools
Most tools target a distinct resource+action (get_note vs list_notes vs search_notes vs get_recent_notes are clearly separable), and descriptions actively disambiguate the write paths. The main overlap is that create_note also updates existing notes, putting it in tension with edit_note and append_to_note, and the docs reference a non-existent update_note tool, which muddies selection slightly.
Nearly everything follows a clean verb_noun snake_case pattern (get_note, list_tags, create_folder, move_note, delete_folder, search_notes). The only deviations are health_check (noun-based) and the inconsistent verb choices for note writing (create/edit/append), which are minor and still readable.
At 22 tools this sits at the heavy end of the scale for a note vault server, spanning notes, folders, tags, graph, templates, and admin. Each tool is plausibly useful, but the surface could be trimmed (e.g. folding recent/config/health into generic listings) without losing capability.
Note lifecycle is well covered (read, create, edit, append, move, delete) along with folders, tags, graph/backlinks, search, and templates. Gaps remain: no tag add/remove or rename operations, no template create/update/delete, and no outgoing-link inspection beyond the full graph, plus a dangling reference to an update_note tool.