Innolope CMS is a markdown-native headless CMS with a built-in MCP server. Claude, Cursor, and AI agents create content directly — no format conversion, no middleware.
{
"mcpServers": {
"innolope": {
"command": "npx",
"args": ["@innolope/mcp-server"],
"env": {
"INNOLOPE_CMS_API_URL": "https://cms.example.com",
"INNOLOPE_CMS_API_KEY": "ink_..."
}
}
}
}The same heading and paragraph — stored in a typical CMS vs Innolope CMS. One is a JSON tree. The other is just text.
{
"root": {
"children": [
{
"type": "heading",
"tag": "h1",
"children": [
{
"type": "text",
"text": "Hello World"
}
]
},
{
"type": "paragraph",
"children": [
{
"type": "text",
"text": "Welcome."
}
]
}
],
"type": "root",
"version": 1
}
}# Hello World
Welcome.Write content yourself in a visual editor, or let AI agents generate it via MCP. Both paths produce the same portable markdown.
Open the visual editor — TipTap WYSIWYG with toolbar, image embeds, and code blocks
Write and format content visually. Manage media in the drag-and-drop library
Review versions, switch locales, hit publish. Content is stored as clean markdown
Generate an API key and add three lines to your Claude or Cursor config
Agent writes markdown directly via MCP — create, update, search, publish
Human reviews in the admin UI, edits if needed, approves. Same markdown, same workflow
Innolope CMS stores content as plain markdown in PostgreSQL. No Lexical JSON, no Portable Text, no proprietary AST. What you write is what gets stored. Import, export, edit anywhere.
Built-in Model Context Protocol server. Claude, Cursor, and any MCP-compatible agent connect in seconds.
Images, video (Stream), and files (R2) out of the box. Zero egress fees. Swap to S3 or local storage anytime.
Manage multiple websites from one instance. Per-project roles, API keys, and content isolation.
TipTap WYSIWYG that exports clean markdown. Humans edit visually, agents write markdown — same result.
Install the SDK, fetch your content. Three lines to go from CMS to rendered page.
import { InnolopeCMS } from '@innolope/sdk'
const cms = new InnolopeCMS({
baseUrl: 'https://cms.example.com',
apiKey: 'ink_...',
})
// Get published articles
const { data } = await cms.getPublished()
// Get by slug
const article = await cms.getContentBySlug(
'hello-world'
)# Create content via API
curl -X POST /api/v1/content \
-H "Authorization: Bearer ink_..." \
-H "X-Project-Id: your-project" \
-d '{
"slug": "hello-world",
"collectionId": "...",
"markdown": "# Hello\n\nWorld.",
"metadata": {
"title": "Hello World"
}
}'Connect any number of frontends: web, mobile, CLI tools, AI pipelines. Switch frameworks without touching the CMS. Innolope CMS is a standalone service, not embedded in your frontend app. The API, admin UI, and your frontend deploy and scale independently.
REST endpoints, auth, rate limiting, security headers. Runs anywhere Node.js runs.
React 19 + Vite SPA. Visual editor, media library, project management. Deploy as static files.
Next.js, Astro, Nuxt, Remix — anything. Consume via SDK, REST API, or MCP.
How Innolope CMS compares to popular headless CMS platforms.
| Innolope | Payload | Strapi | Sanity | Ghost | |
|---|---|---|---|---|---|
| Markdown storage | Native | Lexical JSON | Rich text JSON | Portable Text | Mobiledoc |
| MCP server | Built-in | No | No | Partial | No |
| Framework requirement | None | Next.js | None | None | None |
| Multi-project | Free | Free | Paid | Per-project | No |
| Self-hosted | Yes | Yes | Yes | Cloud only | Yes |
| Media pipeline | CF included | Plugins | Plugins | Built-in | Basic |
| Open source | MIT | MIT | MIT | No | MIT |
Innolope CMS is MIT licensed. No vendor lock-in. No per-seat pricing. No usage limits. Deploy on your own servers, inspect every line of code, contribute back.
View Source on GitHubLicense
Packages
Vendor lock-in
TypeScript
Self-host for free. Use our cloud when you want managed infrastructure.
Install in five minutes. Connect Claude in three lines. Start publishing.
# Clone and start Innolope CMS
git clone https://github.com/innolope/innolope-cms
cd innolope-cms && pnpm install && pnpm dev