framework360-mcp-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@framework360-mcp-serverlist all customers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
framework360-mcp-server
Server MCP e CLI per l'API REST di Framework360 (CRM/CMS). Espone i 141 endpoint dell'API come tool/comandi pronti all'uso, sia dentro un client MCP (es. Claude Code) sia da riga di comando/script.
Progetto correlato: framework360-skill — una skill per Claude Code che documenta come usare la CLI di questo repo direttamente in una sessione di Claude Code.
Indice
Related MCP server: my-mcp-server
Cos'è
Framework360 espone un'API REST autenticata via header (X-Fw360-Key) per gestire clienti, utenti, ordini, chat, marketing, contenuti, report e i plugin del CMS (calendario, pipeline, ticket, membership, blog). Questo repo fornisce due modi equivalenti per usarla senza scrivere codice HTTP a mano:
Server MCP (
src/index.mjs) — implementa il Model Context Protocol su stdio. Ogni endpoint dell'API diventa un tool MCP, richiamabile da un client compatibile (es. Claude Code, Claude Desktop, o qualunque host MCP).CLI (
bin/cli.mjs) — stesso set di endpoint, richiamabili da terminale o da script di automazione, senza bisogno di un client MCP.
Entrambi condividono:
la stessa configurazione (
.env) — un'unica fonte di verità per API key e URL base;la stessa definizione degli endpoint (
endpoints.json) — 141 endpoint con metodo HTTP, path, titolo, descrizione e parametri attesi, ricavati dalla documentazione ufficiale dell'API.
Requisiti
Node.js 18 o superiore (usa il
fetchglobale, nessuna dipendenza HTTP esterna richiesta a runtime)Una API key Framework360 (header
X-Fw360-Key) e l'URL base del sito su cui è attivo il modulo API
Installazione
git clone https://github.com/VadaLinux/framework360-mcp-server.git
cd framework360-mcp-server
npm install
cp .env.example .envConfigurazione
Tutta la configurazione vive in un unico file .env nella root del progetto:
FRAMEWORK360_API_KEY=la-tua-api-key
FRAMEWORK360_BASE_URL=https://tuosito.example.comVariabile | Obbligatoria | Descrizione |
| sì | API key del sito, inviata nell'header |
| no (default | URL base del sito Framework360, senza slash finale |
.env è l'unica fonte di verità: sia il server MCP sia la CLI lo caricano da soli all'avvio (tramite dotenv), quindi non serve impostare le variabili altrove (né duplicarle nella config del client MCP). Per cambiare API key o dominio in futuro basta modificare questo file.
Uso come server MCP
Aggiungi il server alla configurazione MCP del tuo client (es. Claude Code), puntando a src/index.mjs con un percorso assoluto:
{
"mcpServers": {
"framework360": {
"type": "stdio",
"command": "node",
"args": ["/percorso/assoluto/framework360-mcp-server/src/index.mjs"]
}
}
}Non serve passare env nella configurazione: il server carica da solo .env dalla root del progetto al momento dell'avvio del processo.
Ogni endpoint dell'API viene esposto come tool MCP: il nome del tool corrisponde al path (es. /m/api/customers/get), e accetta un parametro args, una stringa JSON con i parametri della chiamata (es. {"id": 101}). Le richieste GET/DELETE passano i parametri come query string, le altre come body JSON.
Nota: se modifichi
.envmentre il server MCP è già connesso in una sessione, serve riavviare la connessione (o la sessione del client) perché il processo rilegga l'ambiente — viene letto una sola volta all'avvio.
Uso come CLI
node bin/cli.mjs <comando> [opzioni]In alternativa, dopo npm link, il comando è disponibile globalmente come framework360 (vedi il campo bin in package.json).
Comandi principali
Comando | Descrizione |
| Elenca gli endpoint disponibili, filtrabili per parola chiave su path, titolo o descrizione |
| Mostra metodo HTTP, path completo, descrizione e parametri attesi di un comando |
| Scorciatoia che invoca |
| Invoca un endpoint per path esatto, utile se non segue lo schema a due parole |
| Scorciatoia per |
| Mostra l'aiuto |
Opzioni per passare i parametri
Opzione | Descrizione |
| Un parametro (ripetibile). Il valore è interpretato come JSON se possibile ( |
| Payload JSON completo, ha priorità sui |
| Legge il payload da un file JSON, unito sotto |
| Mostra URL, metodo e body che verrebbero inviati senza eseguire la richiesta |
| Stampa il body della risposta così com'è, senza provare a formattarlo come JSON |
| Salva il body della risposta in un file invece di stamparlo |
| Usa un file |
Esempi
# verifica connessione
node bin/cli.mjs check
# scoprire i comandi disponibili
node bin/cli.mjs list customers
node bin/cli.mjs describe customers get
# lettura dati
node bin/cli.mjs customers get -p id=101
node bin/cli.mjs customers list -p query=Mario -p limit=15
# parametri array (stessa chiave ripetuta)
node bin/cli.mjs customers labels assign -p customer_ids=1 -p customer_ids=2 -p label_ids=5
# payload JSON complesso
node bin/cli.mjs report export -d '{"reportName":"sales_summary","format":"csv","dateFrom":"2023-01-01","dateTo":"2023-01-31"}'
# testare una chiamata prima di eseguirla davvero (consigliato per create/update/delete)
node bin/cli.mjs customers delete -p id=42 --dry-run
# salvare la risposta su file
node bin/cli.mjs report data -p start_date=2024-01-01 -p end_date=2024-03-31 -o report.jsonCodici di uscita
La CLI esce con codice 0 in caso di successo (anche se l'API restituisce un errore applicativo nel body, es. {"status":0,"error":"..."} — quella è comunque una risposta HTTP valida) e con codice 1 per errori della CLI stessa: parametri mal formati, comando/path sconosciuto, .env mancante o senza API key, file non leggibile, ecc.
Riferimento completo degli endpoint
I 141 endpoint sono definiti in endpoints.json e raggruppati per risorsa. Per ognuno è indicato il metodo HTTP, il path REST e il comando CLI equivalente.
GET/m/api/chat/list— Lista chat (chat list)GET/m/api/chat/messages— Messaggi chat (chat messages)GET/m/api/chat/get— Recupera chat (chat get)POST/m/api/chat/reply— Rispondi chat (chat reply)POST/m/api/chat/deleteMessage— Elimina messaggio chat (chat deleteMessage)GET/m/api/chat/types— Tipi messaggi chat (chat types)GET/m/api/chat/templates— Lista template chat (chat templates)POST/m/api/chat/create— Crea conversazione (chat create)POST/m/api/chat/updateStatus— Aggiorna stato chat (chat updateStatus)POST/m/api/chat/markAs— Segna chat (chat markAs)POST/m/api/chat/assign— Assegna chat (chat assign)
GET/m/api/check— Controllo connessione (check)
GET/m/api/checkouts/get— Dettaglio checkout (checkouts get)
GET/m/api/content/sliders/get— Dettagli slider (content sliders get)
GET/m/api/customers/profile— Profilo cliente (customers profile)GET/m/api/customers/get— Recupera cliente (customers get)GET/m/api/customers/list— Lista clienti (customers list)GET/m/api/customers/search— Ricerca cliente (customers search)POST/m/api/customers/delete— Elimina cliente (customers delete)POST/m/api/customers/login— Accesso cliente (customers login)POST/m/api/customers/registration— Registrazione cliente (customers registration)POST/m/api/customers/update— Aggiorna cliente (customers update)GET/m/api/customers/sources— Fonti clienti (customers sources)GET/m/api/customers/labels/list— Lista etichette clienti (customers labels list)POST/m/api/customers/labels/assign— Assegna etichette cliente (customers labels assign)POST/m/api/customers/labels/remove— Rimuovi etichette cliente (customers labels remove)GET/m/api/customers/history/list— Lista storici cliente (customers history list)POST/m/api/customers/history/create— Crea storico cliente (customers history create)POST/m/api/customers/history/update— Aggiorna storico cliente (customers history update)GET/m/api/customers/notifications/status— Stato notifiche cliente (customers notifications status)GET/m/api/customers/notifications/list— Lista notifiche cliente (customers notifications list)POST/m/api/customers/notifications/mark— Segna notifica come letta (customers notifications mark)POST/m/api/customers/notifications/register— Registra dispositivo notifiche cliente (customers notifications register)POST/m/api/customers/notifications/unregister— Rimuovi dispositivo notifiche cliente (customers notifications unregister)
GET/m/api/dashboard/get— Dati cruscotto (dashboard get)
GET/m/api/datatables/get— Dati datatables (datatables get)
POST/m/api/forms/submit— Invia modulo (forms submit)
GET/m/api/leadflow/settings— Configura Leadflow (leadflow settings)GET/m/api/leadflow/history— Storico Leadflow (leadflow history)GET/m/api/leadflow/schedule/list— Lista schedulazioni leadflow (leadflow schedule list)POST/m/api/leadflow/schedule/save— Salva schedulazione leadflow (leadflow schedule save)GET/m/api/leadflow/flow/get_contact— Recupera contatto leadflow (leadflow flow get_contact)POST/m/api/leadflow/flow/save— Salva contatto leadflow (leadflow flow save)POST/m/api/leadflow/flow/owner— Assegna proprietario lead (leadflow flow owner)
GET/m/api/marketing/tags— Lista tag marketing (marketing tags)GET/m/api/marketing/campaigns/flow— Flusso campagna (marketing campaigns flow)GET/m/api/marketing/campaigns/contacts— Contatti campagna (marketing campaigns contacts)POST/m/api/marketing/campaigns/updateStatus— Aggiorna stato campagna (marketing campaigns updateStatus)GET/m/api/marketing/campaigns/action/summary— Riepilogo azione campagna (marketing campaigns action summary)GET/m/api/marketing/campaigns/action/stats— Statistiche azione campagna (marketing campaigns action stats)GET/m/api/marketing/campaigns/statuses— Stati campagne (marketing campaigns statuses)GET/m/api/marketing/campaigns/types— Tipi campagne (marketing campaigns types)
GET/m/api/media/list— Lista media (media list)GET/m/api/media/directories— Elenco directory media (media directories)POST/m/api/media/delete— Elimina media (media delete)POST/m/api/media/add— Aggiungi media (media add)POST/m/api/media/update— Aggiorna media (media update)POST/m/api/media/format— Formatta media (media format)
POST/m/api/orders/create— Crea ordine (orders create)POST/m/api/orders/import— Importa ordini (orders import)GET/m/api/orders/list— Lista ordini (orders list)GET/m/api/orders/get— Dettagli ordine (orders get)POST/m/api/orders/updateStatus— Aggiorna stato ordine (orders updateStatus)POST/m/api/orders/resendNotifications— Reinvia notifiche ordine (orders resendNotifications)POST/m/api/orders/cancel— Annulla ordine (orders cancel)POST/m/api/orders/delete— Elimina ordine (orders delete)POST/m/api/orders/repeat— Ripeti ordine (orders repeat)POST/m/api/orders/prepareCart— Prepara carrello (orders prepareCart)POST/m/api/orders/shippings— Metodi di spedizione disponibili (orders shippings)POST/m/api/orders/applyCoupon— Applica coupon (orders applyCoupon)GET/m/api/orders/statuses— Lista stati ordine (orders statuses)GET/m/api/orders/coupons— Lista coupon (orders coupons)GET/m/api/orders/labels— Dettagli etichette ordini (orders labels)
GET/m/api/payments/list— Lista metodi di pagamento (payments list)GET/m/api/payments/taxes— Elenco imposte (payments taxes)
POST/m/api/plugins/install— Installa plugin (plugins install)GET/m/api/plugins/settings— Impostazioni plugin (plugins settings)GET/m/api/plugins/calendar/forms/list— Lista moduli calendario (plugins calendar forms list)GET/m/api/plugins/calendar/forms/select— Dettagli modulo calendario (plugins calendar forms select)GET/m/api/plugins/calendar/forms/getAvailability— Disponibilità orari (plugins calendar forms getAvailability)GET/m/api/plugins/calendar/forms/getLockedDays— Giorni bloccati (plugins calendar forms getLockedDays)POST/m/api/plugins/calendar/create— Crea appuntamento (plugins calendar create)POST/m/api/plugins/calendar/cancel— Annulla appuntamento (plugins calendar cancel)POST/m/api/plugins/calendar/update— Aggiorna appuntamento (plugins calendar update)GET/m/api/plugins/pipeline/pipelines/list— Lista pipeline (plugins pipeline pipelines list)GET/m/api/plugins/pipeline/pipelines/get— Dettaglio pipeline (plugins pipeline pipelines get)GET/m/api/plugins/pipeline/items/list— Lista elementi pipeline (plugins pipeline items list)POST/m/api/plugins/pipeline/items/add— Aggiungi elemento pipeline (plugins pipeline items add)POST/m/api/plugins/pipeline/items/move— Sposta elemento pipeline (plugins pipeline items move)POST/m/api/plugins/pipeline/items/delete— Elimina elemento pipeline (plugins pipeline items delete)GET/m/api/plugins/pipeline/groups/list— Lista gruppi pipeline (plugins pipeline groups list)GET/m/api/plugins/pipeline/groups/get— Dettaglio gruppo pipeline (plugins pipeline groups get)POST/m/api/plugins/pipeline/groups/create— Crea gruppo pipeline (plugins pipeline groups create)POST/m/api/plugins/pipeline/groups/update— Aggiorna gruppo pipeline (plugins pipeline groups update)POST/m/api/plugins/pipeline/groups/delete— Elimina gruppo pipeline (plugins pipeline groups delete)POST/m/api/plugins/pipeline/groups/sort— Ordina gruppi pipeline (plugins pipeline groups sort)POST/m/api/plugins/pipeline/groups/truncate— Svuota gruppo pipeline (plugins pipeline groups truncate)GET/m/api/plugins/tickets/list— Lista ticket (plugins tickets list)GET/m/api/plugins/tickets/departments— Reparti ticket (plugins tickets departments)POST/m/api/plugins/tickets/create— Crea ticket (plugins tickets create)GET/m/api/plugins/tickets/detail— Dettaglio ticket (plugins tickets detail)POST/m/api/plugins/tickets/reply— Rispondi ticket (plugins tickets reply)POST/m/api/plugins/tickets/close— Chiudi ticket (plugins tickets close)GET/m/api/plugins/membership/getPlans— Lista piani membership (plugins membership getPlans)GET/m/api/plugins/membership/getSubscriptionStatus— Stato sottoscrizione membership (plugins membership getSubscriptionStatus)GET/m/api/plugins/protectedContent/list— Lista contenuti protetti (plugins protectedContent list)GET/m/api/plugins/blog/posts/list— Lista post blog (plugins blog posts list)GET/m/api/plugins/blog/posts/get— Dettagli post blog (plugins blog posts get)POST/m/api/plugins/blog/posts/trackView— Traccia visualizzazione post (plugins blog posts trackView)POST/m/api/plugins/blog/posts/add— Aggiungi post blog (plugins blog posts add)POST/m/api/plugins/blog/posts/delete— Elimina post blog (plugins blog posts delete)GET/m/api/plugins/blog/categories/list— Lista categorie blog (plugins blog categories list)GET/m/api/plugins/blog/categories/get— Dettagli categoria blog (plugins blog categories get)
GET/m/api/report/lists— Liste report (report lists)GET/m/api/report/data— Dati report (report data)GET/m/api/report/dashboard— Dashboard report (report dashboard)POST/m/api/report/export— Esporta report (report export)
POST/m/api/reports/get— Recupera report (reports get)GET/m/api/reports/categories— Categorie report (reports categories)
GET/m/api/search/list— Ricerca dati (search list)
GET/m/api/site/data— Dati sito (site data)GET/m/api/site/assets— Risorse sito (site assets)GET/m/api/site/settings— Impostazioni sito (site settings)GET/m/api/site/plugins— Plugin sito (site plugins)GET/m/api/site/theme— Tema sito (site theme)
GET/m/api/slug/check— Controlla slug (slug check)
GET/m/api/subscriptions/getSubscriptionStatus— Stato abbonamento (subscriptions getSubscriptionStatus)POST/m/api/subscriptions/addSubscription— Aggiungi abbonamento (subscriptions addSubscription)
GET/m/api/users/get— Recupera utente (users get)POST/m/api/users/update— Aggiorna utente (users update)GET/m/api/users/profile— Profilo utente (users profile)GET/m/api/users/list— Lista utenti (users list)POST/m/api/users/delete— Elimina utente (users delete)POST/m/api/users/login— Login utente (users login)POST/m/api/users/reset— Reset password (users reset)POST/m/api/users/registration— Registrazione utente (users registration)POST/m/api/users/notifications/register— Registra notifica utente (users notifications register)POST/m/api/users/notifications/unregister— Annulla registrazione notifica utente (users notifications unregister)
POST/m/api/webhooks/create— Crea webhook (webhooks create)POST/m/api/webhooks/delete— Elimina webhook (webhooks delete)GET/m/api/webhooks/test— Test webhook (webhooks test)
Per il dettaglio completo di titolo, descrizione e parametri di ciascun endpoint usa node bin/cli.mjs describe <risorsa azione...>, oppure consulta direttamente endpoints.json.
Struttura del progetto
bin/cli.mjs entry point della CLI (shebang eseguibile)
src/index.mjs server MCP (stdio)
src/cli.mjs logica dei comandi CLI (parsing argomenti, list/describe/call)
src/lib.mjs logica condivisa: caricamento .env, header di autenticazione,
normalizzazione payload, esecuzione chiamate HTTP
endpoints.json definizione dei 141 endpoint (metodo, path, titolo, descrizione, parametri)
tests/verify.mjs smoke test di struttura del progetto
verify.py script di verifica addizionale (struttura endpoints.json + src/index.mjs)
.env.example template di configurazioneTest
npm testEsegue tests/verify.mjs, che verifica la struttura di endpoints.json, la presenza dei componenti richiesti dal server MCP (Server, CallToolRequestSchema, ListToolsRequestSchema, StdioServerTransport) e la presenza di .env.example con la chiave attesa.
Troubleshooting
Missing FRAMEWORK360_API_KEY (impostala nel file .env del progetto)
Il file .env non esiste o non contiene FRAMEWORK360_API_KEY. Copia .env.example in .env e compilalo.
La CLI risponde HTTP 200 ma con una pagina HTML "Sito non trovato"
Il dominio in FRAMEWORK360_BASE_URL non corrisponde a un sito Framework360 attivo. Verifica l'URL base con il gestionale/pannello del sito.
Un comando restituisce {"status":0,"error":"..."} con HTTP 200
È una risposta valida dell'API che segnala un errore applicativo (es. risorsa non trovata, parametri mancanti), non un errore della CLI/MCP. Usa describe <comando> per controllare i parametri attesi.
Comando/path non riconosciuto
Usa node bin/cli.mjs list <parola chiave> per cercare il comando corretto: la CLI suggerisce anche le corrispondenze più vicine quando un comando non esiste.
Ho cambiato .env ma il server MCP usa ancora i valori vecchi
Il processo MCP legge l'ambiente una sola volta all'avvio: riavvia la connessione/sessione del client MCP dopo aver modificato .env.
Sicurezza
.envcontiene credenziali reali e non va mai committato: è già escluso da.gitignore. Usa.env.examplecome riferimento per chi clona il repo.Prima di eseguire comandi che modificano dati (
create,update,delete,registration,assign/removedi etichette, ecc.) è consigliato usare--dry-runper controllare la richiesta che verrà inviata.L'API key viene inviata solo nell'header
X-Fw360-KeyversoFRAMEWORK360_BASE_URL; nessun dato viene inviato altrove.
Contribuire
Pull request e segnalazioni di bug sono benvenute. Per aggiungere un nuovo endpoint: aggiungilo a endpoints.json (metodo, path, titolo, descrizione, parametri) — sia il server MCP sia la CLI lo esporranno automaticamente, senza altre modifiche al codice.
Licenza
ISC — vedi il campo license in package.json.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/VadaLinux/framework360-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server