Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
NOTES_DIRNoNotes storage directory~/notes
NOTES_AUTO_INDEXNoAuto-index on startuptrue
NOTES_GIT_ENABLEDNoEnable git versioningtrue
VECTOR_QDRANT_URLNoQdrant vector database URLhttp://localhost:6333
NOTES_GIT_USER_NAMENoGit commit authorNotes MCP
NOTES_GIT_USER_EMAILNoGit commit emailnotes@localhost
VECTOR_EMBEDDING_URLNoOpenAI-compatible embedding API URLhttp://localhost:8080
VECTOR_EMBEDDING_MODELYesEmbedding model name (no default provided)
NOTES_COLLECTION_PREFIXNoQdrant collection prefixnotes

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
create_noteA

Create a new note with auto-generated UUID.

Args: title: Note title content: Note body content (markdown) tags: Optional list of tags (lowercase, hyphenated) category: Optional category path (e.g., "work/projects")

Returns: Created note as dict

read_noteA

Read a note by its UUID.

Args: note_id: Note UUID string

Returns: Note as dict

update_noteA

Update an existing note. Only provided fields are updated.

Args: note_id: Note UUID string title: New title (optional, may cause file rename) content: New body content (optional) tags: New tags (optional, pass empty list to clear) category: New category (optional, may cause file move, pass empty string to clear)

Returns: Updated note as dict

delete_noteA

Delete a note. The note is removed from the filesystem and search index, but remains recoverable from git history.

Args: note_id: Note UUID string

Returns: Success status

search_notesA

Hybrid semantic + keyword search across all notes.

Query syntax supports filters:

  • tag:tagname - Filter by tag

  • category:path - Filter by category

  • after:YYYY-MM-DD - Created after date

  • before:YYYY-MM-DD - Created before date

  • title:text - Title contains text

Args: query: Search query with optional filters limit: Max results (default 10, max 100) tags: Additional tag filters category: Additional category filter after: Created after date (ISO format) before: Created before date (ISO format)

Returns: List of search results

list_notesA

List notes with optional filtering.

Args: tags: Filter by tags (all must match) category: Filter by category prefix sort_by: Sort field - "modified" (default), "created", or "title" limit: Max results (default 50, max 100)

Returns: List of note summaries, or a single-item list with an error dict if sort_by is not one of the supported fields.

find_similar_notesB

Find notes semantically similar to the given note.

Args: note_id: Source note UUID string limit: Max results (default 5, max 100)

Returns: List of similar notes

get_note_historyA

Get version history for a note from git.

Uses --follow to track history across file moves/renames.

Args: note_id: Note UUID string limit: Max versions to return (default 10, max 100)

Returns: List of version info

restore_note_versionA

Restore a note to a previous version (creates new commit).

Args: note_id: Note UUID string version_id: Git commit SHA to restore from

Returns: Restored note

get_note_linksA

Get incoming and outgoing links for a note.

Args: note_id: Note UUID string

Returns: NoteLinks with outgoing, incoming (backlinks), and broken links

list_tagsA

List all tags with note counts.

Returns: List of tag info

rename_tagC

Rename a tag across all notes.

Args: old_tag: Tag to rename new_tag: New tag name

Returns: Count of notes updated, or error dict if validation fails

merge_tagsA

Merge multiple tags into one.

Args: source_tags: Tags to merge from target_tag: Tag to merge into

Returns: Count of notes updated, or error dict if validation fails

list_categoriesA

List all categories with note counts and hierarchy.

Returns: Category tree

move_categoryA

Move/rename a category.

Args: old_path: Current category path new_path: New category path

Returns: Count of notes updated

reindex_notesA

Force reindex all notes (useful after manual file edits).

Returns: Index status

check_note_healthA

Check health of all notes, reporting parse errors and issues.

Returns: Health report with total notes, parse errors, and recommendations

add_glossary_entryA

Add a new glossary entry.

Args: term: Canonical term (e.g., "USAF") expansion: Full expansion (e.g., "United States Air Force") definition: Detailed definition domain: Optional category (e.g., "military", "tech", "finance") aliases: Optional alternative terms that point to this entry

Returns: Created entry as dict, or error dict for blank/duplicate input

lookup_termA

Exact lookup by term or alias (case-insensitive).

Args: term: Term to look up (e.g., "usaf", "USAF", "US Air Force")

Returns: Glossary entry if found, or error dict

search_glossaryA

Semantic search for glossary entries.

Args: query: Natural language search query domain: Optional domain filter limit: Max results (default 10, max 100)

Returns: List of matching entries with relevance scores, or error dict

list_glossaryA

List all glossary entries with optional domain filter.

Args: domain: Optional domain filter limit: Max results (default 50, max 100)

Returns: List of glossary entry summaries

update_glossary_entryA

Update an existing glossary entry. Only provided fields are updated.

Args: term_or_id: Term (case-insensitive) or UUID to identify the entry term: New canonical term (optional) expansion: New expansion (optional) definition: New definition (optional) domain: New domain (optional, pass "" or null to clear) aliases: New aliases (optional, pass [] to clear)

Returns: Updated entry as dict

delete_glossary_entryB

Delete a glossary entry by term or UUID.

Args: term_or_id: Term (case-insensitive) or UUID string

Returns: Success status or error

add_factA

Add a new fact (subject-predicate-object triple).

Args: subject: Subject entity name (e.g., "John Smith") predicate: Relationship type (e.g., "works_at", "served_in") object: Object entity name (e.g., "Acme Corp") subject_type: Type of subject (e.g., "person", "organization") object_type: Type of object (e.g., "organization", "military_unit") context: Optional context description (e.g., "as squad leader") confidence: Confidence level 0.0-1.0 (1.0 = verified/manual) valid_from: Start date of validity (ISO format: YYYY-MM-DD) valid_to: End date of validity (ISO format: YYYY-MM-DD) source_type: Source type ("note", "document", "glossary", "manual") source_id: Source UUID (for notes/glossary) source_path: Source path (for documents) source_hash: Content hash (for documents) source_location: Location within source (e.g., "page 3")

Returns: Created fact as dict

add_facts_batchA

Add multiple facts, committing each newly created fact independently.

Args: facts: List of fact dicts, each with same fields as add_fact: - subject, predicate, object (required) - subject_type, object_type, context, confidence, valid_from, valid_to - source_type, source_id, source_path, source_hash, source_location

Returns: Summary dict with added count, duplicates count, and any errors

update_factA

Update an existing fact's metadata.

Note: Subject, predicate, and object are immutable (delete and recreate if needed).

Args: fact_id: Fact UUID string context: New context description (omit or null leaves it unchanged; pass an empty string "" to set it blank) confidence: New confidence level 0.0-1.0 valid_from: New start date in ISO format (omit or null leaves it unchanged; pass an empty string "" to clear it) valid_to: New end date in ISO format (omit or null leaves it unchanged; pass an empty string "" to clear it)

Returns: Updated fact as dict

delete_factA

Delete a fact and its sources.

Args: fact_id: Fact UUID string

Returns: Success status

query_factsB

Query facts by various criteria.

Args: subject: Filter by subject (case-insensitive) predicate: Filter by predicate (case-insensitive) object: Filter by object (case-insensitive) subject_type: Filter by subject type object_type: Filter by object type min_confidence: Minimum confidence threshold valid_at: Filter by validity date (ISO format: YYYY-MM-DD) limit: Maximum results (1-100, default 50)

Returns: List of matching facts

get_entityA

Get all facts involving an entity (as subject or object).

Args: name: Entity name (case-insensitive) entity_type: Optional entity type filter

Returns: Dict with entity info and related facts

list_factsB

List facts as lightweight summaries.

Args: limit: Maximum results (1-100, default 50) subject_type: Filter by subject type object_type: Filter by object type predicate: Filter by predicate

Returns: List of fact summaries

search_factsA

Semantic search across indexed facts.

Args: query: Natural language search query limit: Maximum results (1-100, default 10)

Returns: List of matching facts with scores

index_factsA

Index all facts for semantic search.

Args: force: If True, reindex all facts. If False, only index new facts.

Returns: Indexing result with counts

find_connectionsA

Find connections between entities using BFS graph traversal.

Discovers how entities are related through chains of facts.

Args: source_entity: Starting entity name target_entity: Target entity to find path to (optional) If None, returns all reachable entities up to max_depth source_type: Type of source entity (optional, for disambiguation) target_type: Type of target entity (optional, for disambiguation) max_depth: Maximum path length (1-10, default 3) limit: Maximum paths to return (1-100, default 10)

Returns: List of connection paths, each containing: - path: List of facts connecting the entities - entities: List of entity names in the path

get_neighborsA

Get immediate neighbors of an entity in the fact graph.

Returns all entities directly connected by a single fact.

Args: entity: Entity name to get neighbors for entity_type: Type filter (optional, for disambiguation)

Returns: List of neighbors with: - entity: Neighbor entity name - type: Neighbor entity type - predicate: Relationship predicate - direction: 'outgoing' (entity is subject) or 'incoming' (entity is object) - fact_id: UUID of connecting fact

get_facts_with_stale_sourcesA

Get facts with stale (deleted or modified) sources.

Useful for identifying facts that may need review or re-verification.

Args: status: Filter by source status: "deleted", "modified", or "all" (default) limit: Max results (default 50, max 100)

Returns: List of facts with stale sources, or a single-item list with an error dict if status is not one of the supported values.

get_source_statisticsB

Get statistics about fact source integrity.

Returns counts of sources by status across all facts.

Returns: Dict with source counts by status and integrity score

check_fact_integrityB

Check integrity of a specific fact's sources.

Returns breakdown of source statuses for the fact.

Args: fact_id: Fact UUID string

Returns: IntegrityCheckResult with source status breakdown

revalidate_fact_sourcesA

Reset modified/deleted sources back to active after re-verification.

Use this after manually verifying that sources are still valid.

Args: source_id: Optional source UUID to revalidate (e.g., a note or glossary entry UUID) source_type: Optional source type filter ("note", "glossary", "document")

Returns: Count of sources revalidated

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
get_notes_indexFull index of all notes.
get_tags_resourceAll tags with counts.
get_categories_resourceCategory hierarchy with counts.
get_recent_notesRecently modified notes (last 20).
get_orphan_notesNotes with no incoming links.
get_broken_links_resourceAll broken [[uuid]] references.
get_parse_errors_resourceNotes that failed to parse (corrupted or malformed).

Latest Blog Posts

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/michaelkrauty/mcp-notes'

If you have feedback or need assistance with the MCP directory API, please join our Discord server