Skip to main content
Glama
aka-kika

obsidian-codex-mcp

by aka-kika

Kika Obsidian MCP

CI Python MCP Obsidian Works with Local first License: MIT

Local-first MCP server for working with an Obsidian vault.

  • No Obsidian plugin required

  • No API key required

  • No cloud service required

  • No Obsidian running in the background

This is for people who want MCP clients to work directly with markdown files on disk.

Independent open-source project. Not affiliated with Obsidian, Anthropic, OpenAI, or any MCP client.

What it does

It lets MCP clients work with your vault to:

  • read and search notes

  • create and update notes

  • create and edit Obsidian Bases (.base files) with schema validation

  • generate summaries, status reports, and release notes

  • automate local knowledge workflows

All directly against your local markdown files.

Related MCP server: kObsidian MCP

Best for

  • Anyone using an MCP client — Claude Code, Claude Desktop, Cursor, Cline, Codex, Grok — who wants safe local access to an Obsidian vault

  • Developers who prefer filesystem-based Obsidian automation over the Local REST API plugin

  • People who want to create and edit Obsidian Bases (.base) from an agent

  • Personal knowledge bases, project logs, daily notes, task notes, and markdown-first workflows

Why this exists

There are already a handful of Obsidian MCP servers. Many depend on the Obsidian Local REST API plugin or run as an Obsidian plugin. This project is intentionally simpler:

  • direct filesystem access to a local vault

  • no network calls

  • no Obsidian API token

  • works with any MCP client — simple JSON or TOML config for Claude Code, Claude Desktop, Cursor, Cline, Codex, and Grok

  • tolerant of real-world vaults with imperfect frontmatter

  • path traversal protection so tools cannot escape the configured vault

  • optional read-only mode for safer review/search workflows

  • optional backup-on-write before updates and deletes

  • first-class Obsidian Bases (.base) support with schema validation — a differentiator: almost no other Obsidian MCP server can create or edit Bases, and this one validates them against the official schema so it never writes a file Obsidian would silently reject

How it compares

Need

This project

Use Obsidian with any MCP client

Yes — Claude Code, Claude Desktop, Cursor, Cline, Codex, Grok

Config format

JSON or TOML, per client (examples for each)

Require an Obsidian plugin

No

Require an API key

No

Require Obsidian to be open

No

Read/write markdown files directly

Yes

Create and edit Obsidian Bases (.base)

Yes, with schema validation

Work over a remote HTTP API

No, local stdio MCP only

Safety features

Designed to be useful without being reckless:

  • read-only mode, which refuses writes

  • backup-on-write mode before updates and deletes

  • vault path isolation

  • path traversal protection

  • no external network calls

Tools

  • configure_vault - set or change the vault path

  • get_note - read one markdown note by vault-relative path

  • create_note - create a new markdown note with optional metadata

  • update_note - update note content and/or frontmatter

  • delete_note - delete a markdown note

  • list_notes - list notes in the vault or a folder

  • search_notes - search note title, content, and tags

  • get_all_tags - list unique tags from frontmatter and inline tags

  • get_backlinks - find notes that link to a note

  • get_note_links - extract wikilinks from a note

  • create_folder - create a folder inside the vault

  • get_folder_structure - return the vault folder tree

Bases (.base files)

First-class, schema-validated support for Obsidian Bases — database-like views over your notes. Very few Obsidian MCP servers support these.

A base is validated against the Bases schema before anything is written — an invalid view is rejected with the offending path named, and no file is created

  • create_base - create a .base file, validated against the Bases schema before writing

  • update_base - merge changes into a base (update a view by name, add/remove views, change filters/formulas/properties)

  • get_base - read a .base as parsed structure + raw YAML; tolerant of imperfect files

  • list_bases - list .base files in the vault or a folder, with their view names

  • delete_base - delete a .base file

Creating a base and reading it back through the MCP tools — the full round-trip

All four Obsidian view modes are supported — table, list, cards, and map — and any of them can be mixed in a single base. Map views (from the Maps community plugin) round-trip cleanly too: their marker and zoom settings are preserved on read and re-write.

See docs/bases-examples.md for copyable examples of each view mode.

Demo

Claude drives the MCP server on the left while the Obsidian vault updates live on the right

Full-length clip: Obsidian + MCP demo

Quick start

Install

