Skip to main content
MDCMS is an open-source, headless CMS for teams managing structured Markdown and MDX content. Unlike file-based CMS tools that commit content directly to git, MDCMS treats a PostgreSQL database as the source of truth. Content files are synced between the database and your local filesystem via CLI commands (mdcms push / mdcms pull), keeping your repository clean and your content workflow independent of your deployment pipeline.

Why MDCMS

Schema-First

Content types defined in TypeScript with Zod. The schema drives form generation, validation, and API behavior automatically.

Visual Studio

Embeddable React component with a TipTap-based MDX editor, frontmatter editing, and full version history.

CLI-Powered Sync

mdcms push and mdcms pull sync between your local filesystem and the CMS. Designed for CI/CD pipelines.

Multi-Environment

Isolated content per environment with schema overlays. Clone and promote content between environments.

Localization

Built-in i18n with translation groups and per-type localization control.

Extensible

Module system for custom server actions, CLI commands, and Studio UI extensions.

Get Started

I want to use MDCMS

Install the packages, define your schema, and start managing content in your project.

I want to self-host MDCMS

Stand up your own MDCMS server with Docker Compose — database, storage, and API in one command.

I want to integrate the API

Explore the REST API, authentication, and the TypeScript SDK for querying content.

I want to contribute

Clone the monorepo, run the dev environment, and start contributing to MDCMS.

Quick Start

Install the CLI and SDK in your project:
Define your content types in mdcms.config.ts at the root of your project:
mdcms.config.ts
Then sync your schema and start editing: