
Security News
Happy Birthday, Shai-Hulud
It has been one year since Shai-Hulud made its first appearance on npm.
mcp-obsidian-cli
Advanced tools
MCP server wrapping the Obsidian CLI — full native API access over Model Context Protocol
Trademark Notice: "Obsidian" is a trademark of Obsidian Publishing, Inc. This project is not affiliated with or endorsed by Obsidian Publishing.
MCP server that wraps the Obsidian CLI, giving AI assistants full access to Obsidian's native API — search index, wikilink resolution, tasks, properties, daily notes, backlinks, and 80+ commands — through the Model Context Protocol.
Every existing Obsidian MCP server takes one of two approaches: the Local REST API plugin (requires API keys, HTTP overhead, limited command surface) or raw filesystem access (no Obsidian awareness — no search index, no wikilink resolution, no task queries). Both miss the point.
mcp-obsidian-cli wraps the Obsidian CLI plugin, which talks directly to the running Obsidian instance via IPC. This means full access to Obsidian's internal APIs with zero configuration — no API keys, no REST plugins, no token management.
npx mcp-obsidian-cli
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": ["-y", "mcp-obsidian-cli"],
"env": {
"OBSIDIAN_VAULT": "my-vault"
}
}
}
}
obsidian-cli on your PATH (typically /Applications/Obsidian.app/Contents/MacOS/obsidian-cli on macOS)The server exposes Obsidian CLI commands as MCP tools. A generic pass-through tool handles the full CLI surface (80+ commands), plus typed convenience tools for common operations:
| Tool | Description |
|---|---|
obsidian | Generic pass-through — run any CLI command |
obsidian_daily_read | Read today's daily note |
obsidian_daily_append | Append to daily note |
obsidian_read | Read a note by name or path |
obsidian_search | Full-text search with context |
obsidian_tags | List tags with counts |
obsidian_tasks | Query tasks (daily, todo, done) |
obsidian_properties | Read frontmatter properties |
obsidian_create | Create a new note |
obsidian_property_set | Set a frontmatter property |
obsidian_backlinks | List backlinks to a note |
obsidian_files | List vault files |
obsidian_recents | Recently opened files |
The generic obsidian tool means the MCP server never falls behind the CLI — new CLI commands work immediately without a server update.
| Variable | Default | Description |
|---|---|---|
OBSIDIAN_VAULT | (none) | Target vault by name |
OBSIDIAN_CLI_PATH | obsidian-cli | Path to CLI binary |
OBSIDIAN_TIMEOUT_MS | 15000 | Command timeout |
XDG_CONFIG_HOME | ~/.config | Base path for config file |
The server can read settings from a YAML config file:
~/.config/mcp-obsidian-cli/config.yamlXDG_CONFIG_HOME: $XDG_CONFIG_HOME/mcp-obsidian-cli/config.yamlConfig file format:
vault: "my-vault"
cliPath: "obsidian-cli"
timeoutMs: 15000
Config precedence: env vars > config file > hardcoded defaults
| mcp-obsidian-cli | REST API servers | Filesystem servers | |
|---|---|---|---|
| Search index | Yes | Yes | No |
| Wikilink resolution | Yes | Partial | No |
| Task queries | Yes | No | No |
| Property types | Yes | Partial | No |
| Daily notes | Yes | No | No |
| Backlinks | Yes | Yes | No |
| API keys | None | Required | None |
| Obsidian plugins | CLI plugin | REST API plugin | None |
| Commands | 80+ | ~10 | ~6 |
File an issue: https://github.com/stonematt/mcp-obsidian-cli/issues/new/choose. Bug template asks for version, MCP client, tool call, and response — quick to fill, fast to act on.
MIT
Maintained by @stonematt Licensed under the MIT License
FAQs
Save chat notes from Claude Desktop to your vault — MCP on Obsidian CLI. Keep what matters.
The npm package mcp-obsidian-cli receives a total of 109 weekly downloads. As such, mcp-obsidian-cli popularity was classified as not popular.
We found that mcp-obsidian-cli demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.