Obsidian
MCP ServerFree** - Interacting with Obsidian via REST API
Capabilities14 decomposed
mcp protocol-compliant vault bridging with stdio-based communication
Medium confidenceImplements a Python-based MCP server that launches as a subprocess and communicates with MCP clients (Claude Desktop) via stdio, translating high-level tool requests into structured MCP protocol messages. The server registers 13 tools dynamically, handles request routing through call_tool and list_tools handlers, and manages the full MCP lifecycle including initialization and tool discovery without requiring direct file system access to Obsidian vaults.
Uses MCP protocol as the primary abstraction layer rather than direct REST API exposure, enabling seamless integration with Claude Desktop's tool-calling framework while maintaining clean separation between protocol handling (server.py) and business logic (tools.py, obsidian.py)
Provides standardized MCP protocol compliance vs custom REST wrappers, enabling native Claude Desktop integration without requiring custom client code or authentication management
rest api-mediated vault file read operations with content retrieval
Medium confidenceImplements file reading capability by translating MCP tool requests into HTTP GET calls to Obsidian's REST API vault/read endpoint, parsing JSON responses containing file metadata and content, and returning formatted text content to the client. Supports reading any file type stored in the vault (markdown, JSON, images as base64) with automatic error handling for missing files and permission issues.
Abstracts Obsidian's REST API read endpoint through a ToolHandler pattern that formats responses as TextContent objects, enabling seamless integration with Claude's context window while handling encoding for binary content automatically
Safer than direct file system reads because it respects Obsidian's internal state management and plugin hooks, vs alternatives that bypass Obsidian entirely and risk vault corruption
async/await based request handling with non-blocking i/o
Medium confidenceImplements the MCP server using Python's asyncio framework with async/await syntax, enabling non-blocking I/O for HTTP requests to Obsidian's REST API. The implementation uses async context managers for resource cleanup and async generators for streaming responses, allowing the server to handle multiple concurrent client requests without blocking.
Uses Python's asyncio framework with async/await syntax for the MCP server loop, enabling non-blocking I/O and concurrent request handling while maintaining clean, readable code structure
More responsive than synchronous servers because multiple concurrent requests don't block each other, and better resource utilization because threads aren't created per request
vault file listing and directory traversal with metadata
Medium confidenceImplements file listing capability by querying Obsidian's REST API vault/list endpoint to retrieve directory contents with file metadata (size, type, modification date). The implementation supports recursive directory traversal and filtering by file type, enabling clients to explore vault structure and discover files without direct file system access.
Provides recursive directory traversal through Obsidian's REST API rather than direct file system access, respecting Obsidian's vault structure and ignoring system files or ignored directories
More reliable than file system traversal because it only returns files that Obsidian recognizes as vault content, excluding system files, caches, and ignored directories
tag-based note filtering and discovery with metadata extraction
Medium confidenceImplements tag-based filtering by parsing note frontmatter and content to extract tags, then filtering notes by tag matches. The implementation supports both YAML frontmatter tags and inline tag syntax (#tag), enabling clients to discover notes by topic without full-text search.
Extracts tags from both YAML frontmatter and inline #tag syntax, supporting multiple tagging conventions within the same vault and enabling flexible tag-based organization
More flexible than search-based filtering because it respects Obsidian's tag structure and supports hierarchical tag relationships, vs full-text search which treats tags as regular text
backlink and forward link graph traversal for knowledge graph navigation
Medium confidenceImplements link traversal capability by parsing note content to extract wiki-style links ([[note-name]]) and backlinks, enabling clients to navigate the knowledge graph and discover related notes. The implementation builds a link graph by analyzing note content and provides methods to traverse forward links (outgoing) and backlinks (incoming).
Parses note content to extract wiki-style links and builds a bidirectional link graph, enabling both forward link traversal (what does this note link to) and backlink traversal (what notes link to this)
More powerful than simple link following because it supports bidirectional traversal and can analyze the full knowledge graph structure, vs alternatives that only support forward links
rest api-mediated vault file write operations with content patching
Medium confidenceImplements file writing capability by translating MCP tool requests into HTTP POST calls to Obsidian's REST API vault/write endpoint, supporting both full file replacement and targeted content patching via search-and-replace operations. The implementation validates file paths, handles encoding for text and binary content, and provides atomic write semantics through Obsidian's internal file handling.
Supports both full-file replacement and targeted search-and-replace patching through the same ToolHandler interface, enabling both bulk updates and surgical edits without requiring the client to manage merge logic or conflict resolution
More reliable than direct file system writes because Obsidian's REST API enforces its internal consistency checks and plugin hooks, preventing vault corruption from concurrent access or malformed content
vault-wide full-text search with query-based content discovery
Medium confidenceImplements search capability by translating MCP tool requests into HTTP POST calls to Obsidian's REST API vault/search endpoint with query parameters, returning ranked lists of matching files with excerpt snippets and relevance scores. The implementation supports boolean operators, phrase matching, and field-specific searches (title, content, tags) through Obsidian's native search syntax.
Leverages Obsidian's native search engine through the REST API rather than implementing custom indexing, ensuring search results reflect Obsidian's actual vault state including recent edits and plugin-generated content
More accurate than external search indexes because it queries Obsidian's live index rather than a potentially stale external database, and supports Obsidian-specific search syntax (tags, links, metadata)
periodic notes retrieval with date-based note discovery
Medium confidenceImplements periodic notes capability by querying Obsidian's REST API for notes matching periodic note naming conventions (daily, weekly, monthly, yearly notes) based on date parameters. The implementation translates date inputs into note paths using Obsidian's configurable periodic note naming format, retrieves matching notes, and returns their content with date metadata.
Abstracts Obsidian's periodic note naming conventions through a ToolHandler that translates date inputs into vault paths, enabling date-based queries without requiring the client to know Obsidian's specific naming format
More flexible than hardcoded daily note paths because it respects Obsidian's configurable periodic note settings, allowing users to change naming formats without breaking integrations
recent vault changes tracking with modification timestamp filtering
Medium confidenceImplements change tracking capability by querying Obsidian's REST API for recently modified files, filtering by modification timestamp and returning a chronologically sorted list of changed files with metadata. The implementation enables time-window based queries (e.g., 'files changed in last 24 hours') without requiring external change logs or file system monitoring.
Queries Obsidian's live file modification metadata through the REST API rather than polling the file system, providing accurate change detection that respects Obsidian's internal state and plugin modifications
More reliable than file system watchers because it captures changes made through Obsidian's UI and plugins, not just direct file modifications, and works across network connections to remote vaults
obsidian rest api client with authentication and error handling
Medium confidenceImplements a dedicated Obsidian class that manages HTTP communication with Obsidian's Local REST API, handling authentication via API key headers, request/response serialization, error parsing, and retry logic. The client abstracts HTTP details from tool handlers, providing typed methods for each REST endpoint (read, write, search, etc.) with consistent error handling and response normalization.
Centralizes all REST API communication in a single Obsidian class, enabling consistent error handling, authentication injection, and response normalization across all 13 tools without duplicating HTTP logic in each tool handler
More maintainable than scattered HTTP calls in individual tools because changes to API communication (auth, retries, timeouts) only need to be made in one place, reducing bugs and improving consistency
toolhandler abstraction pattern for tool implementation and response formatting
Medium confidenceImplements a base ToolHandler class that all 13 tools inherit from, defining a consistent interface for tool execution (execute method), argument validation, and response formatting as TextContent objects. The pattern enables rapid tool development by providing common utilities for error handling, logging, and MCP response formatting while allowing each tool to focus on business logic.
Provides a reusable ToolHandler base class that encapsulates MCP protocol details, argument validation, and response formatting, allowing tool developers to focus on business logic without understanding MCP internals
More maintainable than monolithic tool implementations because each tool is isolated in its own class with consistent error handling, vs alternatives that mix protocol logic with business logic in single functions
dynamic tool registration and discovery with mcp protocol compliance
Medium confidenceImplements a tool registration system in the MCP server that dynamically discovers all ToolHandler subclasses at startup, registers them with the MCP server, and exposes them through the list_tools and call_tool handlers. The implementation uses Python's introspection to automatically generate tool schemas from handler class definitions, eliminating manual schema maintenance.
Uses Python introspection to automatically discover and register ToolHandler subclasses at server startup, generating MCP tool schemas dynamically rather than maintaining separate schema definitions
More maintainable than manual tool registration because adding a new tool only requires creating a new ToolHandler subclass — no need to update server registration code or schema definitions
environment-based configuration with vault and api key management
Medium confidenceImplements configuration management through environment variables (OBSIDIAN_VAULT_NAME, OBSIDIAN_REST_API_KEY) loaded via python-dotenv, enabling secure credential storage and vault selection without hardcoding. The implementation supports .env file loading for local development and environment variable injection for production deployments (Claude Desktop config).
Uses python-dotenv to load environment variables from .env files during development while supporting standard environment variable injection for production, enabling seamless transition from local to Claude Desktop deployment
More secure than hardcoded credentials because credentials are stored in environment variables rather than source code, and supports standard deployment patterns (Docker, systemd) that inject credentials at runtime
Capabilities are decomposed by AI analysis. Each maps to specific user intents and improves with match feedback.
Related Artifactssharing capabilities
Artifacts that share capabilities with Obsidian, ranked by overlap. Discovered automatically through the match graph.
mcp-obsidian
Model Context Protocol server for Obsidian Vaults
Obsidian MCP Server
Search, read, and write Obsidian vault notes via MCP.
@dev-boy/mcp-stdio-server
Native STDIO MCP server for Dev Boy - GitLab integration using @modelcontextprotocol/sdk
obsidian-mcp-server
Obsidian Knowledge-Management MCP (Model Context Protocol) server that enables AI agents and development tools to interact with an Obsidian vault. It provides a comprehensive suite of tools for reading, writing, searching, and managing notes, tags, and frontmatter, acting as a bridge to the Obsidian
@vapi-ai/mcp-server
Vapi MCP Server
@agent-infra/mcp-server-filesystem
MCP server for filesystem access
Best For
- ✓AI assistant developers integrating Obsidian knowledge bases with Claude Desktop
- ✓Teams building AI-augmented knowledge management workflows
- ✓Developers extending Claude's capabilities with local knowledge vault access
- ✓Knowledge workers querying their Obsidian vault from Claude for research or synthesis
- ✓AI agents building context from vault notes before generating responses
- ✓Automation workflows that need to read note content as input to downstream processing
- ✓High-concurrency deployments where multiple Claude instances query the same vault
- ✓Long-running operations that would block synchronous servers
Known Limitations
- ⚠Requires Obsidian Local REST API community plugin to be installed and running on the target vault
- ⚠Subprocess-based execution adds ~50-100ms latency per request due to process spawning overhead
- ⚠No built-in persistence or caching of vault state between requests — each operation is stateless
- ⚠Limited to Python 3.11+ runtime; no native support for other languages
- ⚠Cannot stream large files — entire file content must be loaded into memory before returning
- ⚠Binary files (images, PDFs) are returned as base64-encoded strings, increasing response size by ~33%
Requirements
Input / Output
UnfragileRank
UnfragileRank is computed from adoption signals, documentation quality, ecosystem connectivity, match graph feedback, and freshness. No artifact can pay for a higher rank.
About
** - Interacting with Obsidian via REST API
Categories
Alternatives to Obsidian
Are you the builder of Obsidian?
Claim this artifact to get a verified badge, access match analytics, see which intents users search for, and manage your listing.
Get the weekly brief
New tools, rising stars, and what's actually worth your time. No spam.
Data Sources
Looking for something else?
Search →