Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
A blog CMS that AI agents write into over MCP: Markdown drafts, versions, media, human approval.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Funciona en Claude para web, escritorio y móvil:
https://app.vibecms.dev/mcpEjecuta esto en tu terminal
claude mcp add --transport http vibecms https://app.vibecms.dev/mcpPégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"vibecms": {
"url": "https://app.vibecms.dev/mcp"
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"vibecms": {
"type": "http",
"url": "https://app.vibecms.dev/mcp"
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
ChatGPT solo se conecta a servidores en internet:
https://app.vibecms.dev/mcpLos nombres de los menús pueden variar un poco según el plan y con el tiempo.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Todavía no hemos leído la lista de herramientas de este servidor; revisamos los endpoints por turnos.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 6 nov 2026
El nombre en el registro se verificó con el dominio vibecms.dev (el registro comprueba quién es dueño del dominio)
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Aún sin revisar; revisamos los endpoints por turnos
Aún sin revisar; revisamos los endpoints por turnos
Aún sin revisar; leemos la lista de herramientas cuando revisamos el endpoint
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Se ejecuta en la nube del creador. Te conectas por internet sin instalar nada, pero lo que envías pasa por los servidores del creador.
El repo de GitHub cambió por última vez –, y la última versión (0.2.0) llegó al registro hace 4 días.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. Se conecta por URL, así que también funcionan las apps que aceptan servidores MCP remotos, como ChatGPT en modo desarrollador.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, Symantec Cloud DLP AIops
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Governed Symantec Cloud DLP — 14 MCP tools, read-only with audit.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
CMS for AI Agents.
The CMS your agents publish into: Markdown posts, versions, and media over scoped MCP or the REST /api/v1 API - you own every post. Every mutation creates activity, and meaningful post changes create versions.
vc_live_ prefixesSELF_HOSTED=true mode without Polarvibecms exposes standards-based MCP over Streamable HTTP. Hosted vibecms uses https://app.vibecms.dev; self-hosters use their own API host.
Sign-in is required before MCP discovery or tool use: initialize, tools/list, server/discover, and legacy notifications/initialized all require authentication. OAuth clients such as Claude web, desktop and Code offer Connect or Sign in up front. Requests without a bearer receive HTTP 401 with an OAuth resource-metadata challenge; existing API-key users continue sending their bearer key as before. OAuth metadata, trusted CIMD/public-client registration, the static server card and HTTP agent skill files remain public.
Connect Claude Code with the URL, then open /mcp to sign in and approve access:
claude mcp add --transport http vibecms https://app.vibecms.dev/mcp
For a client using an agent key instead, open Connect in the dashboard, create a scoped token, and copy it once. Send it as a bearer credential:
{
"mcpServers": { "vibecms": { "type": "http", "url": "https://app.vibecms.dev/mcp", "headers": { "Authorization": "Bearer vc_..." } } } }
Install the client-independent safety, writing and SEO skills (every skill in skills/):
npx skills add https://vibecms.dev --skill '*'
Run npx skills update to stay current. Alternatively, use npx vibecms-cli skills get to save every skill to .agents/skills (pass skill names to select a subset, --dir to choose the folder, or --force to overwrite existing files), or let a connected agent call the skills.list and skills.get MCP tools.
Claude Code users on the hosted service can install every skill and the MCP server as one plugin. The plugin connects using the server URL; open /mcp to sign in and approve access through OAuth:
claude plugin marketplace add moinulmoin/vibecms
claude plugin install vibecms@vibecms
Directory listing copy and submission notes live in docs/directory-listings.md.
Verify that the credential can read your site with a protected tool call (tools/list now also requires authentication, but only lists tools allowed by its scopes):
curl https://app.vibecms.dev/mcp \
-H "Content-Type: application/json" \ -H "Authorization: Bearer vc_..." \ --data '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"sites.get","arguments":{}}}'
A valid token returns the current site in structuredContent; an invalid or missing token returns 401. The approval-first publishing flow is:
sites.get -> posts.format_guide -> draft -> posts.preview
-> latest saved version -> explicit approval -> posts.publish(postId, expectedVersionNumber) -> returned URL
Fix error and warn SEO findings before asking for publication approval. posts.preview includes deterministic seo findings. For a saved post, use posts.seo_check({postId, focusKeyword?}) or GET /api/v1/posts/{postId}/seo?focusKeyword=deployment. The 31 rules are plain code and run on every plan: 26 for search engines (metadata, headings, links, content, duplicates, indexing, focus keyword) and 5 for AI answers (a short opening paragraph before the first heading, numbers with a source link, sections short enough to quote, steps as lists). vibecms runs no AI model on your posts; your agent answers the judgment questions in the vibecms-seo skill with its own model.
The REST /api/v1 API mirrors the MCP tools with full read/write parity. Post lists return summaries without full Markdown, so fetch a single post body through REST or MCP posts.get:
curl "https://app.vibecms.dev/api/v1/posts?limit=20&offset=0" \
-H "Authorization: Bearer vc_..."
Hosted vibecms Cloud counts MCP and REST against the same workspace API quota. Rate-limit failures are machine-readable: REST returns 429 with RATE_LIMIT, and MCP returns a JSON-RPC rate-limit error.
vibecms is licensed under AGPL-3.0-or-later. See LICENSE.
The vibecms name and marks are covered by the trademark guidelines in TRADEMARKS.md.
pnpm install
pnpm typecheck pnpm lint pnpm test pnpm build pnpm public:audit pnpm db:migrate:local pnpm db:seed:local pnpm dev
Database migration SQL lives in packages/db/drizzle/ and is shared by both Workers. Local API development, Astro rendering, migrations, and seed commands share the root .wrangler/state directory so both Workers see the same D1 and R2 data.
See plans/README.md for the decision-record index.
vibecms now has a real self-host switch:
SELF_HOSTED=true
In self-host mode, Polar is optional, billing gates are disabled, and hosted workspace API quotas are not enforced by default. After signup and blog setup, the owner lands on /dashboard; publishing, media uploads, scoped agent access, activity history, and post versions run on the self-hoster's Cloudflare D1/R2 resources.
The repository deploys the same three-Worker topology in hosted and self-hosted modes:
apps/api/wrangler.jsonc, apps/public/wrangler.jsonc, and apps/og/wrangler.jsonc configure hosted development/production.wrangler.jsonc configures the self-hosted Hono API + dashboard Worker.wrangler.public.jsonc configures the self-hosted Astro public-blog Worker.wrangler.og.jsonc configures the optional self-hosted OG Worker.pnpm deploy builds all configured Workers, applies D1 migrations, then deploys API → OG → public (OG first so public's service bindings resolve).During deploy, configure the root Wrangler files (wrangler.jsonc, wrangler.public.jsonc, and wrangler.og.jsonc unless you omit OG per docs/self-hosting.md). Public blogs are host-only (tenant identity is the host), so the API/dashboard and public blog use separate Worker hosts:
APP_URL=https://vibecms.<your-subdomain>.workers.dev
BETTER_AUTH_URL=https://vibecms. .workers.dev PUBLIC_BLOG_DOMAIN=vibecms-public. .workers.dev SELF_HOSTED=true
The public blog serves at /, / , and /tag/ on PUBLIC_BLOG_DOMAIN; removed /blog/ /* path mode is not supported.
The only required self-host secrets are listed in .dev.vars.example:
BETTER_AUTH_SECRET=<generate with openssl rand -hex 32>
TOKEN_PEPPER=
Minimal local/self-host env shape (local URLs are not public hosted URLs):
APP_URL=https://vibecms.example.workers.dev
BETTER_AUTH_URL=https://vibecms.example.workers.dev PUBLIC_BLOG_DOMAIN=vibecms-public.example.workers.dev SELF_HOSTED=true BETTER_AUTH_SECRET= TOKEN_PEPPER=
See docs/self-hosting.md for the Cloudflare self-host flow and deploy-button notes.
apps/api/wrangler.jsonc and apps/public/wrangler.jsonc before production deploy.BETTER_AUTH_SECRET, TOKEN_PEPPER, POLAR_ACCESS_TOKEN, and POLAR_WEBHOOK_SECRET; AUTOSEOPILOT_INTERNAL_SECRET is optional and only enables the managed AutoSEOPilot routes.gh workflow run deploy-production.yml --ref main -f release_sha= -f smoke_mode=authenticated, which runs pnpm deploy:prod: preflights and builds production artifacts, captures backup metadata, migrates D1, deploys OG → public → API, then smokes. Astro sessions are disabled (no SESSION KV).For self-hosted production, set SELF_HOSTED=true and only BETTER_AUTH_SECRET plus TOKEN_PEPPER are required as secrets; Polar access token/product/webhook secrets are hosted-SaaS only.
Current Cloudflare development resources are wired in apps/api/wrangler.jsonc and apps/public/wrangler.jsonc:
vibecms-api-dev at https://app.basedui.devvibecms-public-dev at https://basedui.dev and *.basedui.devvibecms_devvibecms-assetsRun the full dev deploy/test flow:
pnpm install
pnpm typecheck pnpm lint pnpm db:seed:dev pnpm deploy:dev
pnpm deploy:dev syncs the development token pepper, applies remote D1 migrations, builds the dashboard assets, deploys the Hono API Worker, deploys the OG Worker, then builds and deploys the Astro public Worker.
For Polar billing, create a sandbox product in Polar and update the dev vars. The committed dev vars already carry sandbox product and launch-discount ids; if you use your own Polar sandbox products, set all four — POLAR_MONTHLY_PRODUCT_ID, POLAR_YEARLY_PRODUCT_ID, POLAR_LAUNCH_DISCOUNT_MONTHLY_ID, and POLAR_LAUNCH_DISCOUNT_YEARLY_ID — in apps/api/wrangler.jsonc under env.development.vars. Checkout selects the configured discounts automatically, so create matching forever-duration discounts that produce $9/month and $75/year, or remove the two discount vars to test list-price checkout:
pnpm --filter @vc/api exec wrangler secret put POLAR_ACCESS_TOKEN
pnpm --filter @vc/api exec wrangler secret put POLAR_WEBHOOK_SECRET pnpm deploy:dev
Recommended sandbox product setup:
POLAR_MONTHLY_PRODUCT_ID. If yearly is a separate Polar product, set it as POLAR_YEARLY_PRODUCT_ID. Set both launch discount ids too, or checkout sends the committed sandbox discounts.SELF_HOSTED=true bypasses billing gates entirely and never shows the link.Recommended minimum Polar organization access token scopes:
checkouts:write for creating checkout sessions.customer_sessions:write for creating customer portal sessions.You do not need product, order, refund, file, meter, webhook, or subscription write scopes for the current app runtime. Webhooks are verified with POLAR_WEBHOOK_SECRET, not the API token.
In Polar, set the webhook endpoint to:
https://app.vibecms.dev/api/polar/webhook
Subscribe to these webhook events:
subscription.created, subscription.updated, subscription.active, subscription.past_due, subscription.canceled, subscription.revoked.checkout.updated.Solo se muestra el principio; lee el resto en el repo