From 31a288933ff825063bf688c8493c8e65b84276ff Mon Sep 17 00:00:00 2001 From: helm Date: Mon, 6 Jul 2026 21:41:52 -0400 Subject: [PATCH] Front-load (not memory) disambiguation into tool descriptions for 120-char prompt truncation Ulysses truncates MCP tool descriptions to 120 chars in prompt text. Moved '(not memory)' to first line of all four tool docstrings so the disambiguation survives truncation. Kept Args/Returns sections intact. --- server.py | 28 ++++------------------------ 1 file changed, 4 insertions(+), 24 deletions(-) diff --git a/server.py b/server.py index fd33dfb..2d05b28 100644 --- a/server.py +++ b/server.py @@ -124,9 +124,7 @@ mcp = FastMCP("Obsidian Vaults") @mcp.tool() def get_vaults() -> dict[str, Any]: - """FILESYSTEM TOOL — List all Obsidian vaults found on disk in the vaults root directory. - - USE THIS TO: discover which vaults are available before browsing one. + """FILESYSTEM TOOL (not memory) — List Obsidian vaults on disk. Use to discover available vaults before browsing one. Returns a list of vaults with name, path, and note counts. """ @@ -162,15 +160,7 @@ def list_vault( include_directories: bool = True, file_extensions: list[str] | None = None, ) -> dict[str, Any]: - """FILESYSTEM TOOL — Reads your Obsidian vault from disk. Lists files and folders. - - USE THIS TO: browse your campaign notes, discover what documents exist, - find folders, see the vault structure. Call this BEFORE get_vault_document - so you know what's available to read. - - IMPORTANT: This reads the ACTUAL FILESYSTEM. It is NOT a memory search, - NOT a conversation search, NOT a database query. It looks at real files - and folders on disk in your Obsidian vault directory. + """FILESYSTEM TOOL (not memory) — List files and folders in vault on disk. See structure before reading docs. Args: vault_name: Name of the vault (subdirectory name under vaults root) @@ -237,10 +227,7 @@ def list_vault( @mcp.tool() def get_vault_document(vault_name: str, doc_path: str) -> dict[str, Any]: - """FILESYSTEM TOOL — Read a markdown document from a vault on disk. - - USE THIS TO: read the full content of a note you discovered via list_vault - or search_vault. Returns the complete markdown text with metadata. + """FILESYSTEM TOOL (not memory) — Read a markdown note from vault on disk. Use after list_vault to get content. Args: vault_name: Name of the vault. @@ -272,14 +259,7 @@ def get_vault_document(vault_name: str, doc_path: str) -> dict[str, Any]: @mcp.tool() def search_vault(vault_name: str, query: str, max_results: int = 50) -> dict[str, Any]: - """FILESYSTEM TOOL — Full-text search across all markdown files on disk in a vault. - - USE THIS TO: find which notes mention a character, location, or concept. - Searches the actual file contents of every .md file in the vault. - - IMPORTANT: This searches REAL FILES on disk. It is NOT a memory search - or conversation search. It reads every markdown file and looks for your - query string inside the document text. + """FILESYSTEM TOOL (not memory) — Search markdown files on disk. Find notes about characters, locations, concepts. Args: vault_name: Name of the vault to search.