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_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.

文档

june-mcp

给你的智能体一个记忆。 june-mcpJunê 的官方 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 服务通信。有三种方式获得一个:

  1. Junê 桌面应用(本地优先)。 运行 Junê 应用 并连接到其本地引擎——你的文件、图谱和密钥都留在你的机器上。
  2. 你自己的 June 服务。 运行 june-local 引擎包的 Pro/Team 客户将 JUNE_BASE_URL 指向他们自己的服务器。
  3. 托管(Team)。 使用你控制台中的 API 密钥指向你托管的 June 工作区端点。

配置

服务器是**故障关闭(fail-closed)**的:除非它知道连接到何处以及以谁的身份连接,否则它拒绝启动,并一次性告诉你所有缺失的信息(而不是一次一个错误)。

env必需含义
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可选自带 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(设置 → 开发者):

{
  "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_FILES_ROOT 选择加入 june_ingest_file 时为 11 个)。

工具

工具你的智能体获得什么
june_answer来自图谱的、有根据的带引用回答——宁可弃权也不猜测
june_search针对查询的排序证据(支持多跳)
june_context在 token 预算内组装好的上下文包
june_neighborhood单个节点周围的图谱
june_subgraph有界的子图导出
june_remember将事实/笔记写入图谱(立即可检索 + 可引用)
june_ingest结构化节点/边摄入
june_enumerate匹配谓词的每个节点——完整的召回“列出所有 X”(不是 top-k)
june_ingest_file从操作员批准的文件夹上传一个本地文件(pdf/docx/xlsx/csv/html/md/images/audio)——仅在你设置 JUNE_FILES_ROOT 时存在
june_enrichPro: 使用更丰富的引擎在后台重新提取画布(幂等;任务 + 轮询;免费版返回 403)
june_resolve维护:通过可逆的 same_as 边合并重复实体(在服务端运行;strong_only=false 在 Pro 上解锁语义层)

描述是为智能体编写的(什么 → 何时 → 返回什么),每个被限制的输入都会醒目地反馈给智能体,而不会静默截断。

Free 与 Pro——june-pro 标签

june-mcp 是面向所有人的单一包;没有单独的“pro 构建”。Pro 是端点的属性,而不是连接器的属性:连接到已激活 Pro 的 June(应用中的 Pro 许可证、托管工作区上的 Pro 密钥),相同的工具就会带来 Pro 级结果:每次 june_rememberjune_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 为只读部署增加了第二道围栏。你自带的 LLM 密钥作为标头随每个回答请求传递,服务端从不持久化或记录它。

错误

每个上游故障都映射为类型化、脱敏的错误负载(仅由异常类型 + HTTP 状态构建——绝不来自响应体),因此服务器能承受端点抛出的任何情况,你的智能体会看到一个干净、可操作的消息。

许可证

MIT。Junê 引擎本身是一个独立的闭源产品——这个连接器是开放的部分,这是设计使然。