Junê (june-mcp)
公式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.
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.
ドキュメント
june-mcp
エージェントに記憶を。 june-mcp は Junê 用の公式 MCP サーバーです。あらゆる MCP ホスト(Claude Desktop、Claude Code など)を June ナレッジグラフに接続し、あなたのエージェントが共有・引用・テナント分離されたメモリに対して 質問・検索・記憶 できるようにします。
このパッケージは薄く、ロジックを持たないコネクターです。取得、グラフ構築、応答はすべて、接続先の June エンドポイントで行われます。ここにエンジンコードはありません。そのため、一読で理解できるほど小さなサイズになっています。
Claude Desktop / Claude Code ──stdio──▶ june-mcp ──HTTPS──▶ your June endpoint
(graph · retrieval · answers)
インストール
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
June エンドポイントを指定する
june-mcp は任意の June サービスと通信します。利用方法は次の3つです。
- Junê デスクトップアプリ(ローカルファースト)。 Junê アプリ を実行し、ローカルエンジンに接続します。ファイル・グラフ・キーはすべて自分のマシンに残ります。
- 独自の June サービス。 Pro/Team のお客様で
june-localエンジンパッケージを実行している場合は、JUNE_BASE_URLを自社のサーバーに向けます。 - ホステッド(Team)。 コンソールの API キーを使って、ホステッドの June ワークスペースエンドポイントを指定します。
設定
サーバーは フェイルクローズド です。接続先と接続者を特定できない限り起動を拒否し、不足しているものを すべて 1つのメッセージで通知します(エラーが1つずつではありません)。
| 環境変数 | 必須 | 説明 |
|---|---|---|
JUNE_BASE_URL | ✅ | June エンドポイント(例:http://localhost:8000) |
JUNE_CANVAS | ✅ | この接続をバインドするキャンバス(ワークスペース)— 名前(work)またはキャンバス ID。名前は起動時に ID に解決され、曖昧な場合はフェイルクローズド |
JUNE_CANVAS_CREATE | 任意 | 1 は、初回実行時に指定された名前のキャンバスが存在しない場合に作成します(読み取り専用モードでは拒否) |
JUNE_API_KEY | ✅ | June API キー(JUNE_ALLOW_ANON=1 は、キーなしのローカル設定で明示的にオプトアウト) |
JUNE_LLM_KEY | 任意 | BYO LLM キー(引用付き回答用)— リクエストごとにヘッダーとして転送され、ログやサービス側への保存は一切行われません |
JUNE_READONLY | 任意 | 1 はすべての書き込みツールを非表示にし、拒否します(メモリは読み取り専用になります) |
JUNE_FILES_ROOT | 任意 | オプトインしたディレクトリエージェントが june_ingest_file 経由でファイルをアップロードできるようにします。未設定の場合はそのツールは存在しません |
JUNE_TIMEOUT_READ / JUNE_TIMEOUT_ANSWER | 任意 | 動詞ごとのタイムアウト(デフォルト 15 秒 / 120 秒) |
JUNE_LOG_LEVEL | 任意 | ログは設計上 stderr のみ — stdout は MCP ワイヤーです |
エージェントの前にチェックする
JUNE_BASE_URL=http://localhost:8000 JUNE_API_KEY=... JUNE_CANVAS=work june-mcp --doctor
ドクターは次の順序で検証します:設定 → サービス到達可能性 → キャンバス解決(キャンバス名 → ID、例:name "work" → 9147bee6-…)→ 検索シームの健全性 → ツールマニフェスト。各チェックは PASS/FAIL で表示され、対応するヒントが付きます(例:名前が見つからない場合は存在するキャンバスの一覧を表示し、JUNE_CANVAS_CREATE=1 を指摘します)。ドクターはすべてのチェックが成功した場合のみ 0 で終了します(それ以外は 1)。サーバー自体は設定エラー時に半接続の状態で起動せず、2 で終了します。まずドクターを実行してください。これにより、エージェントがサーバーに触れる前に、一般的な設定ミスをすべて検出できます。
Claude に接続する
Claude Desktop — claude_desktop_config.json にマージします(Settings → Developer):
{
"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
ホストを完全に再起動し(macOS では Cmd+Q)、サーバーに 10 個のツール が表示されていることを確認します(june_ingest_file を JUNE_FILES_ROOT 経由でオプトインすると 11 個になります)。
ツール
| ツール | エージェントが得られるもの |
|---|---|
june_answer | グラフからの根拠付き・引用付き回答 — 推測ではなく判断を控えます |
june_search | クエリに対するランク付けされたエビデンス(マルチホップ対応) |
june_context | トークン予算内で組み立てられたコンテキストパック |
june_neighborhood | 1ノードを中心としたグラフの取得 |
june_subgraph | 制限付きサブグラフのエクスポート |
june_remember | ファクト/メモをグラフに書き込む(即座に検索可能・引用可能になります) |
june_ingest | 構造化されたノード/エッジの取り込み |
june_enumerate | 述語に一致するすべてのノード — recall 完全な「すべての X を一覧表示」(top-k ではない) |
june_ingest_file | オペレーター承認済みフォルダーからローカルファイル(pdf/docx/xlsx/csv/html/md/images/audio)を1つアップロード — JUNE_FILES_ROOT を設定した場合のみ存在 |
june_enrich | Pro: リッチなエンジンでキャンバスのバックグラウンド再抽出(冪等; ジョブ + ポーリング; フリーでは 403) |
june_resolve | メンテナンス: 重複エンティティを可逆的な same_as エッジでマージ(サーバー側で実行; strong_only=false は Pro でセマンティック層を解放) |
説明はエージェント向けに書かれており(何 → いつ → 戻り値)、クランプされた入力は黙って切り捨てるのではなく、エージェントに 明示的 に通知されます。
Free vs Pro — june-pro タグ
june-mcp は全員向けの1つのパッケージであり、別の「Pro ビルド」はありません。Pro はエンドポイントのプロパティ であり、コネクターのプロパティではありません。Pro アクティベートされた June(アプリ内の Pro ライセンス、ホステッドワークスペースの Pro キー)に接続すると、同じツールが Pro グレードの結果をもたらします:すべての june_remember と june_ingest_file の書き込みは、自動的にリッチなエンティティ/エッジエンジンを実行し(結果はどの engine が実行されたかを報告)、june_resolve はセマンティックマッチングにアップグレードされ、june_enrich はアップグレード前にフリーフロアで書き込まれたメモリをバックフィルします。ターミナルには、現在どのワールドにいるかが表示されます:--doctor は edition 行を出力し、サーバーの起動バナーは接続をタグ付けします —
june-mcp: connected http://localhost:8000 canvas name "work" → 11d2… [june-pro]
タグはサービス自身の /v1/whoami(サーバー側で Pro ルートを制限する同じエンタイトルメント状態)から読み取られるため、実際に得られるものと矛盾することはありません。また表示専用です:エンタイトルメントは、クライアントが何を表示してもサービス側で強制されます。/v1/whoami を持たない古いサービスには、単にタグが表示されません。
セキュリティモデル
ツールサーフェスには キャンバス/ワークスペースパラメータはありません — ワークスペースは接続のコンテキストからサーバー側でバインドされ、フェイルクローズドです。テナント間の読み取りは、フェイルオープンになる可能性のある権限チェックではなく、クライアントからは 表現できません。JUNE_READONLY=1 は、読み取り専用のデプロイメントに2つ目のフェンスを追加します。BYO LLM キーは各回答リクエストにヘッダーとして乗り、サービスによって永続化やログ記録は一切行われません。
エラー
すべてのアップストリーム障害は、型付けされ、編集されたエラーペイロード(例外タイプ + HTTP ステータスのみから構築 — レスポンスボディからは構築しない)にマッピングされます。そのため、サーバーはエンドポイントが投げるあらゆるものから生き残り、エージェントにはクリーンで実行可能なメッセージが表示されます。
ライセンス
MIT。Junê エンジン自体は別のクローズドソース製品です。このコネクターは、設計上オープンな部分です。