Junê (june-mcp)

officiel

Give your agent a memory: shared, cited, tenant-isolated knowledge-graph memory for any MCP host. Grounded answers from a local-first June endpoint — abstains rather than guesses.

Que pouvez-vous faire avec Junê (june MCP ?

  • Cited answers from memory — Ask your AI to answer a question using june_answer, which returns grounded, cited responses from the knowledge graph and abstains rather than guessing.
  • Search and explore the graph — Use june_search for ranked multi-hop evidence, june_neighborhood to inspect connections around a node, or june_subgraph to export a bounded graph region.
  • Write new memories — Have your agent record facts or notes with june_remember so they become immediately retrievable and citable, or ingest structured nodes/edges via june_ingest.
  • List everything matching a predicate — Ask for a recall-complete enumeration of all nodes with june_enumerate, which returns every match rather than a top-k sample.
  • Ingest local files — Upload supported documents (PDF, DOCX, XLSX, CSV, HTML, MD, images, audio) from an approved folder using june_ingest_file when JUNE_FILES_ROOT is configured.
  • Merge duplicate entities — Run june_resolve to consolidate duplicate entities via reversible same_as edges, with an optional semantic tier on Pro endpoints.

Documentation

june-mcp

Donnez une mémoire à votre agent. june-mcp est le serveur MCP officiel pour Junê — il connecte tout hôte MCP (Claude Desktop, Claude Code, et autres) à un graphe de connaissances June, afin que votre agent puisse demander, rechercher et se souvenir dans une mémoire partagée, citée et isolée par locataire.

Ce paquet est un connecteur léger, sans logique propre : toute la récupération, l'assemblage du graphe et les réponses se font sur le point d'accès June que vous lui indiquez. Aucun code de moteur ne vit ici — c'est pourquoi il est assez petit pour être lu d'une traite.

Claude Desktop / Claude Code  ──stdio──▶  june-mcp  ──HTTPS──▶  your June endpoint
                                                                 (graph · retrieval · answers)

Installer

pip install june-mcp          # just the connector   (or: pipx install june-mcp)
pip install june-ai           # umbrella: june-mcp + june-bench (the benchmark suite)
pip install "june-bench[mcp]" # the bench, with the connector as an extra

Le pointer vers un point d'accès June

june-mcp communique avec tout service June. Trois façons d'en avoir un :

  1. Application de bureau Junê (locale d'abord). Lancez l'application Junê et connectez-vous à son moteur local — vos fichiers, graphe et clés restent sur votre machine.
  2. Votre propre service June. Les clients Pro/Équipe qui exécutent le paquet moteur june-local pointent JUNE_BASE_URL vers leur propre serveur.
  3. Hébergé (Équipe). Pointez vers le point d'accès de votre espace de travail June hébergé avec la clé API de votre console.

Configurer

Le serveur est fermé par défaut en cas d'échec : il refuse de démarrer s'il ne sait pas où se connecter et en tant que qui, et vous dit tout ce qui manque en un seul message (pas une erreur à la fois).

envrequissignification
JUNE_BASE_URLVotre point d'accès June, par ex. http://localhost:8000
JUNE_CANVASLe canvas (espace de travail) auquel lier cette connexion — un nom (work) ou un identifiant de canvas. Les noms sont résolus en identifiant au démarrage ; les noms ambigus échouent en mode fermé
JUNE_CANVAS_CREATEoptionnel1 crée le canvas nommé au premier lancement s'il n'existe pas encore (refusé en mode lecture seule)
JUNE_API_KEYVotre clé API June (JUNE_ALLOW_ANON=1 se désinscrit explicitement pour les configurations locales sans clé)
JUNE_LLM_KEYoptionnelApportez votre propre clé LLM pour les réponses citées — transmise par requête comme en-tête, jamais journalisée, jamais stockée sur le service
JUNE_READONLYoptionnel1 masque et refuse tous les outils d'écriture (la mémoire devient en lecture seule)
JUNE_FILES_ROOToptionnelRépertoire dont les agents peuvent télécharger des fichiers via june_ingest_file — non défini ⇒ cet outil n'existe pas
JUNE_TIMEOUT_READ / JUNE_TIMEOUT_ANSWERoptionnelDélais d'attente par verbe (par défaut 15 s / 120 s)
JUNE_LOG_LEVELoptionnelLa journalisation est uniquement sur stderr par conception — stdout est le fil MCP

Vérifiez-le avant votre agent

JUNE_BASE_URL=http://localhost:8000 JUNE_API_KEY=... JUNE_CANVAS=work june-mcp --doctor

Le docteur vérifie, dans l'ordre : configuration → service accessible → résolution du canvas (votre nom de canvas → son identifiant, par ex. name "work" → 9147bee6-…) → santé de la recherche → manifeste des outils, et affiche RÉUSSI/ÉCHEC par vérification avec une indication mappée (par ex. un nom manquant liste les canvases qui existent et pointe vers JUNE_CANVAS_CREATE=1). Le docteur se termine par 0 uniquement lorsque chaque vérification réussit (1 sinon) ; le serveur lui-même se termine par 2 en cas d'erreur de configuration au lieu de démarrer à moitié câblé. Exécutez le docteur en premier ; il détecte toutes les erreurs de configuration courantes avant que votre agent ne voie jamais le serveur.

Connectez-le à Claude

Claude Desktop — fusionnez dans claude_desktop_config.json (Paramètres → Développeur) :

{
  "mcpServers": {
    "june": {
      "command": "june-mcp",
      "env": {
        "JUNE_BASE_URL": "http://localhost:8000",
        "JUNE_API_KEY": "your-key",
        "JUNE_CANVAS": "work",
        "JUNE_LLM_KEY": "your-llm-provider-key"
      }
    }
  }
}

Claude Code :

claude mcp add june -e JUNE_BASE_URL=http://localhost:8000 \
  -e JUNE_API_KEY=your-key -e JUNE_CANVAS=work \
  -e JUNE_LLM_KEY=your-llm-provider-key -- june-mcp

Redémarrez complètement l'hôte (Cmd+Q sur macOS), puis vérifiez que le serveur affiche 10 outils (11 lorsque vous optez pour june_ingest_file via JUNE_FILES_ROOT).

Les outils

outilce que votre agent obtient
june_answerUne réponse citée et fondée issue du graphe — s'abstient plutôt que de deviner
june_searchPreuves classées pour une requête (prend en charge le multi-saut)
june_contextUn pack de contexte assemblé sous un budget de jetons
june_neighborhoodLe graphe autour d'un nœud
june_subgraphUne exportation de sous-graphe bornée
june_rememberÉcrire un fait/une note dans le graphe (devient immédiatement accessible et citable)
june_ingestIngestion structurée de nœuds/arêtes
june_enumerateTOUS les nœuds correspondant à un prédicat — liste complète par rappel "lister TOUS les X" (pas top-k)
june_ingest_fileTélécharger un fichier local (pdf/docx/xlsx/csv/html/md/images/audio) depuis le dossier approuvé par l'opérateur — existe uniquement lorsque vous définissez JUNE_FILES_ROOT
june_enrichPro : ré-extraction en arrière-plan du canvas avec le moteur plus riche (idempotent ; tâche + sondage ; 403 sur gratuit)
june_resolveMaintenance : fusionner les entités en double via des arêtes same_as réversibles (s'exécute côté serveur ; strong_only=false déverrouille le niveau sémantique sur Pro)

Les descriptions sont écrites pour l'agent (quoi → quand → retours), et chaque entrée limitée est visiblement notifiée à l'agent au lieu d'être tronquée silencieusement.

Gratuit vs Pro — la balise june-pro

june-mcp est un seul paquet pour tout le monde ; il n'existe pas de "build Pro" séparé. Pro est une propriété du point d'accès, pas du connecteur : connectez-vous à un June activé Pro (une licence Pro dans l'application, une clé Pro sur un espace de travail hébergé) et les mêmes outils transportent des résultats de niveau Pro : chaque écriture june_remember et june_ingest_file exécute automatiquement les moteurs d'entités/arêtes plus riches (le résultat rapporte quel engine a été exécuté), june_resolve passe à la correspondance sémantique, et june_enrich remplit les souvenirs qui ont été écrits sur le niveau gratuit avant votre mise à niveau. Le terminal montre dans quel monde vous êtes : --doctor imprime une ligne edition et la bannière de démarrage du serveur étiquette la connexion —

june-mcp: connected http://localhost:8000 canvas name "work" → 11d2… [june-pro]

La balise est lue depuis le propre /v1/whoami du service (le même état d'autorisation qui verrouille les routes Pro côté serveur), donc elle ne peut pas être en désaccord avec ce que vous obtenez réellement — et elle est uniquement d'affichage : les droits sont appliqués sur le service, peu importe ce qu'un client imprime. Les services plus anciens sans /v1/whoami n'affichent simplement aucune balise.

Modèle de sécurité

La surface des outils n'expose aucun paramètre canvas/espace de travail — l'espace de travail est lié côté serveur depuis le contexte de votre connexion, fermé par défaut en cas d'échec. Une lecture inter-locataire n'est pas une vérification d'autorisation qui pourrait échouer en mode ouvert ; elle est irreprésentable depuis le client. JUNE_READONLY=1 ajoute une deuxième barrière pour les déploiements en lecture seule. Votre propre clé LLM accompagne chaque requête de réponse comme un en-tête et n'est jamais persistée ou journalisée par le service.

Erreurs

Chaque échec en amont est mappé à une charge utile d'erreur typée et expurgée (construite à partir du type d'exception + du statut HTTP uniquement — jamais à partir des corps de réponse), afin que le serveur survive à tout ce que le point d'accès lance et que votre agent voie un message propre et exploitable.

Licence

MIT. Le moteur Junê lui-même est un produit séparé et propriétaire — ce connecteur est la partie ouverte, par conception.