MIT LicensedOpen Sourcev0.1-BETA

The AI
Content Engine.

The open-source CMS that's database-backed and Markdown-first. Import your existing project in minutes, edit in a collaborative Studio, and let AI agents work with your content at scale.

Works with
Next.jsReactAstroRemixGatsby
MDCMS-TERMINAL
[1/3] Fetching 12,402 records from Sanity... DONE[2/3] Mapping schemas to target structure... DONE[3/3] AI Agent resolving asset link inconsistencies...
↳ Scanning 4,500 .webp files↳ Auto-generating alt text for 1,200 images↳ Correcting 42 broken internal references
Migration ready. Run 'mdcms push' to finalize.

Core engine features

Switch CMS in weeks, not quarters.

Open-source migration tools for Contentful, Sanity, Strapi, and existing Markdown projects. Run cms init on your repo and MDCMS detects your schema, imports your content, and sets up Studio. Your frontend doesn't change.

Built for teams that include AI agents.

Not an AI button bolted onto a settings panel. AI is a first-class user across your content, config, and codebase.

Open source. MIT. Forever.

PostgreSQL and Markdown on infrastructure you control. No proprietary API between you and your own data. Fork it, extend it, shape the roadmap — the community drives what gets built next.

Three interfaces, one data layer.

Developers define schemas in code and sync via CLI. Editors get a collaborative visual Studio they never have to leave. AI agents process content at scale through the same API. Nobody waits for someone else.

Up and running in minutes

MIT LicensedOpen Sourcev0.1-BETA

AI-native across your entire stack

MDCMS is built from the ground up to support LLM agents as first-class citizens in your workflow.

01

Content

Pull your entire library locally via CLI. Run it through Claude, GPT, or any local model for translations, rewrites, audits, or restructuring.

TERMINAL
1$ mdcms push --validate
2
3Validating 3 document(s) against local schema...
4 ✓ blog/weekly-roundup.mdx
5 ✓ blog/product-update.mdx
6 ✓ blog/getting-started.mdx
7
8Validation passed.
9
10Push results:
11 [CREATED] blog/weekly-roundup.mdx (draft=1)
12 [CREATED] blog/product-update.mdx (draft=1)
13 [UPDATED] blog/getting-started.mdx (draft=4)
02

Config

Describe what you need in natural language and the agent updates your mdcms.config.ts directly. Schema changes, new content types, field modifications — through MCP or the CLI, validated against your existing configuration before anything syncs.

MDCMS.CONFIG.TS
1const caseStudy =
2 defineType("CaseStudy", {
3 fields: {
4 title: z.string().min(1),
5 company: z.string(),
6 industry: z.string().optional(),
7 body: mdx(),
8 logo: z.string().url().optional(),
9 featured: z.boolean().default(false),
10 },
11 });
03

Codebase

The module system exposes type-safe contracts that AI agents can read, implement against, and extend. Build integrations, create custom endpoints, add new capabilities — all through AI-assisted development. The architecture is documented in .ai/ so agents have the context they need from the first prompt.

PROJECT
1mdcms/
2├── AGENTS.md
3├── CLAUDE.md
4└── docs/
5 ├── specs/
6 └── adrs/

Everything you need.
Nothing you don't.

Localization

Multi-locale content with automatic fallback chains and translation workflows.

Live MDX Preview

See MDX components render in real-time as you write content.

Permission Groups

Role-based access control for editors, reviewers, and AI agents.

MCP Integration

Model Context Protocol server for AI agent content operations.

Version History

Full content revision history with diff view and one-click rollback.

Environments

Draft, staging, and production content environments with promotion flows.

Code-First Schema

Define content types in TypeScript with automatic database migrations.

SSO and Auth

Enterprise single sign-on with SAML, OIDC, and team management.

Built in the open.
Join us.

Top Contributors
Jakub Jabłoński
Jakub JabłońskiLead Maintainer
Karol Chudzik
Karol ChudzikSolution Architect
Wojciech Wrotek
Wojciech WrotekCore Dev

Contribute on GitHub

Browse open issues, submit PRs, shape the roadmap.

View repository

Join the Discord

Ask questions, share what you're building, meet the team.

Join the community

Three decisions.
Everything else follows.

01

Your content model lives in the repo.

Types, fields, and validation are defined in mdcms.config.ts and checked into git. Structure changes go through pull requests - no drift between what your code expects and what the CMS delivers.

$ mdcms schema sync

Schema synced (hash: 8f3c1b7a2d41)
Affected types: BlogPost, Author, Page
02

AI agents work the same way your team does.

No special integration needed. The config is a file agents can edit. The CLI is commands agents can run. The API is the same for every caller. An agent that creates a blog post gets the same validation, the same permissions, and the same audit trail as a developer.

$ mdcms push --validate

Validating against schema 8f3c1b7...

  blog/weekly-roundup.mdx   ✓ valid (new)
  blog/hello-world.mdx      ✓ valid (body updated)

2 documents · pushed to marketing / production
03

The Studio lives inside your app.

The Studio is just a React component running inside your app. It has access to your code, your design system, and your custom components. When an editor drops a component into a page, they see the real thing - not a placeholder.

// app/admin/[[...path]]/page.tsx
import { Studio } from '@mdcms/studio'
import { PricingTable, Chart, Callout } from '@/components'

export default function AdminPage() {
  return <Studio components={{ PricingTable, Chart, Callout }} />
}

Your content deserves better infrastructure.

Start building the sovereign future of your enterprise content today.

$ npx mdcms init