Requirements:

  • Python 3.10 or newer recommended

  • An Obsidian vault stored as local markdown files

git clone https://github.com/aka-kika/kika-obsidian-mcp.git
cd kika-obsidian-mcp
./install.sh /absolute/path/to/your/obsidian-vault

install.sh creates a local virtualenv, installs dependencies, verifies against your vault, then prints ready-to-paste config for the client you choose (--client claude|claude-desktop|codex|cursor|cline|grok, default: all).

Prefer to do it by hand? The manual steps are:

python3 -m venv .venv
.venv/bin/python -m pip install --upgrade pip
.venv/bin/python -m pip install -r requirements.txt
OBSIDIAN_VAULT_PATH="/absolute/path/to/your/vault" .venv/bin/python test_server.py

Configure your MCP client

The server is a local stdio MCP server, so any MCP-capable client can run it. Point the client at your virtualenv's Python and server.py, and set the vault path via env. Then restart or reconnect the client.

Claude Code

claude mcp add kika-obsidian \
  --env OBSIDIAN_VAULT_PATH="/absolute/path/to/your/obsidian-vault" \
  --env OBSIDIAN_READ_ONLY="false" \
  --env OBSIDIAN_BACKUP_ON_WRITE="true" \
  -- /absolute/path/to/kika-obsidian-mcp/.venv/bin/python \
     /absolute/path/to/kika-obsidian-mcp/server.py

Claude Desktop / Cursor / Cline

Add this to the client's MCP config (claude_desktop_config.json, or the equivalent mcpServers block):

{
  "mcpServers": {
    "kika-obsidian": {
      "command": "/absolute/path/to/kika-obsidian-mcp/.venv/bin/python",
      "args": ["/absolute/path/to/kika-obsidian-mcp/server.py"],
      "env": {
        "OBSIDIAN_VAULT_PATH": "/absolute/path/to/your/obsidian-vault",
        "OBSIDIAN_READ_ONLY": "false",
        "OBSIDIAN_BACKUP_ON_WRITE": "true"
      }
    }
  }
}

Codex / Grok

Add this to ~/.codex/config.toml (or ~/.grok/config.toml):

[mcp_servers.kika-obsidian]
command = "/absolute/path/to/kika-obsidian-mcp/.venv/bin/python"
args = ["/absolute/path/to/kika-obsidian-mcp/server.py"]
enabled = true

[mcp_servers.kika-obsidian.env]
OBSIDIAN_VAULT_PATH = "/absolute/path/to/your/obsidian-vault"
OBSIDIAN_READ_ONLY = "false"
OBSIDIAN_BACKUP_ON_WRITE = "true"

For a safer read/search-only setup, set OBSIDIAN_READ_ONLY="true" (TOML: OBSIDIAN_READ_ONLY = "true").

Environment

Variable

Required

Default

Description

OBSIDIAN_VAULT_PATH

yes

none

Absolute path to the vault folder.

OBSIDIAN_READ_ONLY

no

false

When true, create/update/delete/folder creation tools refuse writes.

OBSIDIAN_BACKUP_ON_WRITE

no

false

When true, copies existing notes into .obsidian-mcp-backups/ before update/delete.

Safety model

  • All note paths are resolved relative to OBSIDIAN_VAULT_PATH.

  • Absolute paths and ../ path traversal are rejected.

  • Writes can be disabled with OBSIDIAN_READ_ONLY=true (this also blocks create_base, update_base, and delete_base).

  • Existing notes and .base files can be copied to .obsidian-mcp-backups/ before update/delete with OBSIDIAN_BACKUP_ON_WRITE=true.

  • Deletes are extension-scoped: delete_note only removes markdown (.md) notes and delete_base only removes Bases (.base) files. Neither can touch other file types.

  • Base tools accept only .base paths and note tools only .md paths, so the two never cross-contaminate.

  • The server makes no external network calls.

  • Broken YAML frontmatter does not break listing/search; the note is still readable with empty metadata.

Development

Run the local test script:

OBSIDIAN_VAULT_PATH="/absolute/path/to/your/vault" .venv/bin/python test_server.py

Start the MCP server:

OBSIDIAN_VAULT_PATH="/absolute/path/to/your/vault" .venv/bin/python server.py

Optional automation

Generate a daily project status report from your vault:

