Markdown Frontmatter MCP

Markdown Frontmatter MCP

Enables querying Markdown files in knowledge bases (like Obsidian vaults) by front matter metadata, filtering notes by tags, recency, and folders to surface relevant content based on created/updated dates.

Category
Visit Server

README

markdown-frontmatter-mcp

A Model Context Protocol (MCP) server that queries Markdown files by front matter metadata. Designed for Obsidian vaults and other Markdown-based knowledge bases.

The Problem

You have a Markdown knowledge base (Obsidian, etc.) with front matter like:

---
created: 2025-12-09
updated: 2025-12-11
tags: [ai-systems, strategy]
---

You want to ask an AI: "What have I been thinking about [X] lately?"

Existing tools can search by keywords or do semantic search, but none let you query by front matter metadata — filtering by tags AND recency.

The Solution

This MCP server exposes one tool: query_recent_notes

query_recent_notes(
  tags: ["ai-systems"],     # Filter by these tags (matches ANY)
  days: 7,                  # How far back to look
  folders: ["thoughts"],    # Which folders to search
  limit: 10                 # Max results
)

Returns:

  • File path
  • Title (from H1 or filename)
  • Tags
  • Created/updated dates
  • Excerpt (first ~200 chars)

Installation

From PyPI (coming soon)

pip install markdown-frontmatter-mcp

From Source

git clone https://github.com/caffeinatedwes/markdown-frontmatter-mcp
cd markdown-frontmatter-mcp
pip install -e .

Configuration

Environment Variable

Set KB_PATH to point to your knowledge base:

export KB_PATH=/path/to/your/obsidian/vault

MCP Client Configuration

TypingMind

Add to your MCP config:

{
  "mcpServers": {
    "markdown-kb": {
      "command": "python3",
      "args": ["/path/to/markdown-frontmatter-mcp/src/server.py"],
      "env": {
        "KB_PATH": "/path/to/your/obsidian/vault"
      }
    }
  }
}

Claude Desktop

Add to ~/.config/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "markdown-kb": {
      "command": "python3",
      "args": ["/path/to/markdown-frontmatter-mcp/src/server.py"],
      "env": {
        "KB_PATH": "/path/to/your/obsidian/vault"
      }
    }
  }
}

Usage Examples

Once configured, you can ask the AI:

"Get my recent thinking on AI systems"

The AI will call:

query_recent_notes(tags=["ai-systems"], days=7)

"What personal growth stuff have I been working on?"

query_recent_notes(tags=["personal-growth", "therapy"], days=14)

"Catch me up on what's been on my mind"

query_recent_notes(days=3, limit=5)

Front Matter Requirements

For files to be queryable, they need YAML front matter with:

  • created or date: When the note was created (YYYY-MM-DD)
  • updated (optional): When last meaningfully edited (YYYY-MM-DD)
  • tags (optional): List of tags for filtering

Example:

---
created: 2025-12-09
updated: 2025-12-11
tags:
  - ai-systems
  - knowledge-management
---

# My Note Title

Content here...

How It Works

  1. Walks the specified folders in your knowledge base
  2. Parses YAML front matter from each .md file
  3. Filters by:
    • Date: created or updated within the days window
    • Tags: matches ANY of the specified tags
  4. Returns results sorted by most recently touched

Skipped Directories

The server automatically skips:

  • .obsidian
  • .git
  • .smart-env
  • .versiondb
  • node_modules
  • Any directory starting with .

Development

Testing Locally

# Set your KB path
export KB_PATH=~/your-obsidian-vault

# Run the server directly (for testing)
python3 src/server.py

Then send JSON-RPC messages via stdin:

{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}
{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"query_recent_notes","arguments":{"tags":["ai-systems"],"days":7}}}

License

MIT

Recommended Servers

playwright-mcp

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

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.

Official
Featured
Python
graphlit-mcp-server

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.

Official
Featured
TypeScript
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured