NodePress è un CMS in stile WordPress scritto in TypeScript: pagine rese dal server, editor a blocchi, contenuti multilingua e temi che si modificano dal vivo — più un server MCP integrato, così Claude e gli altri assistenti gestiscono tutto il sito in linguaggio naturale.
~ claude mcp add --transport http nodepress https://mikedag.dev/mcp ✓ Autenticato via OAuth · accesso: admin > Aggiungi una pagina NodePress sotto /apps, in italiano e inglese → content_create · theme_write_files · theme_preview ✓ Fatto — la stai leggendo. ~
Editor Tiptap con immagini, gallerie, embed e sezioni del tema. Ogni pagina esiste per lingua, con slug tradotti, campi SEO e redirect 301 automatici quando un percorso cambia.
50 strumenti per contenuti, media, menu, redirect, lingue, utenti e temi. Si collega a claude.ai, Claude Desktop, Claude Code o Cursor con OAuth 2.1 o una API key.
I temi si creano e si modificano a runtime, senza ricompilare. Ogni salvataggio produce una build bozza; pubblicando, le build restano nello storico per il rollback.
Template composti da sezioni con il trascinamento, token di design, valori per breakpoint e visibilità, anteprima da mobile a desktop.
Il markup dei temi diventa un AST JSON: il server non esegue mai il codice del tema. CSP con nonce a ogni richiesta, cookie Strict e origine separata per il pannello.
I template sono file .np: HTML, espressioni, && e .map(). Vengono compilati in un AST che React interpreta, quindi un errore è un errore con file, riga e colonna — non una falla di sicurezza.
theme.json nome, template, token di design templates/*.np template scritti a mano templates/*.json template composti da sezioni sections/*.np schema, markup, stile con scope groups/*.json header e footer condivisi components/*.np componenti riusabili styles/*.css CSS con nesting o Tailwind scripts/main.js JS del browser, con esbuild assets/* font e immagini con hash
Basta l'indirizzo /mcp: l'assistente apre il pannello, accedi e scegli cosa autorizzare. Da lì scrive pagine in Markdown, carica immagini, sistema i menu e modifica i temi in bozza, con l'anteprima prima di pubblicare.
content_create · content_save_translation · content_seo_analysismedia_upload · media_update · media_foldersmenu_save · redirect_create · language_add · settings_updatetheme_write_files · theme_preview · theme_publishsite_info · guidePKCE obbligatorio, access token di un'ora legati a /mcp, refresh token ruotati a ogni uso e solo hash nel database. I tool distruttivi sono marcati, così il client chiede conferma.
# Node.js 22.22+ · MySQL 8 o MariaDB 10.6+ ~ npm install ~ cp .env.example .env # DATABASE_URL, SESSION_SECRET ~ npm run dev → http://localhost:5173/admin/setup # crea admin, sito e lingua # In produzione, anche con Docker ~ docker build -t nodepress . ~ docker run -p 3000:3000 --env-file .env -v nodepress-media:/app/storage nodepress
Il codice è su GitHub, roadmap compresa. Idee, issue e pull request sono benvenute.