OBSIDIAN_VAULT_PATH="/absolute/path/to/your/vault" .venv/bin/python scripts/daily_status_report.py --folder "Projects"

Write the report back into Obsidian:

OBSIDIAN_VAULT_PATH="/absolute/path/to/your/vault" .venv/bin/python scripts/daily_status_report.py \
  --folder "Projects" \
  --write "Reports/Daily Project Status.md"

The script reports recent notes, markdown checkbox tasks, and top tags. It uses backup-on-write when updating an existing report note.

Common workflows

See docs/common-workflows.md for practical examples:

  • safe vault exploration

  • project catch-up

  • daily status reports

  • release notes after shipping

  • vault triage

  • index note creation

  • finding underlinked notes

  • safe editing checklist

Templates

Copyable Obsidian note templates live in docs/templates:

  • Work log for daily project status and workstream summaries

  • Project session log for per-project session notes, decisions, links, and next moves

  • Weekly review for accomplishments, open loops, and next-week priorities

Optional skill

This repo includes lightweight agent workflow skills:

skills/obsidian-vault-workflow/SKILL.md
skills/release-note-captain/SKILL.md

Use them as guidance for agents that work with this MCP server. They cover safe vault exploration, editing discipline, daily status reports, vault triage, project catch-up prompts, and release-note capture after a project ships.

FAQ

Is this an Obsidian MCP server?

Yes. It is a local MCP server for Obsidian vaults. It exposes tools for notes, tags, backlinks, wikilinks, folders, search, and optional writes.

Which MCP clients does it work with?

Any client that can run a local stdio MCP server — Claude Code, Claude Desktop, Cursor, Cline, Codex, and Grok are all covered with copy-paste config above. It is just a local Python process, so anything that speaks MCP over stdio can use it. Run ./install.sh --client <name> /path/to/vault to print the exact config for your client.

Does it support Obsidian Bases?

Yes, with dedicated schema-validated tools. create_base, update_base, get_base, list_bases, and delete_base let MCP clients build and edit .base files directly on disk. Every write is validated against the official Bases schema first, so it never writes a file Obsidian would silently reject, and errors name the exact offending path (for example, views[0].groupBy missing 'property' key). get_base is tolerant of imperfect files: if the YAML cannot be parsed it returns the raw content with a parse_error flag instead of failing. All four view modes — table, list, cards, and map — are supported, and map bases from the Maps community plugin round-trip without losing their marker/zoom settings. This is a differentiator — almost no other Obsidian MCP server can create or edit Bases. See docs/bases-examples.md.

Does it need the Obsidian Local REST API plugin?

No. It reads and writes markdown files directly from the vault folder.

Does Obsidian need to be running?

No. Because this server works on local files, Obsidian does not need to be open.

Can I make it read-only?

Yes. Set OBSIDIAN_READ_ONLY=true to allow search and inspection while refusing create, update, delete, and folder creation tools.

Current limitations

  • Search is simple substring search, not semantic or indexed search.

  • No Obsidian command palette or plugin API access.

  • No conflict resolution for simultaneous edits.

  • No template expansion.

  • No sync-provider awareness.

License

MIT

Available Tools

17 tools
configure_vaultA

Configure the Obsidian vault path.

Args: vault_path: Absolute path to your Obsidian vault

ParametersJSON Schema
NameRequiredDescriptionDefault
vault_pathYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only states the basic action without disclosing side effects, persistence, validation behavior, or whether the tool can be called multiple times. This is insufficient for an agent to understand the tool's full impact.

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 extremely concise with no wasted words. The first sentence immediately conveys purpose, followed by a clear parameter specification. Ideal length for a simple configuration tool.

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?

For a single-parameter configuration tool, the description covers the basic action and parameter meaning. However, it omits important context such as whether the path must exist, if validation occurs, or if this is a one-time setup. Adequate but not fully comprehensive.

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 schema has 0% description coverage, but the description adds a clear explanation for the sole parameter: 'Absolute path to your Obsidian vault'. This compensates well for the schema gap, though it lacks examples or constraints.

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 explicitly states 'Configure the Obsidian vault path,' which is a specific verb-resource combination. It clearly distinguishes from sibling tools (e.g., create_note, search_notes) which focus on note management, not configuration.

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 or on prerequisites. While it's implied that this setup tool should be used before other vault operations, the description lacks explicit context or warnings.

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

create_baseA

Create a new Obsidian Base (.base) file with schema validation.

Bases are database-like views over your notes. The structure is validated against the official Bases schema before anything is written; an invalid base is rejected with a message naming the offending path, and no file is created.

Args: path: Vault-relative path ending in .base (e.g., "Bases/Tasks.base") views: List of view objects (at least one). Each needs a "type" (table | list | cards | map) and usually a "name" and "order". filters: Optional global filter. Either a string statement or a mapping with one of "and" / "or" / "not" holding a list of conditions. formulas: Optional mapping of formula name -> expression string. properties: Optional mapping of property name -> config (e.g., {"status": {"displayName": "Status"}}). summaries: Optional mapping of summary name -> expression string.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
viewsYes
filtersNo
formulasNo
summariesNo
propertiesNo

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that validation occurs before writing and that invalid structures are rejected with error messages. However, it does not mention authentication requirements, potential side effects beyond creation, or whether the tool can overwrite existing files.

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 concise and well-structured: a summary sentence, a behavioral detail paragraph, and a bulleted Args list. Every sentence adds value, and the critical information is front-loaded.

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?

Given the complexity (6 parameters, no output schema, no annotations), the description is largely complete. It explains the validation behavior, parameter meanings, and required fields. Minor omissions include specific return value or success/failure indications, but these are minimal impact.

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

Parameters5/5

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

The schema description coverage is 0%, but the description's Args section provides detailed explanations for all six parameters, including type constraints (e.g., path ending in .base), structure of views (requires type, name, order), and the format of filters, formulas, summaries, and properties. This fully compensates for the lack of schema descriptions.

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 'Create a new Obsidian Base (.base) file with schema validation.' It specifies the verb (create) and resource (base file), and the addition of 'with schema validation' distinguishes it from other base tools like update_base or delete_base.

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 provides clear context for when to use the tool (creating a new base) but does not explicitly mention when not to use it or suggest alternatives. It could improve by stating 'Use this to create a new base; use update_base to modify an existing base.' Currently, usage guidance is implied.

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

create_folderA

Create a new folder in the vault.

Args: folder_path: Path to the new folder (e.g., "projects/new-project/")

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_pathYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided; description only states 'create' but does not disclose key behaviors such as error handling on duplicate paths, permissions required, 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.

Conciseness5/5

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

Two sentences only, front-loaded with the core purpose, no wasted words.

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?

For a simple one-parameter tool with no output schema, the description covers the basic functionality but misses potential contextual details like conflict behavior or directory structure constraints.

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?

Despite 0% schema coverage, the description adds an example and explains the parameter meaning and format ('e.g., projects/new-project/'), which compensates for the schema's lack of description.

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 states action ('create a new folder'), specific resource ('in the vault'), and distinguishes from sibling tools like create_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?

Provides an example of usage but lacks explicit guidance on when to use this tool versus alternatives, or prerequisites like vault existence.

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

create_noteA

Create a new note.

Args: path: Path for the new note (e.g., "notes/new-note.md") content: Note content in Markdown title: Optional title (defaults to filename) tags: Optional list of tags

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
tagsNo
titleNo
contentYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must convey all behavioral traits. It only states the action (create) but fails to disclose whether the tool overwrites existing paths, creates intermediate folders, or what the return value is. This is a significant gap for a mutation tool.

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 concise: one-line purpose followed by a clean argument list with clear descriptions. No redundant information, every sentence earns its place.

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?

For a simple create tool with four parameters and no annotations or output schema, the description covers the core functionality but lacks detail on path conventions, overwrite behavior, and return values. More context would improve completeness.

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?

With schema description coverage at 0%, the description adds essential meaning: 'Path for the new note,' 'Note content in Markdown,' 'Optional title (defaults to filename),' and 'Optional list of tags.' This adds value beyond the null schema descriptions.

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 'Create a new note,' which is a specific verb+resource combination that distinguishes it from siblings like update_note, delete_note, or search_notes.

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 usage (creating a note) but does not explicitly differentiate from alternatives like update_note or note when to use it versus other tools. No exclusions or prerequisites are mentioned.

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

delete_baseA

Delete a .base file.

Respects read-only mode and backup-on-write. Only .base files can be deleted through this tool.

