MCP Hub
Back to servers

mcp-obsidian-planner

An Obsidian planning server that integrates GTD and PARA methodologies to manage daily notes, tasks, and project workflows. It features 17 tools for organizing vaults, including inbox prioritization, weekly review generation, and full-text search capabilities.

Updated
Feb 7, 2026

mcp-obsidian-planner

Version License TypeScript NestJS MCP

Obsidian vault planning MCP server with GTD + PARA methodology.

17 tools for daily notes, inbox, tasks, projects, weekly reviews and full-text search.

Getting Started · Tools · Architecture · Configuration


What It Does

Connects Claude Code (or any MCP client) directly to your Obsidian vault for structured planning:

  • Daily notes — Create from templates, set Top 3 focus, track tasks
  • Inbox — Capture ideas, prioritize, process items into projects/areas
  • Tasks — List, add, toggle across any note or folder
  • Projects — Create with PARA areas, track status and deadlines
  • Weekly reviews — Auto-generate summaries with completion rates
  • Search — Full-text search across the vault with context

Works with the LifeOS vault structure using Templater templates and Dataview-compatible frontmatter.


Getting Started

Prerequisites

  • Node.js >= 18
  • An Obsidian vault with folder structure (see Vault Structure)

Installation

git clone https://github.com/jarero321/mcp-obsidian-planner.git
cd mcp-obsidian-planner
npm install
npm run build

Configure Claude Code

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "obsidian-planner": {
      "command": "node",
      "args": ["/path/to/mcp-obsidian-planner/dist/main.js"],
      "env": {
        "VAULT_PATH": "/path/to/your/obsidian/vault"
      }
    }
  }
}

Configure Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "obsidian-planner": {
      "command": "node",
      "args": ["/path/to/mcp-obsidian-planner/dist/main.js"],
      "env": {
        "VAULT_PATH": "/path/to/your/obsidian/vault"
      }
    }
  }
}

Verify

# Test with MCP Inspector
npm run inspect

# Or run directly
npm run start:stdio

Tools

Daily Notes (3)

ToolDescription
daily_createCreate a daily note from template. Returns existing note if already created.
daily_getGet a daily note with parsed sections (focus, tasks, log, gratitude, reflection).
daily_set_focusSet the Top 3 focus priorities for a daily note.

Inbox (4)

ToolDescription
inbox_listList all inbox items grouped by priority (Urgente, Puede esperar, Algún día, Captura Rápida, Notas Rápidas).
inbox_addAdd a new item to the inbox with timestamp.
inbox_processMove an inbox item to a project, daily note, area, archive, or delete it.
inbox_prioritizeChange the priority of an inbox item between sections.

Tasks (3)

ToolDescription
tasks_listList tasks from a specific note, folder, or the entire vault. Filter by status.
task_toggleToggle a task between pending [ ] and completed [x].
task_addAdd a new task to a note in a specific section.

Weekly Reviews (2)

ToolDescription
weekly_summaryGenerate weekly summary: completed/pending tasks, dailies filled, project progress.
weekly_createCreate a weekly review note from template.

Search & Notes (3)

ToolDescription
vault_searchFull-text search across the vault with context lines.
note_readRead a note from the vault by its relative path.
notes_listList all notes in a folder with optional pattern filter.

Projects (2)

ToolDescription
projects_listList projects with status, area, deadline. Filter by status or area.
project_createCreate a new project from template with area assignment.

Architecture

Clean Architecture with NestJS dependency injection:

