Queries Markdown files by front matter metadata, enabling filtering and retrieval of notes based on tags, dates, and folders in Markdown-based knowledge bases.
Queries notes in Obsidian vaults by front matter metadata, allowing filtering by tags, creation/update dates, and folders to retrieve recent thinking and notes.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Markdown Frontmatter MCPshow me recent notes about ai-systems from the last week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-mcpFrom 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/vaultMCP 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:
createdordate: 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
Walks the specified folders in your knowledge base
Parses YAML front matter from each
.mdfileFilters by:
Date:
createdorupdatedwithin thedayswindowTags: matches ANY of the specified tags
Returns results sorted by most recently touched
Skipped Directories
The server automatically skips:
.obsidian.git.smart-env.versiondbnode_modulesAny 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.pyThen 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
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.