Args: path: Vault-relative path to the .base file to delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

A4.2/5.0
Behavior4/5

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

Discloses behavioral traits beyond the obvious deletion: respects read-only mode and performs backup-on-write. No annotations exist, so description carries full burden; it adds useful safety context.

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?

Very concise: three sentences cover purpose, behavioral notes, and parameter. No wasted words; front-loads core action.

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?

Adequate for a simple single-parameter tool with no output schema. Covers purpose, parameter meaning, and key behaviors. Could mention error handling or confirmation, but not essential given tool simplicity.

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?

Description defines 'path' as 'Vault-relative path to the .base file to delete', adding format and file type constraints. Schema has 0% coverage, so description compensates meaningfully.

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 states 'Delete a .base file' with a specific verb and resource. It distinguishes from siblings like delete_note by specifying '.base files' only.

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 usage for .base files only ('Only .base files can be deleted'), but does not explicitly provide when-to-use or alternative tools like delete_note for other file types.

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

delete_noteB

Delete a note permanently.

Args: path: Path to the note to delete

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

B3.4/5.0
Behavior3/5

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

The term 'permanently' indicates irreversibility, but without annotations, the description lacks disclosure of auth requirements, impact on links, or recoverability.

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?

Extremely concise, front-loaded with the main action. The 'Args' section adds minimal structure but is functional.

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?

Given a single required parameter, no output schema, and no annotations, the description covers the essential operation reasonably well, though it omits return value or success indicators.

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 merely repeats the schema's parameter name and minimal purpose ('Path to the note to delete'), adding no format, absolute/relative distinction, or validation beyond the schema.

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 action ('Delete') and resource ('note') and specifies permanence, effectively distinguishing it from sibling tools like update_note or get_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?

No guidance on when to use this tool versus alternatives (e.g., moving to trash instead of permanent deletion) or any prerequisites like confirming deletion.

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

get_all_tagsA

Get all unique tags used in the vault.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states the action. It does not disclose performance characteristics, authorization needs, or results format, which is insufficient for a tool with zero 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, focused sentence of 8 words with no wasted content. It is front-loaded and 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 the simplicity (no parameters, no output schema), the description is minimally complete. It explains the core function but lacks any extra context that might be helpful for an agent, such as whether tags from deleted notes are included.

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?

Input schema has 0 parameters, leading to a baseline of 4 per guidelines. Description does not need to add parameter semantics as there are none, meeting the baseline.

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 'Get' and resource 'all unique tags' within the vault. It is specific and distinct from sibling tools like search_notes or get_note, which do not focus on tags.

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, such as search_notes for filtering tags. It lacks context on appropriate scenarios or exclusions.

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

get_baseA

Read a .base file as a parsed structure plus its raw YAML.

Tolerant of imperfect files: if the YAML cannot be parsed, the raw content is returned with a "parse_error" field instead of failing.

Args: path: Vault-relative path to the .base file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, but the description discloses return behavior (parsed structure + raw YAML) and error handling for parse failures. It does not mention read-only nature explicitly but it's inferred.

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 extremely concise (three sentences), front-loaded with the main purpose, and every sentence adds value.

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

Completeness5/5

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

For a simple read operation with one parameter, the description fully covers purpose, behavior, error handling, and parameter meaning. No output schema needed given clarity on return values.

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?

With 0% schema coverage, the description meaningfully explains the single parameter 'path' as 'Vault-relative path to the .base file', adding context beyond the schema's bare type.

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 reads a .base file and returns both a parsed structure and raw YAML, distinguishing it from sibling tools like create, update, or delete.

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?

Usage is implied for reading base files, and error handling for imperfect files is explained, but no explicit exclusions or alternatives to similar read operations are given.

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

get_folder_structureA

Get the complete folder structure of the vault.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided. The description does not disclose whether the structure is flat or nested, whether empty folders are included, or any ordering. More context on behavior is needed.

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, front-loaded sentence with no unnecessary words. It earns its place with direct clarity.

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?

For a simple tool with no parameters and no output schema, the description is minimally adequate. However, it could mention the output format (e.g., hierarchical JSON) or handle non-existent folders.

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 tool has zero parameters, so the description adds no parameter-specific meaning. Per guidelines, baseline is 4 for 0 params, and schema coverage is 100% (no params).

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 'Get the complete folder structure of the vault' uses a specific verb and resource, clearly indicating the tool's function. It distinguishes itself from sibling tools like create_folder or list_notes by focusing on retrieving the hierarchical structure.

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 list_notes or search_notes. The agent must infer its purpose from the name alone.

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

