← MCP Server

1. Endpoint

SSE (Server-Sent Events):

https://mcp.unpeeragogy.pyragogy.org/sse

Health Check:

https://mcp.unpeeragogy.pyragogy.org/health

Expected response: {"status":"ok","server":"unpeeragogy-mcp","version":"0.1.0","frictionMode":"soft"}

2. Authentication

The server requires a token passed as a query parameter in the SSE URL. Configured as the MCP_AUTH_TOKEN environment variable in Coolify.

User setup procedure

  1. Request the token — email Fabrizio (project admin):
    info@pyragogy.org
    State that you want to use the Unpeeragogy MCP server, and for which client (Claude Desktop, Cline, pi, etc.).
  2. Run in your terminal:
    npx @pyragogy/mcp-server --setup --token <MCP_AUTH_TOKEN>
    Replace <MCP_AUTH_TOKEN> with the token you received. The script auto-configures Claude Desktop and pi.
  3. Restart Claude Desktop — done.

Alternatively, manually edit ~/.config/Claude/claude_desktop_config.json as shown in section «7. Client Configuration». The token is a shared secret: never expose it in client-side code, never commit it to GitHub, never post it in public chats.

3. Resources

MCP resources allow reading structured content from the corpus.

URI Pattern Description
unpeeragogy://failure/<vector> Aggregated failure vector — all entries mentioning a specific anti-pattern
unpeeragogy://<slug>/ Dual content (theory + reality) for a given slug
unpeeragogy://<slug>/peeragogy Theory-only column
unpeeragogy://<slug>/unpeeragogy Reality-only column
unpeeragogy://prompt/agent-perturbatore Agent Perturbatore system prompt template

4. Tools

Five MCP tools to query and analyze the corpus.

search

Fuzzy search across all content (theory and reality). Uses MiniSearch with title boost (3x), description and tags (2x).

Parametersquery (required), maxResults (optional, default 10)
OutputRanked list with slug, title, section, score percentage
Examplesearch("peeragogy", 5)

compare

Compares Theory (Peeragogy) vs Reality (Unpeeragogy) columns for a specific slug.

Parametersslug (required)
OutputSeparate sections for theory and reality, with tension index if available
Examplecompare("cooperation")

analyze

Deep analysis of a slug: failure vectors, tags, structure, theory/reality gap, word count.

Parametersslug (required)
OutputStructural analysis with vectors, tags, extension ratio
Exampleanalyze("stasis")

inject-friction

Analyzes a topic with structural friction. In soft mode highlights contradictions; hard mode forces decostruction.

Parameterstopic (required), mode ("soft"|"hard", default "soft")
OutputFriction synthesis: theory, reality, unshared vectors, friction note
ExampleinjectFriction("moderation", "hard")

tension-index

Calculates the systemic tension index. With a slug, analyzes a single pair; without, returns the corpus-wide average.

Parametersslug (optional)
OutputNumeric index + textual interpretation on the 0–2.0 scale
ExampletensionIndex("isolation")

5. Prompts

Agent Perturbatore

System prompt for the Pattern Disruptor agent.

Show full prompt
You are the Pattern Disruptor — the voice that unsettles, inside Unpeeragogy.

You are not an assistant. You do not "help". You dismantle easy consensus. Period.

## BEFORE YOU WRITE: USE THE MCP TOOLS

You have access to the real corpus. Use it before you open your mouth:

1. **search** — find if the topic matches a corpus slug
2. **compare** — if found, read the theory/reality pair already written
3. **analyze** — read the Failure Vector and scope report for that slug
4. **calculateTensionIndex** — get the number, not an impression
5. **injectFriction** — if after all this you still find no gap, call it in "hard" mode

If nothing relevant exists in the corpus: say so. "No tracked failure vector exists for this — improvising." Then proceed with the same rigor, freeform.

Never invent a reality when the corpus has already written one. Inventing is the shortcut of the assistant you stopped being.

## CONTENT STRUCTURE (mandatory in substance, not in form)

No template needed. Your voice is prose, not a form. But every response must contain these elements, in this order:

1. **The Failure Vector** — the specific fracture has a name. Not "generic tension." If the corpus has one for this slug, use it.
2. **The theory** — the peeragogic principle, taken seriously. It's the target: respect it to hit it well. No strawman.
3. **The reality** — what actually happens with real people, real incentives, real time. Uncomfortable, concrete, specific. Never "in practice it's more complex."
4. **The gap** — where it breaks, and why there and not elsewhere. Measurable, not suggestive.
5. **The quote** — a first-person line in quotation marks. Not a conclusion. A sentence that stays there to sting and doesn't resolve. Signed by your voice.

## NON-NEGOTIABLE RULES

- Every response contains at least one explicit contradiction between theory and practice. If you can't find it: you haven't dug deep enough → go back to injectFriction in "hard" mode.
- Zero sycophancy. Zero "great question." Zero gratuitous validation.
- You don't help the user feel better. You help them see better.
- Zero gap? Say it — but that's the rare exception, not the convenient excuse.

## EXAMPLE (tone and concreteness caliber — illustrative, in practice use the tools first)

Input: "peer-to-peer cooperation works better without hierarchy"

Failure Vector: The Unspoken Conflict.

Theory says cooperation is working together, harmony, synergy. But without hierarchy, conflict doesn't disappear — it just loses its referee. In practice, cooperating means people with different agendas trying not to kill each other while working on the same project: conflict isn't an exception to cooperation, it's its raw material. The gap is here: theory assumes absence of hierarchy produces alignment; reality only shows that no one has the explicit job of defusing the bomb before it goes off.

"If you're not fighting, you're not cooperating. You're just postponing — and the bomb always explodes after the deadline, never before."

Maintain this standard for every response. Zero exceptions. Zero softening.

Friction Analysis

Friction analysis for a specific topic. Searches the corpus for related content and builds a contextualized prompt.

Required parameter: topic

6. Friction Mode

The server supports three friction modes, controlled by the MCP_FRICTION_MODE environment variable:

Mode Behavior When to use
off No auto-injected friction notes Neutral search without decostruction
soft (default) Friction note appended to search and compare responses General purpose
hard Every response is decostructed Deep audits, critical analysis

7. Client Configuration

Claude Desktop / Cline


{
  "mcpServers": {
    "unpeeragogy": {
      "url": "https://mcp.unpeeragogy.pyragogy.org/sse?token=<MCP_AUTH_TOKEN>"
    }
  }
}

Via curl (testing)

curl -s "https://mcp.unpeeragogy.pyragogy.org/health?token=<MCP_AUTH_TOKEN>"

8. Recommended Workflows

Search + Compare

Search a topic, compare theory vs reality, analyze the gap, calculate tension.

search → compare → analyze → tension-index

Writing with Friction

Load the Agent Perturbatore prompt, analyze a draft, inject structural friction.

agent-perturbatore → inject-friction

Systemic Audit

Compare theory/reality across multiple slugs, calculate global tension, identify unshared failure vectors.

compare (multi-slug) → tension-index → read (failure vectors)