# kObsidian (npm · kobsidian-mcp)

Filesystem-first MCP for Obsidian — an LLM-maintained wiki inspired by Karpathy's LLM Wiki.

- Trust score: 73/100 (medium)
- Change this week: +24
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `kobsidian-mcp`: 73/100 (this document), [markdown](https://verifymcp.io/servers/bezata-kobsidian-mcp/kobsidian-mcp.md), [page](https://verifymcp.io/servers/bezata-kobsidian-mcp/kobsidian-mcp)

## Channel facts

- Registry: `npm`
- Package: `kobsidian-mcp`
- Version: `0.2.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 83/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known medium-severity CVE affects @hono/node-server 1.19.17, reached via @modelcontextprotocol/sdk > @hono/node-server. A fixed version is available.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (105 of 109), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to bezata/kObsidian).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 17 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 64/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (poor).
  - Tool/resource definitions use about 4371 tokens (~47/item across 92 items; 92 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 71/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add bezata-kobsidian-mcp -- npx -y kobsidian-mcp
```

### Codex

```bash
codex mcp add bezata-kobsidian-mcp -- npx -y kobsidian-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "bezata-kobsidian-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "kobsidian-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add bezata-kobsidian-mcp --command npx --arg -y --arg kobsidian-mcp
```

### Hermes

```yaml
mcp_servers:
  bezata-kobsidian-mcp:
    command: "npx"
    args: ["-y", "kobsidian-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "bezata-kobsidian-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "kobsidian-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 73, +4)

- [functional improvement] Stability: unverified → 0.27

### 2026-08-02 (score 69, +46)

- [security regression] GHSA-frvp-7c67-39w9 affects this package: medium
- [security regression] Known CVEs: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Provenance: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [security] The attested source repository moved: bezata/kObsidian
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Schema quality: unverified → poor
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional] Licence: MIT

### 2026-07-31 (score 23, −26)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-27 (score 49)

First indexed and scored.

## MCP tools (92)

### `notes.read` (~33 tokens)

Read Note

Read a note from the vault with parsed metadata.

Input parameters:

- `path` (string, required)
- `vaultPath` (string)

### `notes.create` (~46 tokens)

Create Note

Create a new note using filesystem-first behavior.

Input parameters:

- `content` (string, required)
- `overwrite` (boolean)
- `path` (string, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `notes.update` (~59 tokens)

Update Note

Update an existing note, replacing or appending content.

Input parameters:

- `content` (string, required)
- `createIfNotExists` (boolean)
- `mergeStrategy` (string)
- `path` (string, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `notes.delete` (~30 tokens)

Delete Note

Delete a note from the vault.

Input parameters:

- `path` (string, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `notes.search` (~46 tokens)

Search Notes

Search notes by text with lightweight support for tag: and path: filters.

Input parameters:

- `contextLength` (integer)
- `query` (string, required)
- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `notes.searchByDate` (~49 tokens)

Search Notes By Date

List notes by created or modified date.

Input parameters:

- `dateType` (string)
- `daysAgo` (integer)
- `operator` (string)
- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `notes.list` (~39 tokens)

List Notes

List notes in the vault or a folder.

Input parameters:

- `directory` (string)
- `recursive` (boolean)
- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `notes.listFolders` (~37 tokens)

List Folders

List folders in the vault.

Input parameters:

- `directory` (string)
- `recursive` (boolean)
- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `notes.move` (~51 tokens)

Move Note

Move a note and optionally update links that reference it.

Input parameters:

- `destinationPath` (string, required)
- `sourcePath` (string, required)
- `updateLinks` (boolean)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `notes.createFolder` (~32 tokens)

Create Folder

Create a folder in the vault.

Input parameters:

- `folderPath` (string, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `notes.moveFolder` (~52 tokens)

Move Folder

Move a folder and optionally update links inside the vault.

Input parameters:

- `destinationFolder` (string, required)
- `sourceFolder` (string, required)
- `updateLinks` (boolean)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `notes.info` (~39 tokens)

Note Info

Get note metadata and lightweight statistics without loading the result into a client-specific schema.

Input parameters:

- `path` (string, required)
- `vaultPath` (string)

### `notes.insertAfterHeading` (~48 tokens)

Insert After Heading

Insert content immediately after a markdown heading.

Input parameters:

- `content` (string, required)
- `filePath` (string, required)
- `heading` (string, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `notes.insertAfterBlock` (~48 tokens)

Insert After Block

Insert content after a block reference.

Input parameters:

- `blockId` (string, required)
- `content` (string, required)
- `filePath` (string, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `notes.updateFrontmatter` (~46 tokens)

Update Frontmatter

Create or update a frontmatter field.

Input parameters:

- `field` (string, required)
- `filePath` (string, required)
- `value` (required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `notes.append` (~40 tokens)

Append To Note

Append content to the end of a note.

Input parameters:

- `content` (string, required)
- `filePath` (string, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `tags.analyze` (~34 tokens)

Analyze Tags

Extract frontmatter and inline tags from a note.

Input parameters:

- `path` (string, required)
- `vaultPath` (string)

### `tags.add` (~39 tokens)

Add Tags

Add tags to a note frontmatter block.

Input parameters:

- `path` (string, required)
- `tags` (array, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `tags.update` (~47 tokens)

Update Tags

Replace or merge a note's frontmatter tags.

Input parameters:

- `merge` (boolean)
- `path` (string, required)
- `tags` (array, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `tags.remove` (~36 tokens)

Remove Tags

Remove tags from frontmatter.

Input parameters:

- `path` (string, required)
- `tags` (array, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `tags.search` (~36 tokens)

Search By Tag

Find notes that contain a tag in frontmatter or inline content.

Input parameters:

- `tag` (string, required)
- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `tags.list` (~40 tokens)

List Tags

List unique tags used across the vault.

Input parameters:

- `includeCounts` (boolean)
- `sortBy` (string)
- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `links.backlinks` (~49 tokens)

Get Backlinks

Find notes that link to a target note.

Input parameters:

- `contextLength` (integer)
- `includeContext` (boolean)
- `path` (string, required)
- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `links.outgoing` (~39 tokens)

Get Outgoing Links

Extract links referenced by a note.

Input parameters:

- `checkValidity` (boolean)
- `path` (string, required)
- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `links.broken` (~35 tokens)

Find Broken Links

Find broken note links in the vault or a folder.

Input parameters:

- `directory` (string)
- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `links.graph` (~22 tokens)

Get Link Graph

Build the vault link graph.

Input parameters:

- `vaultPath` (string)

### `links.orphaned` (~27 tokens)

Find Orphaned Notes

Find notes with no incoming or outgoing links.

Input parameters:

- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `links.hubs` (~33 tokens)

Find Hub Notes

Find notes with many outgoing links.

Input parameters:

- `minOutlinks` (integer)
- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `links.health` (~26 tokens)

Analyze Link Health

Summarize link density and broken-link metrics.

Input parameters:

- `vaultPath` (string)

### `links.connections` (~39 tokens)

Get Note Connections

Explore direct and multi-hop note connections.

Input parameters:

- `depth` (integer)
- `noteName` (string, required)
- `vaultPath` (string)

### `stats.note` (~31 tokens)

Note Statistics

Get statistics for a single note.

Input parameters:

- `filePath` (string, required)
- `vaultPath` (string)

### `stats.vault` (~25 tokens)

Vault Statistics

Get aggregate statistics for the whole vault.

Input parameters:

- `vaultPath` (string)

### `tasks.search` (~96 tokens)

Search Tasks

Search Tasks-plugin style markdown tasks across the vault.

Input parameters:

- `dueAfter` (string)
- `dueBefore` (string)
- `dueWithinDays` (integer)
- `hasRecurrence` (boolean)
- `limit` (integer)
- `priority` (string)
- `sortBy` (string)
- `status` (string)
- `tag` (string)
- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `tasks.create` (~100 tokens)

Create Task

Append a task line to a note.

Input parameters:

- `content` (string, required)
- `createdDate` (string)
- `doneDate` (string)
- `dueDate` (string)
- `filePath` (string, required)
- `priority` (string)
- `recurrence` (string)
- `scheduledDate` (string)
- `startDate` (string)
- `status` (string)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `tasks.toggle` (~52 tokens)

Toggle Task

Toggle a task complete/incomplete by file and line number.

Input parameters:

- `doneDate` (string)
- `lineNumber` (integer, required)
- `sourceFile` (string, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `tasks.updateMetadata` (~82 tokens)

Update Task Metadata

Update task dates, priority, or recurrence in place.

Input parameters:

- `dueDate` (string)
- `lineNumber` (integer, required)
- `priority` (string)
- `recurrence` (string)
- `scheduledDate` (string)
- `sourceFile` (string, required)
- `startDate` (string)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `tasks.stats` (~24 tokens)

Task Statistics

Get aggregate task statistics for the vault.

Input parameters:

- `vaultPath` (string)

### `dataview.index.read` (~48 tokens)

Read Dataview Index

Read page, list-item, task, DQL, and DataviewJS metadata from a note.

Input parameters:

- `filePath` (string, required)
- `vaultPath` (string)

### `dataview.fields.extract` (~37 tokens)

Extract Dataview Fields

Extract scoped Dataview fields from a note.

Input parameters:

- `filePath` (string, required)
- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `dataview.fields.search` (~58 tokens)

Search Dataview Fields

Search notes by Dataview field key and optional value.

Input parameters:

- `key` (string, required)
- `scope` (string)
- `value`
- `valueType` (string)
- `vaultPath` (string)

### `dataview.fields.add` (~80 tokens)

Add Dataview Field

Insert a Dataview field into a note.

Input parameters:

- `filePath` (string, required)
- `insertAt` (string)
- `key` (string, required)
- `lineNumber` (integer)
- `scope` (string)
- `syntaxType` (string)
- `value` (required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `dataview.fields.remove` (~59 tokens)

Remove Dataview Field

Remove a Dataview field from a note.

Input parameters:

- `filePath` (string, required)
- `key` (string, required)
- `lineNumber` (integer)
- `scope` (string)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `dataview.query.read` (~39 tokens)

Read Dataview Query Blocks

Extract fenced dataview DQL blocks from a note.

Input parameters:

- `filePath` (string, required)
- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `dataview.query.update` (~63 tokens)

Update Dataview Query Block

Replace one fenced dataview DQL block source-preservingly.

Input parameters:

- `blockId` (string)
- `filePath` (string, required)
- `index` (integer)
- `source` (string, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `dataview.js.read` (~41 tokens)

Read DataviewJS Blocks

Extract fenced dataviewjs blocks from a note without executing them.

Input parameters:

- `filePath` (string, required)
- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `dataview.js.update` (~62 tokens)

Update DataviewJS Block

Replace one fenced dataviewjs block source-preservingly.

Input parameters:

- `blockId` (string)
- `filePath` (string, required)
- `index` (integer)
- `source` (string, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `dataview.query` (~36 tokens)

Run Dataview Query

Execute a Dataview Query Language (DQL) query through the Obsidian API.

Input parameters:

- `query` (string, required)

### `dataview.listByTag` (~52 tokens)

List Notes By Tag (DQL)

Run a DQL LIST query for a tag.

Input parameters:

- `limit` (integer)
- `sortBy` (string)
- `tag` (string, required)
- `whereClause` (string)

### `dataview.listByFolder` (~52 tokens)

List Notes By Folder (DQL)

Run a DQL LIST query for a folder.

Input parameters:

- `folder` (string, required)
- `limit` (integer)
- `sortBy` (string)
- `whereClause` (string)

### `dataview.table` (~55 tokens)

Table Query (DQL)

Run a DQL TABLE query.

Input parameters:

- `fields` (array, required)
- `fromClause` (string)
- `limit` (integer)
- `sortBy` (string)
- `whereClause` (string)

### `mermaid.blocks.list` (~38 tokens)

List Mermaid Blocks

List fenced Mermaid blocks in a note or across the vault.

Input parameters:

- `filePath` (string)
- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `mermaid.blocks.read` (~55 tokens)

Read Mermaid Block

Read one Mermaid block with source spans, directives, and config metadata.

Input parameters:

- `blockId` (string)
- `filePath` (string, required)
- `index` (integer)
- `vaultPath` (string)

### `mermaid.blocks.update` (~58 tokens)

Update Mermaid Block

Replace one fenced Mermaid block source-preservingly.

Input parameters:

- `blockId` (string)
- `filePath` (string, required)
- `index` (integer)
- `source` (string, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `marp.deck.read` (~41 tokens)

Read Marp Deck

Read Marp deck frontmatter, slides, directives, and source spans.

Input parameters:

- `filePath` (string, required)
- `vaultPath` (string)

### `marp.slides.list` (~37 tokens)

List Marp Slides

List Marp slides with separator and directive metadata.

Input parameters:

- `filePath` (string, required)
- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `marp.slides.read` (~52 tokens)

Read Marp Slide

Read one Marp slide source-preservingly.

Input parameters:

- `filePath` (string, required)
- `index` (integer)
- `slideId` (string)
- `vaultPath` (string)

### `marp.slides.update` (~60 tokens)

Update Marp Slide

Replace one Marp slide body without rewriting neighboring slides.

Input parameters:

- `filePath` (string, required)
- `index` (integer)
- `slideId` (string)
- `source` (string, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `marp.frontmatter.update` (~47 tokens)

Update Marp Frontmatter

Update selected Marp deck frontmatter fields while preserving unrelated source.

Input parameters:

- `fields` (object, required)
- `filePath` (string, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `kanban.parse` (~33 tokens)

Parse Kanban Board

Parse a markdown Kanban board file.

Input parameters:

- `filePath` (string, required)
- `vaultPath` (string)

### `kanban.addCard` (~73 tokens)

Add Kanban Card

Add a card to a Kanban column.

Input parameters:

- `cardText` (string, required)
- `columnName` (string, required)
- `dueDate` (string)
- `filePath` (string, required)
- `position` (string)
- `status` (string)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `kanban.moveCard` (~65 tokens)

Move Kanban Card

Move a card between Kanban columns.

Input parameters:

- `cardText` (string, required)
- `filePath` (string, required)
- `fromColumn` (string, required)
- `position` (string)
- `toColumn` (string, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `kanban.toggleCard` (~51 tokens)

Toggle Kanban Card

Toggle a Kanban card complete/incomplete.

Input parameters:

- `cardText` (string, required)
- `columnName` (string)
- `filePath` (string, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `kanban.stats` (~37 tokens)

Kanban Statistics

Get card counts and completion rates for a Kanban board.

Input parameters:

- `filePath` (string, required)
- `vaultPath` (string)

### `templates.expand` (~45 tokens)

Expand Template

Expand filesystem template variables into content.

Input parameters:

- `filename` (string)
- `templatePath` (string, required)
- `variables` (object)
- `vaultPath` (string)

### `templates.createNote` (~48 tokens)

Create Note From Template

Create a note from a filesystem template.

Input parameters:

- `targetPath` (string, required)
- `templatePath` (string, required)
- `variables` (object)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `templates.list` (~31 tokens)

List Templates

List markdown templates in a folder.

Input parameters:

- `templateFolder` (string)
- `vaultPath` (string)

Output parameters:

- `items` (array)
- `total` (integer)

### `templates.renderTemplater` (~40 tokens)

Render Templater Template

Render a Templater template via the Obsidian API.

Input parameters:

- `targetFile` (string)
- `templateFile` (string, required)

### `templates.createNoteTemplater` (~52 tokens)

Create Note From Templater

Create a note from a Templater template via the Obsidian API.

Input parameters:

- `openFile` (boolean)
- `targetFile` (string, required)
- `templateFile` (string, required)

### `templates.insertTemplater` (~38 tokens)

Insert Templater Template

Insert a Templater template into the active note.

Input parameters:

- `activeFile` (boolean)
- `templateFile` (string, required)

### `canvas.create` (~44 tokens)

Create Canvas

Create a new empty Obsidian canvas (.canvas) file.

Input parameters:

- `filePath` (string, required)
- `overwrite` (boolean)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `canvas.parse` (~32 tokens)

Parse Canvas

Parse an Obsidian canvas file.

Input parameters:

- `filePath` (string, required)
- `vaultPath` (string)

### `canvas.addNode` (~81 tokens)

Add Canvas Node

Add a text or file node to an Obsidian canvas.

Input parameters:

- `content` (string, required)
- `filePath` (string, required)
- `height` (integer)
- `nodeType` (string, required)
- `vaultPath` (string)
- `width` (integer)
- `x` (number, required)
- `y` (number, required)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `canvas.addEdge` (~55 tokens)

Add Canvas Edge

Connect two nodes in a canvas.

Input parameters:

- `filePath` (string, required)
- `fromNode` (string, required)
- `label` (string)
- `toNode` (string, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `canvas.removeNode` (~43 tokens)

Remove Canvas Node

Remove a node and its edges from a canvas.

Input parameters:

- `filePath` (string, required)
- `nodeId` (string, required)
- `vaultPath` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `canvas.connections` (~42 tokens)

Canvas Node Connections

Get incoming and outgoing edges for a canvas node.

Input parameters:

- `filePath` (string, required)
- `nodeId` (string, required)
- `vaultPath` (string)

### `workspace.activeFile` (~19 tokens)

Get Active File

Get the currently active file in Obsidian.

### `workspace.openFile` (~33 tokens)

Open File

Open a file in Obsidian.

Input parameters:

- `filePath` (string, required)
- `newPane` (boolean)

### `workspace.closeActiveFile` (~19 tokens)

Close Active File

Close the active file in Obsidian.

### `workspace.navigateBack` (~17 tokens)

Navigate Back

Go back in Obsidian history.

### `workspace.navigateForward` (~17 tokens)

Navigate Forward

Go forward in Obsidian history.

### `workspace.toggleEditMode` (~20 tokens)

Toggle Edit Mode

Toggle edit/preview mode in Obsidian.

### `commands.execute` (~32 tokens)

Execute Command

Execute an Obsidian command by ID.

Input parameters:

- `args` (object)
- `commandId` (string, required)

### `commands.list` (~16 tokens)

List Commands

List all available Obsidian commands.

Output parameters:

- `items` (array)
- `total` (integer)

### `commands.search` (~25 tokens)

Search Commands

Search Obsidian commands by ID or name.

Input parameters:

- `query` (string, required)

Output parameters:

- `items` (array)
- `total` (integer)

### `wiki.init` (~72 tokens)

Initialize Wiki

Scaffold the wiki layout: Sources/, Concepts/, Entities/ folders plus seed index.md, log.md, and wiki-schema.md. Idempotent; use force:true to re-seed index/log/schema files.

Input parameters:

- `force` (boolean)
- `vaultPath` (string)
- `wikiRoot` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `wiki.ingest` (~169 tokens)

Ingest Source

File a new source into the wiki: create Sources/<slug>.md with canonical frontmatter, append a log entry, and return proposedEdits for index + related concept/entity pages for the LLM to apply via notes.update.

Input parameters:

- `author` (string)
- `confidence` (string)
- `content` (string)
- `ingestedAt` (string)
- `relatedConcepts` (array)
- `relatedEntities` (array)
- `slug` (string)
- `sourcePath` (string)
- `sourceType` (string)
- `summary` (string)
- `tags` (array)
- `title` (string, required)
- `url` (string)
- `vaultPath` (string)
- `wikiRoot` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `wiki.logAppend` (~92 tokens)

Append Wiki Log Entry

Append a typed chronological entry to the wiki log using the convention '## [YYYY-MM-DD] <op> | <title>'. Initializes the wiki if needed.

Input parameters:

- `body` (string)
- `date` (string)
- `op` (string, required)
- `refs` (array)
- `title` (string, required)
- `vaultPath` (string)
- `wikiRoot` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `wiki.indexRebuild` (~63 tokens)

Rebuild Wiki Index

Regenerate the wiki index.md from the current state of Sources/, Concepts/, and Entities/. Groups entries by category; supports optional per-category counts.

Input parameters:

- `includeCounts` (boolean)
- `vaultPath` (string)
- `wikiRoot` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `wiki.query` (~72 tokens)

Query Wiki

Rank wiki pages relevant to a topic using filename, alias, tag, summary and body hits. Returns the top pages so the LLM can drill in with notes.read.

Input parameters:

- `limit` (integer)
- `topic` (string, required)
- `vaultPath` (string)
- `wikiRoot` (string)

### `wiki.lint` (~68 tokens)

Lint Wiki

Health-check the wiki: orphans, broken links, stale sources, missing concept pages, singleton tags, and index.md parity. Read-only; returns grouped findings with totals.

Input parameters:

- `staleDays` (integer)
- `vaultPath` (string)
- `wikiRoot` (string)

### `wiki.summaryMerge` (~126 tokens)

Merge Summary Into Concept Or Entity Page

Add a cited section into an existing concept or entity page (or create the page with canonical frontmatter if missing). Bumps 'updated' on existing pages.

Input parameters:

- `aliases` (array)
- `citationQuote` (string)
- `citationSource` (string)
- `entityKind` (string)
- `heading` (string)
- `newSection` (string, required)
- `pageType` (string)
- `summary` (string)
- `targetPath` (string, required)
- `vaultPath` (string)
- `wikiRoot` (string)

Output parameters:

- `changed` (boolean)
- `summary` (string)
- `target` (string)

### `system.version` (~24 tokens)

Server Version

Return the running kObsidian server name, version, and host runtime.

Output parameters:

- `name` (string)
- `runtime` (string)
- `runtimeVersion` (string)
- `summary` (string)
- `version` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/bezata-kobsidian-mcp/kobsidian-mcp#diagnostics

## Score history

- 2026-08-03: 73
- 2026-08-02: 69
- 2026-08-01: 23
- 2026-07-31: 23
- 2026-07-30: 49
- 2026-07-28: 49
- 2026-07-27: 49

## Links

- npm package: https://www.npmjs.com/package/kobsidian-mcp
- Socket report: https://socket.dev/npm/package/kobsidian-mcp
- Repository: https://github.com/bezata/kObsidian
- Changelog RSS feed: https://verifymcp.io/servers/bezata-kobsidian-mcp/kobsidian-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/bezata-kobsidian-mcp/kobsidian-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/bezata-kobsidian-mcp/kobsidian-mcp