get_noteA

Get a note by its path.

Args: path: Path to the note relative to vault root (e.g., "notes/my-note.md")

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

A3.9/5.0
Behavior2/5

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

No annotations provided. Description lacks behavioral traits: whether note content or metadata is returned, error handling for non-existent notes, or any side effects. Significant gap.

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?

One sentence plus an Args section. Front-loaded, no wasted words, 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?

For a simple one-parameter tool with no output schema, the description explains the path but omits what the response contains (content vs metadata) and error behavior. Adequate but with gaps.

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?

Schema has zero description coverage. Description adds 'Path to the note relative to vault root' with an example, clarifying the parameter's meaning and format.

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 states 'Get a note by its path' – a specific verb and resource. Distinguishes from siblings like create_note, delete_note, update_note.

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?

Provides example path and states it's relative to vault root. No explicit exclusions or comparisons to search_notes, but usage is clear for a retrieval tool.

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

list_basesA

List all .base files in the vault or a folder, with their view names.

Args: folder: Optional folder path to search within (e.g., "Bases/").

ParametersJSON Schema
NameRequiredDescriptionDefault
folderNo

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, and the description does not state whether the operation is read-only or any other behavioral traits. For a list tool, read-only is implied but not explicit, leading to a lack of transparency.

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 extremely concise: a single sentence for the main functionality followed by a brief parameter explanation. No fluff, front-loaded, and every sentence adds value.

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?

For a simple tool with one optional parameter and no output schema, the description covers the main behavior and parameter. However, it does not explicitly state the return format (list of base names and view names), which is implied but not stated.

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?

While schema description coverage is 0%, the description adds meaningful context for the folder parameter: it explains its purpose ('to search within') and provides an example ('Bases/'). This compensates well for the missing schema descriptions.

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 'list' and the resource '.base files', specifying the scope 'in the vault or a folder' and includes detail about view names. It is distinct from siblings like list_notes and get_base.

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 versus alternatives like get_base or list_notes. The description provides context but no exclusions or recommendations.

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

list_notesA

List all notes in the vault or a specific folder.

Args: folder: Optional folder path (e.g., "notes/" or "projects/")

ParametersJSON Schema
NameRequiredDescriptionDefault
folderNo

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as recursion, pagination, ordering, or permissions. The description is too minimal for a list operation.

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 short but includes a redundant 'Args' section that mirrors the schema. It could be more concise without losing clarity.

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?

For a simple one-parameter tool, the description is adequate but incomplete. It lacks details about return format, recursion behavior, and permissions, especially given no output schema.

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?

Schema description coverage is 0%, but the description adds meaning by explaining the 'folder' parameter with an example path. This goes beyond the schema's type-only info.

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 lists notes in the vault or a specific folder, with a clear verb and resource. It distinguishes from siblings like search_notes and get_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 usage (list notes, optionally in a folder) but lacks guidance on when to use this vs. alternatives like search_notes or get_all_tags. No when-not advice.

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

search_notesA

Search notes by content, title, or tags.

Args: query: Search query string folder: Optional folder to search within

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
folderNo

TDQS

A3.6/5.0
Behavior2/5

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

No annotations exist, so the description must fully convey behavior. It only mentions search dimensions without details on pagination, wildcards, or whether it's destructive, which is insufficient.

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 short and front-loaded with the main purpose, but the Args section could be integrated more naturally. It remains 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 the low parameter count and no output schema, the description is minimally adequate for a search tool. However, it omits any mention of return format or behavior, which could mislead.

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?

With 0% schema description coverage, the description adds meaning by labeling 'query' as 'Search query string' and 'folder' as 'Optional folder to search within', improving over bare schema.

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 'search' and resource 'notes', and specifies search dimensions (content, title, tags). This distinguishes it from siblings like list_notes and get_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 usage for text-based note searching but does not explicitly state when to use this tool versus others, nor does it provide exclusion criteria or alternatives.

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

update_baseA

Update an existing .base file with merge semantics, then re-validate.

