Skip to main content
Glama
ostanlabs

Obsidian Project Management MCP Server

by ostanlabs

Obsidian Project Management MCP Server

npm version License: MIT

Current Version: v0.2.21

An MCP (Model Context Protocol) server for AI-native project management in Obsidian. Enables AI assistants to create, update, search, and manage project entities stored as markdown files with automatic relationship tracking.

What This Does

This MCP server lets AI assistants:

  • Manage project entities — create, update, and track milestones, stories, tasks, decisions, documents, and features

  • Handle dependencies — define relationships between entities with automatic bidirectional sync

  • Track progress — see project status, workstream health, and feature coverage

  • Navigate hierarchies — traverse parent-child relationships and dependency graphs

  • Batch operations — efficient bulk create/update/archive with dry-run preview

┌─────────────────────────────────────────────────────────────────────┐
│                        Your Workflow                                │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│   ┌──────────┐      ┌──────────────┐      ┌──────────┐              │
│   │ Obsidian │◄────►│  MCP Server  │◄────►│    AI    │              │
│   │  Vault   │      │  (this repo) │      │ Assistant│              │
│   └──────────┘      └──────────────┘      └──────────┘              │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Installation

Prerequisites

  • Node.js 18 or later

  • An Obsidian vault

Configure Your AI Assistant

Add the MCP server to your AI client's configuration. No separate installation needed - npx handles it automatically.

Latest Version: v0.2.21

For Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "obsidian": {
      "command": "npx",
      "args": ["-y", "@ostanlabs/obsidian-mcp"],
      "env": {
        "VAULT_PATH": "/absolute/path/to/your/obsidian/vault",
        "DEFAULT_CANVAS": "projects/main.canvas"
      }
    }
  }
}

With Semantic Search (optional):

To enable hybrid vector + keyword search, add the --semantic-search flag:

{
  "mcpServers": {
    "obsidian": {
      "command": "npx",
      "args": ["-y", "@ostanlabs/obsidian-mcp", "--semantic-search"],
      "env": {
        "VAULT_PATH": "/absolute/path/to/your/obsidian/vault",
        "DEFAULT_CANVAS": "projects/main.canvas"
      }
    }
  }
}

Note: Semantic search requires downloading the BGE-M3 ONNX model (~2.3 GB) on first use. The model is stored at ~/.msrl/models/bge-m3 and only needs to be downloaded once.

Variable

Required

Description

VAULT_PATH

Yes

Absolute path to your Obsidian vault

DEFAULT_CANVAS

No

Path to your main project canvas file (relative to vault)

Flag

Description

--semantic-search

Enable hybrid vector + keyword search. Downloads model on first use (~2.3 GB).

--version, -v

Print version and exit

Vault Structure

The server will create entities in these folders (create them if they don't exist):

your-vault/
├── milestones/               # M-xxx.md
├── stories/                  # S-xxx.md
├── tasks/                    # T-xxx.md
├── decisions/                # DEC-xxx.md
├── documents/                # DOC-xxx.md
├── features/                 # F-xxx.md
└── archive/                  # Archived entities

Configure Workspaces

Workspaces define document collections that the AI can access. You can configure them in two ways:

Option 1: Ask the AI (recommended)

"Add a workspace called 'docs' pointing to /path/to/my/docs folder" "Add a notes workspace for my meeting notes at /path/to/notes"

Option 2: Edit manually

On first run, the server creates a workspaces.json file in your vault:

{
  "docs": {
    "path": "/absolute/path/to/your/vault/docs",
    "description": "Project documentation and reference materials"
  }
}

Core Concepts

Entity Hierarchy

The system uses a hierarchical entity model:

Milestone (M-xxx)
└── Story (S-xxx)
    └── Task (T-xxx)

Feature (F-xxx)     ─── product features with coverage tracking
Decision (DEC-xxx)  ─── captured choices, can affect other entities
Document (DOC-xxx)  ─── specs/ADRs, can be implemented by stories

Entity Types

Type

ID Format

Key Fields

Milestone

M-001

target_date, owner, priority

Story

S-001

parent (milestone), priority, acceptance_criteria

Task

T-001

parent (story), estimate_hrs, assignee

Decision

DEC-001

decided_by, decided_on, affects, supersedes

Document

DOC-001

doc_type, version, implemented_by

Feature

F-001

tier, phase, documented_by, implemented_by

Entity Status

Entity

Statuses

Milestone, Story

Not Started, In Progress, Completed, Blocked

Task

Open, InProgress, Complete, OnHold

Decision

Pending, Decided, Superseded

Document

Draft, Review, Approved, Superseded

Feature

Planned, In Progress, Complete, Deferred

Relationships (Auto-Synced)

All relationships are bidirectional and automatically synchronized:

Relationship

Forward Field

Reverse Field

Hierarchy

parent

children

Dependency

depends_on

blocks

Implementation

implements

implemented_by

Supersession

supersedes

superseded_by

Documentation

documents

documented_by

Workstreams

Entities are organized by workstream. Values are automatically normalized:

  • infrastructure, infrainfra

  • eng, engineeringengineering

  • biz, businessbusiness

  • ops, operationsoperations

  • r&d, rnd, researchresearch

  • ux, ui, designdesign

  • mktg, marketingmarketing

Search your entire vault using hybrid vector + keyword search.

Requires: Start the server with --semantic-search flag to enable.

Features:

  • Hybrid search - Combines vector embeddings with keyword matching

  • Auto-download - BGE-M3 model (~2.3 GB) downloaded automatically on first use

  • Fast indexing - Automatic index updates on document changes

  • Relevance ranking - Results ranked by semantic similarity

Model Storage: The ONNX model is stored at ~/.msrl/models/bge-m3 and shared across all vaults.

Tools (only available with --semantic-search):

  • search_docs - Semantic search across workspace documents

  • msrl_status - Check semantic search index status

  • search_entities with semantic: true - Hybrid search for entities

Example queries:

"Search for all documents about authentication" "Find references to database design decisions" "Show me documentation about API endpoints"

See Semantic Search Guide for setup and advanced usage.

Archive Structure

Archived entities are organized in a flat structure by type:

archive/
├── milestones/
├── stories/
├── tasks/
├── decisions/
├── documents/
└── features/

Entities with status: archived are automatically moved to the appropriate folder and excluded from canvas and searches.

See Archive Structure Guide for workflows.


Migration Notes

Recent Schema Changes

Decision Relationships:

  • ✅ Use affects field (new)

  • blocks field is deprecated

Story Workstreams:

  • ✅ Use workstream field (new)

  • effort field is deprecated (auto-migrated)

CSS Classes:

  • ✅ Use canvas-workstream-* pattern (new)

  • canvas-effort-* pattern is deprecated

See Entity Schemas for complete schema documentation.


Available Tools

The MCP server provides 27 tools organized by function:

Entity Management

Tool

Description

create_entity

Create a new entity (milestone, story, task, decision, document, or feature)

update_entity

Update fields, status, relationships, or archive/restore. Returns before/after diff.

Batch Operations

Tool

Description

batch_update

Bulk create/update/archive with dry_run preview and include_entities option

bulk_create_entities

Create multiple entities in one operation with relationship setup

bulk_archive_entities

Archive multiple entities with cascade option for children

bulk_restore_entities

Restore multiple entities from archive with relationship preservation

Project Understanding

Tool

Description

get_project_overview

High-level project status with workstream filtering

analyze_project_state

Deep analysis with blockers and recommendations

get_feature_coverage

Feature implementation/test/documentation coverage with summary_only option

get_dependency_analysis

Analyze dependency graphs, detect cycles, and identify critical paths

get_project_metrics

Project-wide metrics and statistics (velocity, completion rates, etc.)

Search & Navigation

Tool

Description

search_entities

Full-text search, list with filters, or navigate hierarchy

get_entity

Get single entity with selective field retrieval

get_entities

Bulk fetch multiple entities (~75% token savings)

search_docs

Semantic search across workspace documents using MSRL hybrid search

msrl_status

Check MSRL semantic search index status

Document Management

Tool

Description

manage_documents

Decision history, versioning, freshness checks

Canvas Operations

Tool

Description

populate_canvas

Populate canvas from vault entities with layout options

refresh_canvas

Refresh canvas layout and styling

Maintenance

Tool

Description

reconcile_relationships

Fix inconsistent bidirectional relationships

get_schema

Get entity schema information

Workspace Management

Tool

Description

list_workspaces

List all configured workspaces

manage_workspaces

Add, update, or remove workspaces from configuration

list_files

List all markdown files in a workspace

read_docs

Read a document from a workspace

update_doc

Create, update, or delete documents in a workspace

Utility Tools

Tool

Description

validate_entity

Validate entity data against schema with detailed error messages

export_project_data

Export project data in various formats (JSON, CSV, Markdown)


Usage Examples

Once configured, ask your AI assistant things like:

Project Overview

"What's the status of my project?" "Show me the engineering workstream status" "What items are blocked?" "Analyze the project and identify risks"

Managing Entities

"Create a milestone for Q1 launch with target date March 31" "Create a story under M-001 for user authentication" "Add a task to S-003 for writing unit tests" "Mark T-005 as completed"

Dependencies

"S-004 depends on S-002 and S-003" "What's blocking S-006?" "Show me the dependency graph for M-001"

Decisions & Documents

"Create a decision about using PostgreSQL vs MongoDB" "What decisions have been made about authentication?" "Create a spec document for the API design" "Is DOC-003 up to date with recent decisions?"

Features

"What's the feature coverage for Phase 2?" "Which features are missing documentation?" "Show me F-001's implementation status"

Documents

"What workspaces are available?" "List files in the docs workspace" "Read the architecture document"


Documentation

For comprehensive documentation, see the obsidian_docs repository:

Feature Guides


Development

# Install dependencies
npm install

# Build the project
npm run build

# Run tests
npm test

# Run tests in watch mode
npm run test:watch

# Type check
npm run typecheck

Project Structure

src/
├── index.ts              # MCP server entry point
├── models/
│   └── v2-types.ts       # Entity type definitions
├── services/v2/
│   ├── entity-parser.ts      # Parse markdown to entities
│   ├── entity-serializer.ts  # Serialize entities to markdown
│   ├── entity-validator.ts   # Validate entity data
│   ├── index-manager.ts      # Entity indexing
│   ├── lifecycle-manager.ts  # Status transitions
│   ├── archive-manager.ts    # Archive/restore
│   ├── workstream-normalizer.ts  # Workstream normalization
│   ├── cycle-detector.ts     # Dependency cycle detection
│   └── v2-runtime.ts         # Main runtime
└── tools/
    ├── index.ts              # Tool definitions
    ├── entity-management-tools.ts
    ├── batch-operations-tools.ts
    ├── project-understanding-tools.ts
    ├── search-navigation-tools.ts
    └── decision-document-tools.ts

License

MIT

-
license - not tested
-
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
1wRelease cycle
18Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ostanlabs/obsidian_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server