Skip to main content
Glama

Enma Daio — moteur de classement et de conseil de destination (MCP)

Enma Daio apprend l'organisation de vos dossiers, mémorise des règles de classement validées, et propose une destination pour chaque contenu. Il s'expose en serveur MCP stdio (n'importe quel harnais compatible MCP : Claude Code, Codex, OpenCode, Cursor…) et en interface web locale.

Mode conseil : Enma propose, le harnais exécute l'écriture. Enma ne crée ni n'écrit aucun fichier de contenu. Ce n'est pas un garde-fou de sécurité : un harnais disposant d'un shell peut écrire sans passer par Enma.

Fonctionnalités

  • Scan + index (Mister Popo) : parcourt l'arborescence, indexe les chemins (borné : 120 000 entrées, profondeur 8, 16 Mio/fichier, budget 600 s).

  • Apprentissage : déduit des règles candidates depuis l'index (dossier à forte concentration d'un type → destination proposée), seuil 50 fichiers, types binaires et dossiers massifs exclus.

  • Résolution : chaîne de priorité instruction ponctuelle > règle projet > gabarit > héritage, avec consultation de l'index en secours.

  • Serveur MCP stdio : 4 outils (resoudre_destination, memoriser_regle, lister_regles, proposer_regle).

  • Interface web locale (enma web) : état, arborescence repliable, règles proposées (tuile compacte), dossiers scannés (ajout/retrait), planification.

  • Planificateur (Karin) : scan périodique en fond (LaunchAgent com.enmadaio.karin), fréquence réglable.

Related MCP server: llm-file-operations-agent

Installation

Aucune dépendance obligatoire (bibliothèque standard Python uniquement). Python ≥ 3.10 requis.

pip install git+https://github.com/Edsorel75019/enma-daio   # ou : pip install .
enma install-opencode                                # pièces OpenCode (plugins, tool, permissions)

Deux points d'entrée : enma (CLI) et enma-serve (serveur MCP). enma uninstall-opencode restaure l'état antérieur.

Configuration

Fichier enma-catalogue.json (chemin via ENMA_CATALOGUE) :

{
  "racines": ["/Volumes/ULYSSE/Atelier"],
  "zones_interdites": ["/Volumes/ULYSSE/Atelier/secrets"],
  "zones_confirmation": ["…/commun/decisions", "…/commun/etat"],
  "exclusions_noms": ["node_modules", "__pycache__", ".git", ".venv", "caches", ".local", "cache"]
}
  • racines : dossiers à observer. zones_interdites : jamais lues/scannées/ cibles. zones_confirmation : proposées avec confirmation. exclusions_noms : dossiers techniques ignorés partout.

Variables d'environnement : ENMA_CATALOGUE, ENMA_STORE (règles), ENMA_INDEX (index), ENMA_REJETS (candidats rejetés).

Branchement MCP

Exemple OpenCode (opencode.json, section mcp) :

{
  "mcp": {
    "enma": {
      "type": "local",
      "command": ["/Users/sorel/Library/Python/3.14/bin/enma-serve"],
      "environment": {
        "ENMA_CATALOGUE": "…/Enma_Daio/enma-catalogue.json",
        "ENMA_STORE": "…/Enma_Daio/enma-regles.json",
        "ENMA_INDEX": "…/Enma_Daio/enma-scan-index.json"
      },
      "enabled": true
    }
  }
}

Claude Code (mcpServers) et Codex ([mcp_servers.enma]) déclarent le même serveur stdio.

Convention de vocabulaire (inscrite dans Atelier/AGENTS.md)

« solliciter Enma Daio », « demander à Enma Daio », « réveiller Enma Daio », « solliciter le portier » = appeler l'outil MCP resoudre_destination.

Utilisation en ligne de commande

enma scan       # observer les racines (Mister Popo)
enma web        # interface web locale (Enma Daio)
enma resoudre --projet atlas --type-contenu compte-rendu
enma memoriser --projet atlas --type-contenu compte-rendu --destination projets/atlas/rapports/
enma lister

Interface web

enma web ouvre http://127.0.0.1:PORT. Le serveur n'écoute que 127.0.0.1, avec un jeton local (mutations refusées sans lui). Sections : présentation (Enma Daio, Mister Popo, Karin), mode d'emploi, état, dossiers scannés (ajout via panneau natif, retrait), règles proposées (tuile compacte + filtre + pagination), arborescence repliable, règles mémorisées.

Tests

python3 tests/run.py    # 42 tests, stdlib uniquement

Limites

  • Mode conseil, pas de confinement OS.

  • Ne connaît pas le contenu des fichiers (seulement l'arborescence et les règles).

  • Pas de publication GitHub (décision Sorel : test local d'abord).

Documentation

Licence

MIT.

Available Tools

4 tools
lister_reglesA

Liste les règles de classement mémorisées.

Inputs: projet, type_contenu.

memoriser_regleC

Mémorise ou modifie une règle de classement (projet/gabarit). Une exception fichier n'est jamais persistée.

Inputs: projet (required), destination (required), type_contenu (required), portee, +5 more.

proposer_regleC

Propose une règle candidate à faire valider, à partir d'une destination observée.

Inputs: destination (required), contexte, sessionID.

resoudre_destinationC

Propose une destination pour un contenu (mode conseil : Enma propose, le harnais écrit).

Inputs: projet, fichier, reponse, sessionID, +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 4 tools

    Disambiguation5/5

    Each tool serves a distinct function: resolving a destination, memorizing/modifying rules, listing rules, and proposing new rules based on observations. There is no overlap or ambiguity between them.

    Naming Consistency5/5

    All tool names follow a consistent pattern of infinitive verb + underscore + noun in French (e.g., resoudre_destination, memoriser_regle). The style is uniform and predictable.

    Tool Count5/5

    With 4 tools, the set is well-scoped for a rule-based classification system. Each tool addresses a core need (resolution, rule management, listing, and suggestion) without unnecessary bloat.

    Completeness3/5

    The main workflows are covered (resolve, create/update, list, propose), but there is no delete operation for rules. This is a notable gap that could hinder rule maintenance, though agents might work around it by modifying rules instead.

    Maintenance

    ActivityNo data
    ResponsivenessSyncing

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides file system operations (list, read, write, search) via MCP, enabling an AI agent to manage files through natural language.
      2,203 npm
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables AI agents to interact with a sandboxed filesystem via MCP tools for reading, writing, searching, and monitoring files, including batch processing and resource discovery for resume management.
      -