src/
├── domain/                  # Entities, enums, value objects
│   ├── entities/            # Task, Note, DailyNote, Project, InboxItem, WeeklyReview
│   ├── enums/               # TaskStatus, ProjectStatus, InboxPriority, Area
│   └── value-objects/       # VaultPath (path traversal protection), DateRange
│
├── application/             # Business logic
│   ├── ports/               # Abstractions (VaultRepository, NoteParser, TemplateEngine, Logger)
│   └── use-cases/           # 17 use cases organized by domain
│       ├── daily/           # CreateDaily, GetDaily, SetDailyFocus
│       ├── inbox/           # ListInbox, AddInbox, ProcessInbox, PrioritizeInbox
│       ├── tasks/           # ListTasks, ToggleTask, AddTask
│       ├── weekly/          # WeeklySummary, CreateWeekly
│       ├── search/          # VaultSearch, ReadNote, ListNotes
│       └── projects/        # ListProjects, CreateProject
│
├── infrastructure/          # Concrete implementations
│   ├── vault/               # File system operations (fs/promises)
│   ├── parser/              # Markdown + frontmatter parsing (gray-matter)
│   ├── template/            # Templater syntax replacement (dayjs)
│   ├── logging/             # stderr JSON logger (stdout reserved for MCP)
│   └── mcp/                 # MCP server, handlers, presenter, tool definitions
│
└── config/                  # Vault configuration module

Ports & Adapters

PortSymbolImplementation
VaultRepositoryVAULT_REPOSITORYFsVaultRepository — File system operations with path traversal protection
NoteParserNOTE_PARSERMarkdownNoteParserService — gray-matter + regex parsing
TemplateEngineTEMPLATE_ENGINESimpleTemplateEngineService — Templater syntax with dayjs
LoggerPortLOGGER_PORTStderrLoggerService — JSON logs to stderr

Configuration

Environment Variables

VariableDescriptionDefault
VAULT_PATHAbsolute path to Obsidian vault(required)
DAILY_FOLDERDaily notes folder07-Daily
INBOX_FILEInbox markdown file01-Inbox/Inbox.md
PROJECTS_FOLDERProjects folder02-Proyectos
AREAS_FOLDERAreas (PARA) folder04-Areas
TEMPLATES_FOLDERTemplates folderTemplates
ARCHIVE_FOLDERArchive folder06-Archive

Copy .env.example to .env and adjust paths:

cp .env.example .env

Transport Modes

# stdio (default) — for Claude Code / Claude Desktop
node dist/main.js

# SSE — for web clients
node dist/main.js --sse
# Runs on PORT (default: 3000)

Vault Structure

Expected Obsidian vault layout:

Vault/
├── 00-Dashboard/          # Central hub with Dataview queries
├── 01-Inbox/
│   └── Inbox.md           # GTD inbox with priority sections
├── 02-Proyectos/          # Active projects with frontmatter
├── 04-Areas/              # PARA areas (Salud, Carrera, Finanzas, etc.)
├── 06-Archive/            # Archived items
├── 07-Daily/              # Daily notes (YYYY-MM-DD.md)
└── Templates/             # Templater templates
    ├── Daily Template.md
    ├── Weekly Review.md
    └── Proyecto Template.md

Inbox Format

## Captura Rápida
- [ ] Some task _2025-01-15 10:30_
- Some note _2025-01-15 11:00_

## Urgente (hacer esta semana)
- [ ] Important task _2025-01-15 09:00_

## Puede esperar
## Algún día / Quizás
## Notas Rápidas

Project Frontmatter

---
estado: En progreso
area: Carrera
inicio: 2025-01-01
deadline: 2025-03-01
objetivo: Build the thing
---

Tech Stack

Runtime          Node.js 18+
Framework        NestJS 11 (application context, no HTTP)
MCP SDK          @modelcontextprotocol/sdk 1.12
Parsing          gray-matter (YAML), regex (tasks, sections)
Dates            dayjs (Templater replacement)
Validation       Zod (tool input schemas)
Architecture     Clean Architecture, Ports & Adapters

Scripts

ScriptDescription
npm run buildCompile TypeScript
npm run start:stdioRun MCP server (stdio)
npm run start:sseRun MCP server (SSE)
npm run inspectOpen MCP Inspector
npm testRun tests
npm run test:covRun tests with coverage
npm run lintLint and fix

License

MIT

Reviews

No reviews yet

Sign in to write a review