Skip to main content
Glama
tac0de

knowledge-to-action-mcp

by tac0de

Knowledge-to-Action MCP

Turn Obsidian notes into agent-ready context, preview-only plans, and safe repo handoffs.

CI npm version License: MIT

Knowledge-to-Action MCP

knowledge-to-action-mcp is an MCP server for people whose real project context lives in notes, decisions, roadmaps, and meeting docs, not just code.

Most Obsidian MCP servers stop at "read a note" or "search a vault."

This one goes further:

notes -> retrieval -> context packet -> action plan -> repo handoff

That means an MCP client can move from:

"open this markdown file"

to:

"understand the note, pull nearby context, summarize risks,
propose next steps, and show which repo files probably matter"

Why It Matters

If you work out of Obsidian, your important context is usually spread across:

  • roadmap notes

  • meeting notes

  • decisions

  • linked references

  • repo assumptions

Normal note integrations make an agent read those files.

knowledge-to-action-mcp helps an agent recover the surrounding context and turn it into something actionable without exposing a general shell runner.

Related MCP server: mcp-obsidian-vault

What Makes It Different

Capability

Typical vault MCP

knowledge-to-action-mcp

Read notes

Yes

Yes

Search notes

Yes

Yes

Follow links / backlinks

Sometimes

Yes

Graph-aware context recovery

Rarely

Yes

Optional embeddings

Rarely

Yes

Agent-ready context packet

No

Yes

Preview-only plan from note

No

Yes

Note-to-repo handoff

No

Yes

General shell access

Sometimes

No

1-Minute Quickstart

Install:

npm install @tac0de/knowledge-to-action-mcp

Run in graph-only mode:

OBSIDIAN_VAULT_ROOT="/path/to/vault" \
npx @tac0de/knowledge-to-action-mcp

Turn on optional embeddings and planning:

OBSIDIAN_VAULT_ROOT="/path/to/vault" \
EMBEDDINGS_ENABLED=true \
PLANNING_ENABLED=true \
OPENAI_API_KEY="..." \
npx @tac0de/knowledge-to-action-mcp

Then call:

  • context.retrieve

  • context.bundle_for_agent

  • action.plan_from_note

  • action.handoff_to_repo

See also:

What You Actually Get

1. Obsidian-aware retrieval

  • deterministic note listing, reading, and search

  • wikilink resolution

  • backlinks

  • shared-tag neighbors

  • graph-aware context recovery

2. Optional GraphRAG

When embeddings are enabled, retrieval becomes:

lexical + graph + semantic rerank

No external graph database is required.

3. Agent-ready context packets

context.bundle_for_agent returns a structured packet instead of dumping raw markdown into a prompt.

That packet includes:

  • brief

  • key facts

  • open questions

  • risks

  • related notes

  • repo hints

4. Preview-only action planning

action.plan_from_note turns a note into:

  • summary

  • goals

  • constraints

  • decisions

  • open questions

  • suggested actions

  • handoff prompt

It does not mutate files.

5. Safe repo handoff

action.handoff_to_repo connects note context to a workspace using:

  • bounded ripgrep queries

  • bounded git status

  • matched file suggestions

This is intentionally not a general-purpose shell runner.

Example Workflow

Imagine you have these notes:

  • roadmap/search.md

  • meetings/2026-03-07-search-review.md

  • decisions/search-scope.md

And a repo with:

  • src/search.ts

  • src/features/search/index.ts

This MCP can help an agent:

  1. Retrieve nearby notes with search, backlinks, tags, graph neighbors, and optional embeddings.

  2. Compress that note cluster into a structured context packet.

  3. Turn the source note into a preview-only action plan.

  4. Suggest likely repo files before any edit happens.

That jump from "read notes" to "prepare action safely" is the whole point.

Demo Assets

If you want something concrete before wiring your own vault:

Public Tools

Vault + Graph

  • vault.list_notes

  • vault.read_note

  • vault.search_notes

  • vault.get_metadata

  • graph.build

  • graph.get_neighbors

  • graph.get_backlinks

  • context.gather

Retrieval + Planning

  • embeddings.index_vault

  • context.retrieve

  • context.bundle_for_agent

  • action.plan_from_note

  • action.handoff_to_repo

Workspace Inspection

  • exec.list_capabilities

  • exec.rg_search

  • exec.list_dir

  • exec.git_status

Example Output

context.bundle_for_agent:

{
  "brief": "Implement search using the existing dashboard flow.",
  "source": "roadmap/search.md",
  "keyFacts": [
    "Title: Search",
    "Tags: roadmap,search"
  ],
  "openQuestions": [
    "Where is the current search entrypoint?"
  ],
  "risks": [
    "Assumption: repo layout may differ from note context"
  ],
  "repoHints": {
    "matchedFiles": [
      "src/search.ts",
      "src/features/search/index.ts"
    ],
    "suggestedQueries": [
      "Search",
      "search"
    ]
  }
}

action.plan_from_note:

{
  "source": "roadmap/search.md",
  "summary": "Implement search using the existing dashboard flow.",
  "goals": [
    "Ship dashboard search"
  ],
  "constraints": [
    "No mutation without explicit approval"
  ],
  "openQuestions": [
    "Where is the current search entrypoint?"
  ],
  "suggestedActions": [
    "Review matched repo files",
    "Resolve open questions before implementation"
  ],
  "generationMode": "deterministic"
}

Configuration

Required

  • OBSIDIAN_VAULT_ROOT

Optional embeddings

  • EMBEDDINGS_ENABLED=false

  • EMBEDDING_PROVIDER=openai

  • EMBEDDING_MODEL=text-embedding-3-small

  • EMBEDDING_SQLITE_PATH=.knowledge-to-action-mcp/index.sqlite

  • OPENAI_API_KEY=...

Optional planning

  • PLANNING_ENABLED=false

  • PLANNING_PROVIDER=openai

  • PLANNING_MODEL=gpt-4.1-mini

Optional workspace inspection

  • EXECUTION_ENABLED=false

  • EXECUTION_CAPABILITIES=workspace.search,workspace.inspect,workspace.git_status

  • EXECUTION_TIMEOUT_MS=5000

  • EXECUTION_MAX_OUTPUT_BYTES=32768

Install In MCP Clients

Example stdio config:

{
  "command": "npx",
  "args": ["-y", "@tac0de/knowledge-to-action-mcp"],
  "env": {
    "OBSIDIAN_VAULT_ROOT": "/path/to/vault"
  }
}

VS Code

Add to .vscode/mcp.json:

