Skip to main content
Glama
markdown-vault-mcp

markdown-vault-mcp

by pvliesdonk

Graph Neighborhood

vault_graph_neighborhood
Read-onlyIdempotent

Generates a node/edge graph around a note's link neighborhood for graph views, supporting configurable hop depth, node caps, and optional semantic-similarity edges.

Instructions

Return the link neighborhood of a note as a node/edge graph (app-only).

Called by the SPA graph view via app.callServerTool(). Not visible to the LLM.

Input Schema

NameRequiredDescriptionDefault
pathYesCenter note path.
depthNoHow many hops to traverse (default 1).
max_nodesNoSoft cap on returned node count (default 200). BFS and any semantic expansion both stop once the cap is hit; the response sets `truncated=True`. Bounds dense-vault depth=2 traversals that would otherwise bog down vis-network.
include_semanticNoWhen True, add dashed semantic-similarity edges for each interior node (requires embeddings to be configured; silently omitted when unavailable).

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv6.1.0
    • changedInput schema / properties / max_nodes / description
      Previous value: -"Soft cap on returned node count (default 200). BFS\nand any semantic expansion both stop once the cap is hit;\nthe response sets ``truncated=True``. Bounds dense-vault\ndepth=2 traversals that would otherwise bog down vis-network."New value: +"Soft cap on returned node count (default 200). BFS\nand any semantic expansion both stop once the cap is hit;\nthe response sets `truncated=True`. Bounds dense-vault\ndepth=2 traversals that would otherwise bog down vis-network."
  2. Addedv5.0.0

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, and an output schema covers the return shape, so the bar is low. The description adds one genuine behavioral fact beyond them — that this is an internal SPA-facing entry point — but says nothing about traversal cost, semantic-edge fallback, or truncation, all of which live in the schema instead.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler, and the most decision-relevant fact (app-only, not for the LLM) is front-loaded so an agent can dismiss the tool immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, full parameter coverage, and four annotations, the only thing the description needs to convey is scope, which it does decisively. What is missing is minor: no pointer to the sibling an agent should use instead for backlink/connection queries.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including defaults, BFS/truncation behavior and the embeddings requirement for include_semantic, so the schema carries parameter meaning fully. The description adds nothing about path, depth, max_nodes or include_semantic, making 3 the correct baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — returns the link neighborhood of a note as a node/edge graph — and specifies the output shape, which separates it from list-style siblings like get_backlinks or get_outlinks. It does not name those siblings explicitly, so an agent must infer which graph/list tool to reach for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Unusually explicit routing guidance: '(app-only)', 'Called by the SPA graph view via app.callServerTool()' and 'Not visible to the LLM' tell an agent clearly that this tool is out of scope for it. It stops short of naming the LLM-facing alternative (e.g. get_backlinks, get_connection_path) for the same neighborhood need.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.