Junê (june-mcp)
officielGive 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_searchfor ranked multi-hop evidence,june_neighborhoodto inspect connections around a node, orjune_subgraphto export a bounded graph region. - Write new memories — Have your agent record facts or notes with
june_rememberso they become immediately retrievable and citable, or ingest structured nodes/edges viajune_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_filewhenJUNE_FILES_ROOTis configured. - Merge duplicate entities — Run
june_resolveto consolidate duplicate entities via reversiblesame_asedges, 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 :
- 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.
- Votre propre service June. Les clients Pro/Équipe qui exécutent le paquet moteur
june-localpointentJUNE_BASE_URLvers leur propre serveur. - 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).
| env | requis | signification |
|---|---|---|
JUNE_BASE_URL | ✅ | Votre point d'accès June, par ex. http://localhost:8000 |
JUNE_CANVAS | ✅ | Le 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_CREATE | optionnel | 1 crée le canvas nommé au premier lancement s'il n'existe pas encore (refusé en mode lecture seule) |
JUNE_API_KEY | ✅ | Votre clé API June (JUNE_ALLOW_ANON=1 se désinscrit explicitement pour les configurations locales sans clé) |
JUNE_LLM_KEY | optionnel | Apportez 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_READONLY | optionnel | 1 masque et refuse tous les outils d'écriture (la mémoire devient en lecture seule) |
JUNE_FILES_ROOT | optionnel | Ré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_ANSWER | optionnel | Délais d'attente par verbe (par défaut 15 s / 120 s) |
JUNE_LOG_LEVEL | optionnel | La 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
| outil | ce que votre agent obtient |
|---|---|
june_answer | Une réponse citée et fondée issue du graphe — s'abstient plutôt que de deviner |
june_search | Preuves classées pour une requête (prend en charge le multi-saut) |
june_context | Un pack de contexte assemblé sous un budget de jetons |
june_neighborhood | Le graphe autour d'un nœud |
june_subgraph | Une exportation de sous-graphe bornée |
june_remember | Écrire un fait/une note dans le graphe (devient immédiatement accessible et citable) |
june_ingest | Ingestion structurée de nœuds/arêtes |
june_enumerate | TOUS les nœuds correspondant à un prédicat — liste complète par rappel "lister TOUS les X" (pas top-k) |
june_ingest_file | Té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_enrich | Pro : ré-extraction en arrière-plan du canvas avec le moteur plus riche (idempotent ; tâche + sondage ; 403 sur gratuit) |
june_resolve | Maintenance : 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.