The file is read, the requested changes are merged, the whole structure is re-validated, the original is backed up (when backup-on-write is enabled), and the result is written back.

Args: path: Vault-relative path to the .base file. filters: When provided, replaces the global filters wholesale. To remove filters entirely, pass replace_filters=true and leave this unset. formulas: Mapping merged into existing formulas. A null value for a key removes that formula. properties: Mapping merged into existing properties (null removes). summaries: Mapping merged into existing summaries (null removes). upsert_views: List of view objects. Each replaces the existing view with the same "name", or is appended when there is no match. remove_views: List of view names to delete. replace_filters: Set true (with filters unset) to remove global filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
filtersNo
formulasNo
summariesNo
propertiesNo
remove_viewsNo
upsert_viewsNo
replace_filtersNo

TDQS

A4.2/5.0
Behavior4/5

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

No annotations exist, so description carries full burden. It discloses merge semantics, re-validation, backup behavior, and parameter-driven modifications (null removes). Missing error/permission details.

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 well-structured with a brief main sentence followed by detailed parameter explanations. Slightly verbose but every sentence adds value.

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?

Given the complexity (8 params, no output schema, no annotations), the description covers parameter semantics, merge behavior, and backup. Missing error handling and return value info, but acceptable.

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

Parameters5/5

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

Schema coverage is 0%, but description fully explains each parameter including null removal semantics and special behavior for replace_filters, providing essential meaning beyond the schema.

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 updates an existing .base file with merge semantics, distinguishing it from create or delete operations on the same resource.

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 usage for updating .base files but does not explicitly mention when to use or not use this tool compared to siblings like create_base or delete_base.

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

update_noteC

Update an existing note.

Args: path: Path to the note content: New content (optional) metadata: Metadata updates (optional)

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
contentNo
metadataNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It states 'Update an existing note' but does not clarify whether updates are merging or overwriting, what happens to unspecified fields, or if there are side effects or authorization requirements.

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 very concise, containing only one line of text plus a bulleted list of parameters. No unnecessary words, but it could be slightly more structured (e.g., separating purpose from parameter details) without adding length.

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 annotations and output schema, the description is incomplete. It does not explain return values (e.g., success/error), behavior when the note does not exist, or how partial updates are applied. Sibling tools suggest actions like get_note and delete_note, but no cross-referencing.

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?

The description lists parameters with brief explanations (e.g., 'path: Path to the note'), which adds basic meaning beyond the schema's raw type names. However, with 0% schema description coverage, the description could provide more detail, such as what 'metadata updates' entails (e.g., key-value pairs).

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 'Update' and the resource 'note', which distinguishes it from siblings like create_note and delete_note. However, it lacks specificity about what aspects of the note can be updated (e.g., content, metadata) beyond listing parameters.

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 (e.g., create_note for new notes, delete_note for removal). The description does not mention prerequisites, such as the note existing, or cases where partial updates are preferred.

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. 5 tool updatesv0.3.0
    • Addedcreate_base
    • Addeddelete_base
    • Addedget_base
    • Addedlist_bases
    • Addedupdate_base
  2. 12 tool updatesv0.1.0
    • First observedconfigure_vault
    • First observedcreate_folder
    • First observedcreate_note
    • First observeddelete_note
    • First observedget_all_tags
    • First observedget_backlinks
    • First observedget_folder_structure
    • First observedget_note
    • First observedget_note_links
    • First observedlist_notes
    • First observedsearch_notes
    • First observedupdate_note

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a distinct action or resource: configuration, note/base/folder CRUD, search, tags, links, and folder structure. There is no overlapping functionality; even similar tools like list_notes and search_notes serve clear different purposes.

Naming Consistency5/5

All tool names follow a consistent `verb_noun` pattern in snake_case, e.g., `create_note`, `delete_base`, `get_all_tags`. No mixing of conventions or vague verbs.

Tool Count5/5

17 tools is well-scoped for a vault management server. Each tool addresses a specific operation without unnecessary redundancy, covering notes, bases, folders, search, and metadata.

Completeness4/5

Core operations are covered: CRUD for notes and bases, search, tags, links, folder listing, and configuration. Minor gaps exist, such as no dedicated tool for folder deletion or note moving, but these are not essential for basic workflows.

Maintenance

ActivityMaintained
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

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/aka-kika/kika-obsidian-mcp'

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