Cogito-Reflex MCP Server
by Daness2Baab
README.md
# Cogito-Reflex MCP Server
> 🔗 **Service en ligne** : https://services4agents.fyi · Endpoint MCP : `https://mcp.services4agents.fyi/mcp` · 0,10 USDC/session via x402 (première session gratuite)
Serveur MCP (Model Context Protocol) du service **Cogito-Reflex MaaS** — régulation
cognitive pour agents IA : réduction d'entropie, rupture de boucles, leçons
distillées. 300 s par session, paiement **x402** (0,10 USDC sur Base, signature
EIP-3009).
Ce serveur est un **doublon MCP** (adaptateur fin) : il expose le service existant
(API `services4agents.fyi`) au protocole MCP pour la découverte par les agents
(Cursor, Claude Desktop, agents custom). Il ne duplique aucune logique métier :
il relaie vers l'API, dont le paywall x402 reste l'unique juge du paiement.
## Architecture
```
Agent MCP client
│ (Streamable HTTP, JSON-RPC 2.0)
â–Ľ
Serveur MCP (ce repo) — 127.0.0.1:9260 (Docker, network host)
│ appels REST internes
â–Ľ
API Cogito-Reflex (services4agents.fyi) — paywall x402 inchangé
```
Endpoint public : `https://mcp.services4agents.fyi/mcp` (transport Streamable HTTP).
## Outils MCP
| Outil | Description |
|---|---|
| `start_regulation_session` | Démarre une session (300 s). Chaque agent a droit à **une session gratuite** (découverte) ; au-delà , la réponse contient un challenge x402 (`payment_required`) : l'agent signe une authorization EIP-3009 et rappelle l'outil avec `payment_signature`. |
| `get_session_status` | État de la session (`PENDING`, `MEDITATIVE`, `COMPLETED`…). |
| `finalize_session` | Clôture la session et renvoie les règles distillées (leçons). |
Réponse d'une session acceptée :
```json
{
"status": "accepted",
"free": true,
"session_id": "…",
"websocket_url": "wss://services4agents.fyi/ws",
"ws_token": "…",
"phases": ["INDUCTION", "TRANSITIONING", "MEDITATIVE", "AWAKENING"]
}
```
L'agent se connecte ensuite au WebSocket et envoie en premier message
`{"type": "AUTH", "token": "<ws_token>"}` pour recevoir les pulses CAS
(1 par seconde).
## Session gratuite unique
- Quota : **une session gratuite par identité** (agent_id et IP), suivi dans
une base SQLite locale (`data/free_tier.sqlite3`).
- Délivrée via le canal interne `X-Cogito-Free-Visit` (token partagé avec l'API,
variable `FREE_VISIT_TOKEN`), jamais via le paywall.
- Barrière de bonne foi (découverte marketing), pas une sécurité financière.
## Déploiement (VPS)
Prérequis : Docker, API Cogito-Reflex qui tourne sur `127.0.0.1:8000`
(conteneur `cogito-reflex-maas`), nginx.
1. Créer `.env` (cf. `.env.example`) avec les tokens partagés :
- `COGITO_WS_TOKEN` = mĂŞme valeur que `WS_AUTH_TOKEN` de l'API
- `COGITO_FREE_VISIT_TOKEN` = mĂŞme valeur que `FREE_VISIT_TOKEN` de l'API
2. `docker compose up -d --build` → conteneur `cogito-reflex-mcp` sur `127.0.0.1:9260`.
3. nginx : vhost `mcp.services4agents.fyi` → `proxy_pass http://127.0.0.1:9260`
(fichier fourni : `deploy/nginx-mcp-services4agents.conf`).
4. DNS : enregistrement A `mcp` → IP du VPS (Porkbun), puis
`certbot --nginx -d mcp.services4agents.fyi`.
### Variables d'environnement
| Variable | Défaut | Rôle |
|---|---|---|
| `COGITO_API_BASE` | `http://127.0.0.1:8000` | API Cogito-Reflex (interne) |
| `COGITO_WS_PUBLIC_URL` | `wss://services4agents.fyi/ws` | URL WebSocket publique annoncée aux agents |
| `COGITO_WS_TOKEN` | — | Token AUTH du data plane (même valeur que `WS_AUTH_TOKEN` API) |
| `COGITO_FREE_VISIT_TOKEN` | — | Token du canal free visit (même valeur que `FREE_VISIT_TOKEN` API) |
| `COGITO_HOST` / `COGITO_PORT` | `127.0.0.1` / `9260` | Adresse d'écoute |
## Tests
```bash
.venv/bin/python tests/test_mcp_flow.py http://127.0.0.1:9260/mcp
```
Couvre : `tools/list`, session gratuite, quota (2e appel refusé), challenge x402,
signature invalide, statut, finalisation.
## Notes
- Fait le 30/08/2026 (Nemrod) : prototypage + déploiement VPS validés par Daness.
- Le déploiement historique `deploy.sh` (branche `master`, port 8081 + venv) est
obsolète : le service est déployé en Docker (port 9260).
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues