← Back to Projects
API

PNS

A lightweight personal note-taking MCP server — create, read, update, delete, and full-text search notes stored as dated Markdown files with YAML frontmatter.

PythonMCPMarkdown

Overview

PNS (Personal Note-taking and Search) is a minimal MCP server exposing two tools over POST /invoke: notetool for CRUD operations on notes, and searchtool for full-text search with optional tag filtering. Notes are stored as plain Markdown files with YAML frontmatter using a YYYY-MM-DD-{slug}.md naming convention, making them readable and portable outside the app.

Key Features

  • notetool — create, read, update, delete, and list notes via a single action parameter
  • searchtool — full-text search across note content with optional tag filtering and result limit
  • File-based storage: dated Markdown files with YAML frontmatter (id, title, tags, timestamps)
  • Configurable notes directory, host, and port via .env
  • Zero database dependency — notes are plain files, git-versionable out of the box

Technical Decisions

Plain Markdown files were chosen over SQLite to keep notes human-readable and portable — they can be opened in any editor, synced with git, or imported into Obsidian without any export step. The YYYY-MM-DD-{slug}.md filename format gives chronological ordering for free from the filesystem.