Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MARKS_ROOTNoRoot directory to serve (equivalent to --root flag)Current working directory
MARKS_LOG_LEVELNoLog level (debug, info, warn, error, fatal) (equivalent to --log-level flag)info
MARKS_SCHEMAS_DIRNoDirectory to load schema YAML files from (equivalent to --schemas-dir flag)~/.markscribe/schemas/

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
read_noteA

Returns { root, path, frontmatter, content }. Pass a relative path. Use list_directory first if unsure of the path.

write_noteA

Writes content to a note. Pass { path, content } and optionally frontmatter (object) and mode (overwrite|append|prepend, default overwrite). Returns { root, path, message }. Creates parent directories automatically.

patch_noteA

Replaces a string within a note. Pass { path, oldString, newString } and optionally replaceAll (boolean). Returns { root, path, replacements }. Read the note first to confirm the exact string.

delete_noteA

Deletes a note. Pass { path, confirmPath } where both must match exactly. Returns { root, path, success }. This is irreversible.

move_noteA

Moves or renames a note. Pass { oldPath, newPath }. Optional: overwrite (boolean), updateLinks (boolean, propagates [[wikilink]] renames). Returns { root, oldPath, newPath } and optionally linksUpdated.

read_multiple_notesA

Batch-reads up to 10 notes. Pass { paths: string[] }. Returns { root, results[] } where each result has path, note (or null), and optional error.

list_directoryA

Returns { root, path, entries[] }. Each entry has name, type (file|directory), and relative path. Omit path or pass "" to list the root. Blocked paths (.obsidian, .git, node_modules) are excluded automatically.

get_statsA

Returns { root, noteCount, totalBytes, recentFiles[] }. No arguments needed. Use this to verify connectivity and get an overview of the active directory.

switch_directoryA

Accepts { path } (absolute path). Rebuilds all services for the new root directory. Returns { root, switched: true } on success. Call get_stats after switching to verify.

get_frontmatterA

Returns { root, path, frontmatter } for a note. Reads only the YAML frontmatter block, not the body.

update_frontmatterA

Sets and/or removes frontmatter keys. Pass { path, fields?, remove?, merge? }. fields sets key-value pairs (null is a real value, pass-through to schema validation). remove is a list of keys to delete. merge (default true) merges with existing frontmatter; false replaces all fields. Returns { root, path, frontmatter }.

manage_tagsA

Add, remove, or list tags on a note. Pass { path, operation, tags? } where operation is add|remove|list. Handles both YAML tags arrays and inline #tags. Returns { root, path, tags, added?, removed? }.

search_notesA

Full-text BM25 search. Pass { query } and optionally scope (path prefix), searchContent (default true), searchFrontmatter (default false), limit. Returns { root, results[] } sorted by relevance, each with path, score, excerpt.

lint_noteB

Validates a note against its resolved schema. Pass { path }. Returns { root, path, pass, schema, checks[] }. Each check has name, pass, detail. Returns schema: null if no schema matches.

validate_folderA

Classifies and validates a folder. Pass { path }. Returns { root, summary, path, pass, folderType, schema, notes, structural }. Folder types: packet, superfolder, supplemental, unclassified.

validate_areaA

Recursively validates a subtree. Pass { path }. Returns { root, summaryText, path, pass, folders, summary }. Use for checking a section of the directory.

validate_allA

Validates the entire directory tree using the convention cascade. Optional verbose (default false) — when false, the response includes only folders/notes with actionable results. Returns { root, summaryText, pass, conventionSources, folders, summary }. Discovers _conventions.md notes and resolves folder schemas.

list_schemasA

Lists all loaded schemas. No arguments. Returns { root, schemas[] } where each schema has name, description, type (note|folder), and type-specific details.

create_noteA

Creates a new note with convention-aware defaults. Pass { path, content } and optionally frontmatter (overrides), noteSchema (explicit schema name). Resolves the applicable schema, applies its frontmatter template, merges overrides, writes the note, and lints it. Returns { root, path, frontmatter, lintResult }. Fails if the note already exists.

get_backlinksA

Finds all notes linking to a given note. Pass { path }. Returns { root, path, backlinks[] } where each backlink has sourcePath, link, line.

find_unlinked_mentionsA

Finds plain-text occurrences of a note's title that are not wikilinked. Pass { path }. Returns { root, path, mentions[] } with sourcePath, mentionText, line, column.

find_broken_linksA

Finds wikilinks pointing to non-existent notes. Optional { scope } path prefix. Returns { root, scope, brokenLinks[] } with sourcePath, link, line.

find_orphansA

Finds notes with no incoming wikilinks. Optional { scope } path prefix. Returns { root, scope, orphans[] } (array of relative paths).

find_bidirectional_mentionsA

Two-direction mention sweep for batch new-note operations. Pass { newNotes, terms?, scope? }. Returns { root, scope, existing_to_new[], new_to_existing[] }. existing_to_new lists plain-text mentions of new-note titles found inside existing notes. new_to_existing lists plain-text mentions of free terms found inside the new notes. If a free term equals a new-note stem, the title classification wins.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/Erodenn/markscribe'

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