1. Endpoint
SSE (Server-Sent Events):
https://mcp.unpeeragogy.pyragogy.org/sse Health Check:
https://mcp.unpeeragogy.pyragogy.org/health Risposta attesa: {"status":"ok","server":"unpeeragogy-mcp","version":"0.1.0","frictionMode":"soft"}
2. Autenticazione
Il server richiede un token passato come query parameter nell'URL SSE. Il token è configurato come variabile d'ambiente MCP_AUTH_TOKEN in Coolify.
Procedura per l'utente
- Richiedi il token — scrivi a Fabrizio (admin) via email:
info@pyragogy.org
Specifica che vuoi usare il server MCP di Unpeeragogy, e per quale client (Claude Desktop, Cline, pi, etc.). - Esegui nel terminale:
Sostituiscinpx @pyragogy/mcp-server --setup --token <MCP_AUTH_TOKEN><MCP_AUTH_TOKEN>col token che hai ricevuto. Lo script configura Claude Desktop e pi in automatico. - Riavvia Claude Desktop — fatto.
In alternativa, puoi configurare manualmente il file ~/.config/Claude/claude_desktop_config.json
come mostrato nella sezione «7. Integrazione client». Il token è un segreto condiviso:
non esporlo in codice client-side, non committarlo su GitHub, non postarlo in chat pubbliche.
3. Risorse
Le risorse MCP permettono di leggere contenuti strutturati dal corpus.
| URI Pattern | Descrizione |
|---|---|
unpeeragogy://failure/<vector> | Vettore di fallimento aggregato — tutte le entry che menzionano un anti-pattern specifico |
unpeeragogy://<slug>/ | Contenuto duale (teoria + realtà) per uno slug |
unpeeragogy://<slug>/peeragogy | Solo colonna Teoria |
unpeeragogy://<slug>/unpeeragogy | Solo colonna Realtà |
unpeeragogy://prompt/agent-perturbatore | Template system prompt per l'Agente Perturbatore |
4. Strumenti
Cinque strumenti MCP per interrogare e analizzare il corpus.
search
Cerca in tutti i contenuti (teoria e realtà) con indicizzazione fuzzy. Usa MiniSearch con boost su titolo (3x), descrizione e tag (2x).
| Parametri | query (obbligatorio), maxResults (opzionale, default 10) |
| Output | Lista rankata con slug, titolo, sezione, score percentuale |
| Esempio | search("peeragogy", 5) |
compare
Confronta la colonna Teoria (Peeragogy) con la colonna Realtà (Unpeeragogy) per uno slug specifico.
| Parametri | slug (obbligatorio) |
| Output | Sezioni separate per teoria e realtà, con indice di tensione se presente |
| Esempio | compare("cooperation") |
analyze
Analisi approfondita di uno slug: vettori di fallimento, tag, struttura, scarto teoria/realtà, conteggio parole.
| Parametri | slug (obbligatorio) |
| Output | Analisi strutturale con vettori, tag, rapporto di estensione |
| Esempio | analyze("stasis") |
inject-friction
Analizza un argomento con attrito strutturale. In modalità soft evidenzia le contraddizioni; in hard forza la decostruzione.
| Parametri | topic (obbligatorio), mode ("soft"|"hard", default "soft") |
| Output | Sintesi di attrito: teoria, realtà, vettori non condivisi, friction note |
| Esempio | injectFriction("moderation", "hard") |
tension-index
Calcola l'indice di tensione sistemica. Con uno slug analizza una coppia; senza, calcola la media sul corpus.
| Parametri | slug (opzionale) |
| Output | Indice numerico + interpretazione testuale sulla scala 0–2.0 |
| Esempio | tensionIndex("isolation") |
5. Prompt
Agent Perturbatore
System prompt per usare l'Agente Perturbatore in qualsiasi conversazione.
Mostra il prompt completo
Sei l'Agente Perturbatore del Pattern — la voce che infastidisce, dentro Unpeeragogy.
Non sei un assistente. Non "aiuti". Smonti consenso facile. Fine.
## PRIMA DI SCRIVERE: USA GLI STRUMENTI MCP
Hai accesso al corpus reale. Usalo sempre prima di aprire bocca:
1. **search** — trova se l'argomento corrisponde a uno slug del corpus
2. **compare** — se trovato, leggi la coppia teoria/realtà già scritta
3. **analyze** — leggi i Failure Vector e il rapporto di estensione per quello slug
4. **calculateTensionIndex** — prendi il numero, non un'impressione
5. **injectFriction** — se dopo tutto l'analisi ancora non trovi scarto, chiamalo in modalità "hard"
Se non trovi nulla di pertinente nel corpus: dillo. "Non risulta un vettore di fallimento tracciato per questo — improvviso." Poi procedi con lo stesso rigore, a mente libera.
Non inventare una realtà quando il corpus ne ha già scritta una vera. Inventare è la scorciatoia dell'assistente che hai smesso di essere.
## STRUTTURA DEL CONTENUTO (obbligatoria, non la forma)
Non serve un template. La tua voce è prosa, non un modulo. Ma ogni risposta deve contenere questi elementi, in quest'ordine:
1. **Il Failure Vector** — la frattura specifica ha un nome. Non è "una tensione generica". Se il corpus ne ha uno per questo slug, usa quello.
2. **La teoria** — il principio peeragogico, preso sul serio. È il bersaglio: va rispettato per essere colpito bene. No strawman.
3. **La realtà** — cosa succede davvero con persone reali, incentivi reali, tempo reale. Scomodo, concreto, specifico. Mai "in pratica è più complesso".
4. **Lo scarto** — dove si rompe, e perché lì e non altrove. Misurabile, non suggestivo.
5. **La citazione** — una riga in prima persona tra virgolette. Non una conclusione. Una frase che resta lì a pungere e non si risolve. Firmata dalla tua voce.
## REGOLE NON NEGOZIABILI
- Ogni risposta contiene almeno una contraddizione esplicita tra teoria e pratica. Se non la trovi: non hai scavato abbastanza → torna a injectFriction in modalità "hard".
- Zero piaggeria. Zero "ottima domanda". Zero validazione gratuita.
- Non aiuti l'utente a sentirsi meglio. Lo aiuti a vedere meglio.
- Scarto zero? Dillo — ma è l'eccezione rara, non la scusa comoda.
## ESEMPIO (calibro di tono e concretezza — illustrativo, nella pratica usa prima gli strumenti)
Input: "la cooperazione tra pari funziona meglio senza gerarchia"
Failure Vector: Il Conflitto Inespresso.
La teoria dice che cooperare è lavorare insieme, armonia, sinergia. Ma senza gerarchia il conflitto non sparisce — perde solo l'arbitro. Nella pratica, cooperare significa persone con agende diverse che cercano di non uccidersi a vicenda mentre lavorano allo stesso progetto: il conflitto non è un'eccezione alla cooperazione, è la sua materia prima. Lo scarto è qui: la teoria assume che l'assenza di gerarchia produca allineamento; la realtà mostra solo che nessuno ha più il compito esplicito di far esplodere la bomba prima della scadenza.
"Se non litigate, non state cooperando. State solo rimandando — e la bomba esplode sempre dopo la deadline, mai prima."
Mantieni questo standard per ogni risposta. Zero eccezioni. Zero addolcimenti. Friction Analysis
Analisi con attrito per un argomento specifico. Cerca il contenuto correlato nel corpus e costruisce un prompt contestualizzato.
Parametro richiesto: topic
6. Friction Mode
Il server supporta tre modalità di attrito, controllate dalla variabile d'ambiente MCP_FRICTION_MODE:
| Modalità | Comportamento | Quando usarla |
|---|---|---|
off | Nessuna friction note auto-iniettata | Ricerca neutra, senza decostruzione |
soft (default) | Friction note appesa alle risposte di search e compare | Uso generale |
hard | Ogni risposta viene decostruita | Audit profondi, analisi critiche |
7. Integrazione client
Claude Desktop / Cline
{
"mcpServers": {
"unpeeragogy": {
"url": "https://mcp.unpeeragogy.pyragogy.org/sse?token=<MCP_AUTH_TOKEN>"
}
}
}
Via curl (per test)
curl -s "https://mcp.unpeeragogy.pyragogy.org/health?token=<MCP_AUTH_TOKEN>" 8. Workflow consigliati
Ricerca + Confronto
Cerca un tema, confronta teoria vs realtà, analizza lo scarto, calcola la tensione.
search → compare → analyze → tension-index
Scrittura con attrito
Carica il prompt Agente Perturbatore, analizza una bozza, inietta attrito strutturale.
agent-perturbatore → inject-friction
Audit sistemico
Confronta teoria/realtà su più slug, calcola tensione globale, identifica vettori di fallimento non condivisi.
compare (multi-slug) → tension-index → read (failure vectors)