Obsidian Tools MCP Server
Enables comprehensive management of Obsidian vaults with full CRUD operations, advanced search, link/tag extraction, backlinks discovery, frontmatter editing, and template-based note creation through natural language.
README
Obsidian Tools MCP Server
An extended MCP (Model Context Protocol) server for Obsidian with full CRUD operations and advanced note management capabilities.
Features
Core Operations
- create_note - Create new notes with nested folder support
- delete_note - Delete notes from your vault
- update_note - Replace entire note content
- append_to_note - Append content to end of notes
- prepend_to_note - Prepend content (respects frontmatter)
- rename_note - Move/rename notes
Search & Discovery
- read_note - Read single note content
- search_notes - Search by filename (supports regex)
- search_content - Full-text search in note contents
- list_folder - List notes and subfolders
Links & Tags
- get_tags - Extract all tags from a note
- get_links - Get all wikilinks and markdown links
- get_backlinks - Find notes linking to a specific note
Advanced Operations
- insert_at_heading - Insert content under a specific heading
- update_frontmatter - Modify YAML frontmatter properties
- create_from_template - Create notes from templates with variable substitution
Installation
Prerequisites
- Node.js 18+
- An Obsidian vault
Setup
# Clone the repository
git clone https://github.com/yourusername/obsidian-tools-mcp.git
cd obsidian-tools-mcp
# Install dependencies
npm install
# Build the project
npm run build
Configuration
For VS Code / GitHub Copilot
Add to your VS Code settings (settings.json):
{
"mcp": {
"servers": {
"obsidian-tools": {
"command": "node",
"args": ["/path/to/obsidian-tools-mcp/dist/index.js"],
"env": {
"OBSIDIAN_VAULT_PATH": "/path/to/your/obsidian/vault"
}
}
}
}
}
For Claude Desktop
Add to your Claude config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"obsidian-tools": {
"command": "node",
"args": ["/path/to/obsidian-tools-mcp/dist/index.js"],
"env": {
"OBSIDIAN_VAULT_PATH": "/path/to/your/obsidian/vault"
}
}
}
}
Environment Variables
| Variable | Description | Required |
|---|---|---|
OBSIDIAN_VAULT_PATH |
Absolute path to your Obsidian vault | Yes |
You can also pass the vault path as a command-line argument:
node dist/index.js /path/to/your/vault
Usage Examples
Create a New Note
Create a note at "Projects/My Project.md" with content about project planning
Search and Update
Find all notes containing "TODO" and append a completion timestamp
Template-Based Creation
Create a new meeting note from the template at "Templates/Meeting.md"
with title "Q4 Planning Session"
Frontmatter Management
Update the frontmatter of "My Note.md" to add tags: ["project", "important"]
Tool Reference
create_note
Create a new note in the vault.
| Parameter | Type | Required | Description |
|---|---|---|---|
| path | string | Yes | Path relative to vault root |
| content | string | Yes | Markdown content |
| overwrite | boolean | No | Overwrite if exists (default: false) |
delete_note
Delete a note from the vault.
| Parameter | Type | Required | Description |
|---|---|---|---|
| path | string | Yes | Path to the note |
update_note
Replace the entire content of a note.
| Parameter | Type | Required | Description |
|---|---|---|---|
| path | string | Yes | Path to the note |
| content | string | Yes | New content |
append_to_note
Append content to the end of a note.
| Parameter | Type | Required | Description |
|---|---|---|---|
| path | string | Yes | Path to the note |
| content | string | Yes | Content to append |
| separator | string | No | Separator before content (default: "\n\n") |
prepend_to_note
Prepend content to a note (after frontmatter if present).
| Parameter | Type | Required | Description |
|---|---|---|---|
| path | string | Yes | Path to the note |
| content | string | Yes | Content to prepend |
| separator | string | No | Separator after content (default: "\n\n") |
rename_note
Move or rename a note.
| Parameter | Type | Required | Description |
|---|---|---|---|
| oldPath | string | Yes | Current path |
| newPath | string | Yes | New path |
search_notes
Search notes by filename pattern.
| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | Yes | Search pattern (regex supported) |
| limit | number | No | Max results (default: 20) |
search_content
Search for text within note contents.
| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | Yes | Text to search for |
| caseSensitive | boolean | No | Case sensitivity (default: false) |
| limit | number | No | Max results (default: 20) |
get_tags
Get all tags from a note.
| Parameter | Type | Required | Description |
|---|---|---|---|
| path | string | Yes | Path to the note |
get_links
Get all internal links from a note.
| Parameter | Type | Required | Description |
|---|---|---|---|
| path | string | Yes | Path to the note |
get_backlinks
Find all notes linking to a specific note.
| Parameter | Type | Required | Description |
|---|---|---|---|
| path | string | Yes | Path to the note |
insert_at_heading
Insert content under a specific heading.
| Parameter | Type | Required | Description |
|---|---|---|---|
| path | string | Yes | Path to the note |
| heading | string | Yes | Heading text to find |
| content | string | Yes | Content to insert |
| position | "start" | "end" | No | Where to insert (default: "end") |
update_frontmatter
Update YAML frontmatter properties.
| Parameter | Type | Required | Description |
|---|---|---|---|
| path | string | Yes | Path to the note |
| properties | object | Yes | Key-value pairs (use null to delete) |
create_from_template
Create a note from a template.
| Parameter | Type | Required | Description |
|---|---|---|---|
| templatePath | string | Yes | Path to template note |
| newPath | string | Yes | Path for new note |
| variables | object | No | Template variable substitutions |
Built-in template variables:
{{date}}- Current date (YYYY-MM-DD){{time}}- Current time (HH:MM:SS){{datetime}}- ISO datetime
Development
# Watch mode for development
npm run dev
# Build
npm run build
# Run directly
npm start
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
E2B
Using MCP to run code via e2b.