{
  "servers": {
    "knowledge-to-action": {
      "command": "npx",
      "args": ["-y", "@tac0de/knowledge-to-action-mcp"],
      "env": {
        "OBSIDIAN_VAULT_ROOT": "/path/to/vault"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "knowledge-to-action": {
      "command": "npx",
      "args": ["-y", "@tac0de/knowledge-to-action-mcp"],
      "env": {
        "OBSIDIAN_VAULT_ROOT": "/path/to/vault"
      }
    }
  }
}

Security Boundary

This package is designed to be useful without turning into a local shell bomb.

  • vault access is read-only

  • plan generation is preview-only

  • embeddings are optional and local

  • repo inspection is bounded to the configured working directory

  • no generic bash.exec or arbitrary command tool is exposed

Good Fit

Use this project if you want:

  • Obsidian-native GraphRAG

  • note-to-action workflows for agents

  • structured context instead of giant markdown dumps

  • repo-aware handoff without broad execution access

Not Trying To Be

  • a general purpose agent runtime

  • a write-enabled automation framework

  • a hosted knowledge platform

  • a vector database product

Compatibility

  • package name: @tac0de/knowledge-to-action-mcp

  • legacy CLI alias: obsidian-mcp

  • Node.js 20+

Status

v2.1.1 is usable now:

  • typecheck passes

  • unit and integration tests pass

  • npm pack dry-run passes

The project is still early, but the main workflow is already working.

License

MIT

Available Tools

13 tools
action.handoff_to_repoC
Read-only

Connect note context to a related workspace using read-only inspection commands.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
workspacePathNo
queryHintsNo
maxMatchesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteSummaryYes
matchedFilesYes
ripgrepHitsYes
gitStatusYes
nextStepsYes
warningsYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false. Description adds minimal behavioral context beyond restating 'read-only inspection commands', providing no new insights about side effects, permissions, or operational scope.

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

Conciseness3/5

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

Single sentence is very concise but sacrifices necessary detail. Every sentence should earn its place; here, the brevity leads to vagueness rather than efficiency.

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

Completeness1/5

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

Given 4 parameters with zero schema descriptions and no output schema explanation, the description is insufficient. The tool's purpose and usage are inadequately communicated for correct invocation.

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

Parameters1/5

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

Schema description coverage is 0% and description does not explain any parameter. The parameters path, workspacePath, queryHints, and maxMatches remain undocumented, leaving agents to guess their meanings.

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?

Description states a specific verb ('connect') and resource ('note context to a related workspace'), distinguishing it from sibling tools like context.retrieve or graph.get_neighbors. However, it lacks specificity on what 'connect' entails, leaving ambiguity.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Does not mention appropriate contexts, exclusions, or references to sibling tools despite 12 siblings.

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

action.plan_from_noteB
Read-only

Create a preview-only action plan from a note and nearby context.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
objectiveNo
styleNo
useModelNo
maxRelatedNotesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
sourceYes
summaryYes
goalsYes
constraintsYes
decisionsYes
openQuestionsYes
suggestedActionsYes
handoffPromptYes
generationModeYes

TDQS

B3.3/5.0
Behavior3/5

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

The description adds 'preview-only' which aligns with readOnlyHint=true from annotations, and 'from a note and nearby context' gives behavioral context. However, it doesn't disclose other traits like whether writing or side effects occur, but annotations already cover read-only nature.

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?

The description is a single sentence that is front-loaded and efficient. Every word adds value: 'preview-only' limits scope, 'from a note and nearby context' explains inputs. No unnecessary filler.

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

Completeness2/5

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

With 5 parameters and no schema descriptions, the description should provide more context on parameters or usage flow. While output schema exists, the description omits details like required path, optional objective, and style options, making it incomplete for selecting and invoking.

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

Parameters2/5

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

Schema description coverage is 0%, so description must explain parameters, but it does not. It only implies 'path' is a note and 'maxRelatedNotes' might control context, but no explicit semantics. The enum 'style' is unexplained. This leaves agents guessing about parameter meaning.

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

Purpose5/5

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

The description clearly states the verb (create), resource (action plan), and key constraint (preview-only from note and nearby context). It distinguishes this tool from siblings like 'action.handoff_to_repo' and 'context.gather' which serve different purposes.

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

Usage Guidelines2/5

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

The description does not specify when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. For example, it doesn't indicate that this tool is for planning before execution, or contrast it with other action tools.

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

context.bundle_for_agentC
Read-only

Build an agent-ready context packet from a note and related vault context.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
objectiveNo
maxNotesNo
maxTotalBytesNo
workspacePathNo
includeRepoHintsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
briefYes
objectiveNo
sourceYes
relatedNotesYes
keyFactsYes
openQuestionsYes
risksYes
repoHintsYes
packetYes

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the agent knows it's a safe read. The description adds little beyond that, just mentioning building a context packet. No further behavioral traits are described.

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

Conciseness3/5

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

The description is very concise, just one sentence. While it is not verbose, it sacrifices detail that could be added without losing conciseness.

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

Completeness2/5

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

Given 6 parameters including maxNotes, maxTotalBytes, etc., the description lacks completeness. It does not explain what the context packet contains, how parameters affect output, or what the output schema provides. The output schema exists but is not referenced.

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

Parameters2/5

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

With 0% schema description coverage and no parameter explanations in the description, most parameters (objective, maxNotes, etc.) are not clarified. The description only hints that 'path' is a note and it uses vault context, but that is insufficient.

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?

The description states it builds an agent-ready context packet from a note and related vault context, which is a specific verb and resource. However, it does not differentiate from sibling tools like context.gather or context.retrieve, leaving ambiguity.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternative tools. No conditions, exclusions, or recommendations are provided.

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

context.gatherC
Read-only

Gather related context for a note using the knowledge graph. Returns scored related notes with snippets, ranked by relationship strength.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
maxNotesNo
maxTotalBytesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
sourceYes
relatedNotesYes
totalNodesYes
graphDepthYes

TDQS

C2.7/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, so the description adds value by describing the output (scored snippets, ranked) and method (knowledge graph). However, it does not disclose any potential limitations, rate limits, or authentication needs. The description is consistent with annotations, no contradiction.

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

Conciseness4/5

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

The description is a single sentence that efficiently communicates the core purpose and output. It is front-loaded and contains no redundant information.

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

Completeness2/5

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

Given the tool has 3 parameters (one required), multiple siblings, and a potentially complex output (scored notes with snippets), the description lacks sufficient detail. It does not clarify what 'related context' means, how scoring works, or how parameters influence results. The presence of an output schema reduces the burden but does not compensate for missing parameter explanations and usage context.

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

Parameters1/5

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

Schema has 0% description coverage, and the description provides no explanation of the three parameters (path, maxNotes, maxTotalBytes). The agent must infer meaning from names alone, which is insufficient for correct invocation.

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?

Description clearly states the tool gathers related context for a note via the knowledge graph and returns scored snippets ranked by strength. The verb 'gather' and resource 'related context' are specific, and the output format helps distinguish it from siblings like context.retrieve or graph.get_neighbors, though not explicitly.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description does not mention scenarios where context.gather is preferred over context.retrieve or graph.get_neighbors, nor does it state when not to use it.

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

context.retrieveC
Read-only

Retrieve notes using lexical, graph, and optional embedding-based reranking.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
pathNo
maxResultsNo
maxTotalBytesNo
useEmbeddingsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYes
sourcePathNo
retrievalModeYes
resultsYes
totalYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description's indication of retrieval is consistent. It adds the method (lexical, graph, embedding) but does not disclose any additional behavioral traits like rate limits or side effects.

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

Conciseness4/5

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

One concise sentence that is well front-loaded. While brief, it efficiently communicates the core purpose without fluff.

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

Completeness2/5

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

Given the tool has 5 parameters and an output schema, the description is too brief. It does not explain the different retrieval modes, usage context, or what the output contains, leaving significant gaps.

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

Parameters2/5

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

The description mentions 'lexical, graph, and optional embedding-based reranking', which suggests the 'query' parameter is used, but it does not elaborate on any of the five parameters. With 0% schema coverage, the description fails to compensate.

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?

The description clearly states the tool retrieves notes using lexical, graph, and optional embedding-based reranking. The verb 'retrieve' and resource 'notes' are specific, but it doesn't explicitly distinguish from sibling tools like 'vault.search_notes' or 'context.gather'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'context.gather' or 'vault.search_notes'. The description lacks explicit when/when-not conditions.

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

embeddings.index_vaultC

Chunk vault notes and persist optional embeddings to a local SQLite index.

ParametersJSON Schema
NameRequiredDescriptionDefault
globNo
maxNotesNo
chunkSizeNo
chunkOverlapNo
forceReindexNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesIndexedYes
chunksIndexedYes
skippedYes
providerYes
durationMsYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already indicate this is not read-only (destructive hint false). The description adds that embeddings are 'optional' and stored locally, which is useful but does not detail potential side effects like overwriting existing indexes or performance considerations.

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

Conciseness3/5

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

The description is a single sentence, which is concise but may be too brief. It front-loads the main action but could be restructured to include parameter hints without increasing length significantly.

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

Completeness2/5

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

Given the tool's complexity (5 parameters, output schema, indexing behavior), the description is incomplete. It does not explain how the indexed embeddings are used, error conditions, or the effect of 'forceReindex'. The output schema exists but the description adds no context about return values.

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

Parameters1/5

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

Schema description coverage is 0%; the description does not explain any of the 5 parameters (glob, maxNotes, chunkSize, chunkOverlap, forceReindex). The agent must infer their meaning solely from names and schema types, which is insufficient.

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

Purpose5/5

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

The description clearly states the verb 'Chunk' and 'persist', the resource 'vault notes', and the destination 'local SQLite index'. This distinguishes it from sibling tools which focus on reading, searching, or graph operations.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'context.retrieve' or 'vault.search_notes'. It does not specify prerequisites (e.g., vault must exist) or situations where it should be avoided.

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

graph.buildA
Read-only

Build the knowledge graph from the vault. Parses all wikilinks, tags, and computes backlinks. Must be called before using other graph/context tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
nodesYes
edgesYes
tagsYes
buildTimeMsYes

TDQS

A3.7/5.0
Behavior1/5

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

The description says 'Build the knowledge graph,' indicating a mutation, yet annotations declare readOnlyHint: true. This contradiction severely misleads about the tool's behavior. No additional behavioral traits are disclosed.

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 sentences, no waste, front-loaded with purpose. Efficiently conveys the essential information.

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

Completeness3/5

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

Given no parameters and a clear prerequisite role, the description is mostly complete, but the annotation contradiction undermines confidence in behavioral correctness, leaving a gap.

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

Parameters4/5

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

The input schema has zero parameters, and schema coverage is 100%, so the baseline of 4 applies. The description adds no parameter info, which is appropriate.

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

Purpose5/5

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

The description clearly states the tool's action: 'Build the knowledge graph from the vault. Parses all wikilinks, tags, and computes backlinks.' It distinguishes from sibling tools like graph.get_backlinks and context.gather by positioning itself as a prerequisite.

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?

The description explicitly states 'Must be called before using other graph/context tools,' providing clear context for when to use it, though it does not mention exclusions or alternatives.

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

graph.get_neighborsA
Read-only

Get neighbor nodes of a note in the knowledge graph (BFS traversal). Includes outLinks, backLinks, and shared-tag neighbors. Graph must be built first.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
depthNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
sourceYes
neighborsYes
totalYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and openWorldHint=false. The description adds behavioral context: BFS traversal, specific neighbor types, and the graph build requirement. No contradiction with annotations.

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

Conciseness4/5

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

The description is two sentences with no redundancy. It front-loads the main action and subsequently adds traversal details and a prerequisite. Slight improvement could be ordering, but overall efficient.

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

Completeness3/5

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

Given 0% schema coverage and existence of an output schema, the description covers the core behavior but misses parameter semantics. It does not describe the depth parameter's role or default behavior, leaving a gap in completeness for a tool with two parameters.

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

Parameters2/5

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

With 0% schema description coverage, the description should explain parameters. It mentions 'a note' implying path but does not describe the path parameter's format or the depth parameter's meaning, range, or default. This severely limits an agent's ability to use parameters correctly.

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

Purpose5/5

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

The description clearly states 'Get neighbor nodes' with specific verb and resource, and distinguishes from siblings like graph.get_backlinks by noting the inclusion of outLinks, backLinks, and shared-tag neighbors. It also specifies BFS traversal, adding unique context.

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

Usage Guidelines3/5

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

The description mentions a prerequisite ('Graph must be built first') but does not explicitly guide when to use this tool versus alternatives like graph.get_backlinks. The context of use is implied rather than directly stated.

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

vault.get_metadataB
Read-only

Return frontmatter and metadata from a note.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
titleNo
tagsYes
frontmatterYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, so the description aligns by indicating a read operation. However, it does not disclose behavior for missing paths or notes without frontmatter, but annotations reduce the burden. Score 3 is appropriate.

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

Conciseness3/5

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

The description is very concise (one sentence) but sacrifices necessary detail about the parameter. It is front-loaded with core purpose, but the lack of parameter info reduces effectiveness.

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

Completeness3/5

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

Given the tool has one simple parameter and an output schema (not shown), a minimal description might suffice. However, the description omits parameter semantics and does not clarify what 'frontmatter and metadata' entails, leaving gaps.

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

Parameters1/5

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

Schema coverage is 0% and the description provides no explanation for the 'path' parameter. Without parameter descriptions, an agent cannot know the expected format or meaning of the path. This is a critical gap.

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

Purpose5/5

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

The description clearly states the tool returns frontmatter and metadata from a note, using specific verbs and resource. It distinguishes itself from siblings like vault.read_note (full content) and vault.search_notes (searching).

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs alternatives. It does not mention that it should be used when only metadata is needed, nor does it contrast with vault.read_note. The agent must infer usage.

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

vault.list_notesA
Read-only

List notes in the vault using deterministic ordering.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderNo
globNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesYes
totalYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true (safe read) and openWorldHint=false. The description adds 'deterministic ordering', a useful behavioral trait beyond annotations, but lacks details on default behavior, pagination, or effect of optional parameters.

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?

Single short sentence, no redundant words, front-loaded with action and key differentiator.

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

Completeness2/5

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

Despite having an output schema, the description is too minimal for a listing tool with three optional filters. It omits default behavior, ordering details, and whether filters are required.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for three parameters (folder, glob, limit). It does not mention any parameter or explain how they affect the result, leaving the agent to guess.

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

Purpose5/5

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

Description clearly specifies the action (list), the resource (notes in the vault), and a distinctive ordering property (deterministic ordering). This differentiates it from sibling tools like vault.search_notes and vault.read_note.

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

Usage Guidelines3/5

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

The description implies when to use this tool (listing notes with deterministic order for pagination or comparison) but does not explicitly state when not to use it or provide alternatives.

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

vault.read_noteB
Read-only

Read one note from the vault and return stable hash metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
maxBytesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
contentYes
bytesYes
sha256Yes
lineCountYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description adds value by mentioning 'return stable hash metadata', hinting at the output. However, it does not fully disclose behavioral aspects like whether the note content is returned, which could be important for an agent. No contradiction with annotations.

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?

The description is a single, efficient sentence that conveys the core purpose without any redundant words. It is well-structured and front-loaded with the key action.

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

Completeness2/5

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

Given the lack of parameter explanations, missing usage guidelines, and no mention of return value structure (despite an output schema being present), the description leaves significant gaps. The tool is simple, but completeness is low.

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

Parameters1/5

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

With 0% schema description coverage, the description fails to add any meaning to the parameters 'path' and 'maxBytes'. The agent must infer from parameter names alone, leaving ambiguity (e.g., the range or unit of maxBytes is unmentioned).

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

Purpose5/5

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

The description clearly states the verb 'Read' and the resource 'one note from the vault', and specifies the return of 'stable hash metadata'. This distinguishes it from sibling tools like vault.list_notes and vault.search_notes, which handle listing or searching rather than reading a single note.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as the note's existence, nor does it contrast with sibling tools like vault.get_metadata or vault.list_notes.

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

vault.search_notesB
Read-only

Search note contents in deterministic order.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
caseSensitiveNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
matchesYes
totalYes

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and openWorldHint=false. The description adds a notable behavioral trait: 'deterministic order', which informs the agent that results are consistent across calls. This goes beyond annotations.

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

Conciseness4/5

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

The description is one sentence, front-loaded with the action, and adds a key qualifier. It is concise but could be slightly expanded to include parameter hints without losing brevity.

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

Completeness2/5

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

Given 12 sibling tools and 3 parameters with 0% schema coverage, the description lacks enough context for an agent to decide when to use this tool. Key details like default case sensitivity, pagination behavior, and result format are missing.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain parameter semantics, but it does not mention any parameters. The words 'Search note contents' only vaguely imply the query applies to content, but no details on caseSensitive, limit, or query format are provided.

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?

The description clearly states the verb 'search' and resource 'note contents', and adds the qualifier 'deterministic order' which helps distinguish from siblings like vault.list_notes. However, it does not specify whether the search is full-text or limited to specific fields.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as vault.list_notes or context.retrieve. There are no exclusions, prerequisites, or context about the best use cases.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 13 tool updatesv2.1.1
    • First observedaction.handoff_to_repo
    • First observedaction.plan_from_note
    • First observedcontext.bundle_for_agent
    • First observedcontext.gather
    • First observedcontext.retrieve
    • First observedembeddings.index_vault
    • First observedgraph.build
    • First observedgraph.get_backlinks
    • First observedgraph.get_neighbors
    • First observedvault.get_metadata
    • First observedvault.list_notes
    • First observedvault.read_note
    • First observedvault.search_notes

TDQS

A3.5/5.0

Scored across 13 tools

Disambiguation5/5

Each tool has a clearly distinct purpose within its category (actions, context, embeddings, graph, vault). No overlapping functionality detected; even tools within the same category (e.g., context.gather and context.retrieve) have different retrieval methods.

Naming Consistency5/5

All tool names follow a consistent pattern: category.snake_case_action (e.g., action.handoff_to_repo, vault.list_notes). The naming is descriptive and predictable, with no mixed conventions.

Tool Count5/5

13 tools is well within the optimal range for a server of this scope. The count covers all necessary operations for knowledge management and action planning without unnecessary bloat.

Completeness4/5

The tool surface covers core workflows: graph building, context retrieval, note reading/searching, embedding indexing, and action planning. Missing tools for note creation or modification are acceptable given the read-analysis-plan focus, but a minor gap exists for editing vault content.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Connects AI assistants directly to Obsidian vaults with intelligent note creation using templates, semantic search, smart tagging to avoid duplicates, and specialized agent roles (Guardian, Researcher, Connection Weaver) for managing knowledge bases.
    35
    9
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides AI agents with direct filesystem access to an Obsidian vault for note management, task orchestration, context persistence, and git synchronization.
    27
    82
    2
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to store and retrieve project context, bugs, decisions, and session logs by reading and appending markdown files in a local Obsidian vault, without requiring any cloud services.
    6
    MIT

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/tac0de/knowledge-to-action-mcp'

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