Junê (june-mcp)

ทางการ

มอบความทรงจำให้เอเจนต์ของคุณ: ความทรงจำกราฟความรู้ที่ใช้ร่วมกัน มีการอ้างอิง และแยกตามผู้เช่า สำหรับโฮสต์ MCP ใดๆ คำตอบที่มีพื้นฐานจากเอนด์พอยต์ June แบบ local-first — งดตอบแทนที่จะเดา

GitHubลองใช้ MCP นี้ผู้สนับสนุน

คุณทำอะไรได้บ้างด้วย Junê (june MCP?

  • การตอบที่อ้างอิงจากหน่วยความจำ — ให้ AI ของคุณตอบคำถามโดยใช้ june_answer ซึ่งจะส่งคืนคำตอบที่อ้างอิงและมีแหล่งที่มาจากกราฟความรู้ และจะงดตอบแทนการเดา
  • ค้นหาและสำรวจกราฟ — ใช้ june_search สำหรับหลักฐานแบบหลายขั้นตอนที่จัดอันดับ, june_neighborhood เพื่อตรวจสอบการเชื่อมต่อรอบโหนด, หรือ june_subgraph เพื่อส่งออกขอบเขตกราฟที่จำกัด
  • เขียนความทรงจำใหม่ — ให้เอเจนต์ของคุณบันทึกข้อเท็จจริงหรือบันทึกย่อด้วย june_remember เพื่อให้สามารถดึงข้อมูลและอ้างอิงได้ทันที หรือนำเข้าโหนด/ขอบแบบมีโครงสร้างผ่าน june_ingest
  • แสดงรายการทุกอย่างที่ตรงกับเพรดิเคต — ขอการแจกแจงที่ครบถ้วนของทุกโหนดด้วย june_enumerate ซึ่งส่งคืนทุกการจับคู่แทนที่จะเป็นตัวอย่าง top-k
  • นำเข้าไฟล์ท้องถิ่น — อัปโหลดเอกสารที่รองรับ (PDF, DOCX, XLSX, CSV, HTML, MD, รูปภาพ, เสียง) จากโฟลเดอร์ที่อนุมัติโดยใช้ june_ingest_file เมื่อกำหนดค่า JUNE_FILES_ROOT แล้ว
  • รวมเอนทิตีที่ซ้ำกัน — รัน june_resolve เพื่อรวมเอนทิตีที่ซ้ำกันผ่านขอบ same_as ที่ย้อนกลับได้ พร้อมชั้นความหมายเสริมบนปลายทาง Pro

เอกสาร

june-mcp

ให้เอเจนต์ของคุณมีความทรงจำ june-mcp คือเซิร์ฟเวอร์ MCP อย่างเป็นทางการของ Junê — มันเชื่อมต่อโฮสต์ MCP ใดๆ (Claude Desktop, Claude Code และอื่นๆ) เข้ากับ knowledge graph ของ June เพื่อให้เอเจนต์ของคุณสามารถ ถาม, ค้นหา และ จดจำ กับหน่วยความจำที่ใช้ร่วมกัน มีการอ้างอิง และแยกตาม tenant

แพ็กเกจนี้เป็นตัวเชื่อมต่อที่บางและไม่มีตรรกะ (zero-logic): การดึงข้อมูล การประกอบกราฟ และการตอบทั้งหมดเกิดขึ้นที่ปลายทาง 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ê desktop (local-first) รัน แอป Junê แล้วเชื่อมต่อกับเอนจินท้องถิ่น — ไฟล์ กราฟ และคีย์ของคุณอยู่ในเครื่องของคุณ
  2. บริการ June ของคุณเอง ลูกค้า Pro/Team ที่รันแพ็กเกจเอนจิน june-local ชี้ JUNE_BASE_URL ไปที่เซิร์ฟเวอร์ของตัวเอง
  3. โฮสต์ (Team) ชี้ไปที่ปลายทางพื้นที่ทำงาน June ที่โฮสต์ของคุณด้วย API key จากคอนโซลของคุณ

การกำหนดค่า

เซิร์ฟเวอร์เป็นแบบ fail-closed: มันปฏิเสธที่จะเริ่มทำงานเว้นแต่ว่ารู้ว่าจะเชื่อมต่อที่ไหนและเป็นใคร และบอก ทุกอย่าง ที่ขาดหายไปในข้อความเดียว (ไม่ใช่ทีละข้อผิดพลาด)

envจำเป็นความหมาย
JUNE_BASE_URLปลายทาง June ของคุณ เช่น http://localhost:8000
JUNE_CANVAScanvas (พื้นที่ทำงาน) ที่จะผูกการเชื่อมต่อนี้ — เป็น ชื่อ (work) หรือ canvas id ชื่อจะถูกแปลงเป็น id ตอนเริ่มต้น; ชื่อที่กำกวมจะ fail closed
JUNE_CANVAS_CREATEไม่บังคับ1 สร้าง canvas ที่ระบุชื่อในการรันครั้งแรกถ้ายังไม่มี (ปฏิเสธในโหมด read-only)
JUNE_API_KEYJune API key ของคุณ (JUNE_ALLOW_ANON=1 เลือกไม่ใช้อย่างชัดเจนสำหรับการตั้งค่าแบบ local ที่ไม่มีคีย์)
JUNE_LLM_KEYไม่บังคับBring-your-own LLM key สำหรับคำตอบที่มีการอ้างอิง — ส่งต่อต่อคำขอเป็น header, ไม่ถูก log, ไม่ถูกเก็บในบริการ
JUNE_READONLYไม่บังคับ1 ซ่อนและปฏิเสธเครื่องมือเขียนทั้งหมด (หน่วยความจำกลายเป็น read-only)
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

doctor จะตรวจสอบตามลำดับ: config → บริการเข้าถึงได้ → การแปลง canvas (ชื่อ canvas ของคุณ → id ของมัน เช่น name "work" → 9147bee6-…) → search seam ทำงาน → รายการเครื่องมือ และพิมพ์ PASS/FAIL ต่อการตรวจสอบพร้อมคำใบ้ที่แมปไว้ (เช่น ชื่อที่หายไปจะแสดงรายการ canvas ที่มีอยู่จริงและชี้ไปที่ JUNE_CANVAS_CREATE=1) doctor จะออกด้วย 0 เฉพาะเมื่อการตรวจสอบทั้งหมดผ่าน (1 ในกรณีอื่น); ตัวเซิร์ฟเวอร์เองจะออกด้วย 2 เมื่อมีข้อผิดพลาด config แทนที่จะเริ่มทำงานแบบครึ่งๆ กลางๆ รัน doctor ก่อน; มันจับการตั้งค่าผิดทั่วไปทุกอย่างก่อนที่เอเจนต์ของคุณจะเห็นเซิร์ฟเวอร์

เชื่อมต่อกับ 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

รีสตาร์ทโฮสต์ทั้งหมด (Cmd+Q บน macOS) จากนั้นตรวจสอบว่าเซิร์ฟเวอร์แสดง 10 เครื่องมือ (11 เมื่อคุณเลือกใช้ june_ingest_file ผ่าน JUNE_FILES_ROOT)

เครื่องมือ

เครื่องมือสิ่งที่เอเจนต์ของคุณได้รับ
june_answerคำตอบที่อ้างอิงได้จากกราฟ — งดตอบแทนที่จะเดา
june_searchหลักฐานที่จัดอันดับสำหรับคำค้นหา (รองรับ multi-hop)
june_contextชุดบริบทที่ประกอบแล้วภายใต้งบประมาณ token
june_neighborhoodกราฟรอบโหนดเดียว
june_subgraphการส่งออก subgraph ที่จำกัดขอบเขต
june_rememberเขียนข้อเท็จจริง/บันทึกลงในกราฟ (ค้นหาได้และอ้างอิงได้ทันที)
june_ingestการรับข้อมูลโหนด/ขอบแบบมีโครงสร้าง
june_enumerateทุกโหนดที่ตรงกับ predicate — recall-complete "list ALL X" (ไม่ใช่ top-k)
june_ingest_fileอัปโหลดไฟล์ท้องถิ่นหนึ่งไฟล์ (pdf/docx/xlsx/csv/html/md/images/audio) จากโฟลเดอร์ที่ผู้ปฏิบัติงานอนุมัติ — มีอยู่เฉพาะเมื่อคุณตั้ง JUNE_FILES_ROOT
june_enrichPro: การแยกข้อมูลใหม่เบื้องหลังของ canvas ด้วยเอนจินที่สมบูรณ์กว่า (idempotent; job + poll; 403 บน free)
june_resolveการบำรุงรักษา: รวมเอนทิตีที่ซ้ำกันผ่านขอบ same_as ที่ย้อนกลับได้ (รันฝั่งเซิร์ฟเวอร์; strong_only=false ปลดล็อก semantic tier บน Pro)

คำอธิบายเขียนสำหรับเอเจนต์ (อะไร → เมื่อไหร่ → คืนอะไร) และอินพุตที่ถูกจำกัดทุกตัวจะถูก บันทึกกลับ ไปยังเอเจนต์อย่างเห็นได้ชัดแทนที่จะถูกตัดทอนอย่างเงียบๆ

ฟรี vs Pro — แท็ก june-pro

june-mcp เป็นแพ็กเกจเดียวสำหรับทุกคน; ไม่มี "pro build" แยกต่างหาก Pro เป็นคุณสมบัติของปลายทาง ไม่ใช่ตัวเชื่อมต่อ: เชื่อมต่อกับ June ที่เปิดใช้งาน Pro (ใบอนุญาต Pro ในแอป, คีย์ Pro บนพื้นที่ทำงานที่โฮสต์) และเครื่องมือเดียวกันจะให้ผลลัพธ์ระดับ Pro: ทุก june_remember และ june_ingest_file เขียนจะรันเอนจิน entity/edge ที่สมบูรณ์กว่าโดยอัตโนมัติ (ผลลัพธ์รายงานว่า engine ใดรันไป), june_resolve อัปเกรดเป็นการจับคู่ semantic และ june_enrich เติมเต็มความทรงจำที่เขียนบนระดับฟรีก่อนที่คุณจะอัปเกรด เทอร์มินัลแสดงว่าคุณอยู่ในโลกไหน: --doctor พิมพ์บรรทัด edition และแบนเนอร์เริ่มต้นของเซิร์ฟเวอร์ติดแท็กการเชื่อมต่อ —

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

แท็กถูกอ่านจาก /v1/whoami ของบริการเอง (สถานะสิทธิ์เดียวกันที่ควบคุมเส้นทาง Pro ฝั่งเซิร์ฟเวอร์) ดังนั้นมันไม่สามารถขัดแย้งกับสิ่งที่คุณได้รับจริง — และมันเป็นเพียงการแสดงผล: สิทธิ์ถูกบังคับใช้บนบริการไม่ว่าคลายต์ใดจะพิมพ์อะไร บริการเก่าที่ไม่มี /v1/whoami จะไม่แสดงแท็ก

โมเดลความปลอดภัย

พื้นผิวเครื่องมือไม่เปิดเผย พารามิเตอร์ canvas/พื้นที่ทำงาน — พื้นที่ทำงานถูกผูกฝั่งเซิร์ฟเวอร์จากบริบทการเชื่อมต่อของคุณ, fail-closed การอ่านข้าม tenant ไม่ใช่การตรวจสอบสิทธิ์ที่อาจเปิดกว้างได้; มัน ไม่สามารถแสดงได้ จากคลายต์ JUNE_READONLY=1 เพิ่มรั้วที่สองสำหรับการปรับใช้แบบ read-only คีย์ LLM ของคุณเองเดินทางกับคำขอตอบแต่ละครั้งเป็น header และไม่ถูกเก็บหรือบันทึกโดยบริการ

ข้อผิดพลาด

ความล้มเหลวจาก upstream ทุกครั้งจะถูกแมปเป็น payload ข้อผิดพลาดที่พิมพ์แล้วและถูกตัดข้อมูล (สร้างจากประเภท exception + HTTP status เท่านั้น — ไม่เคยจาก response bodies) ดังนั้นเซิร์ฟเวอร์จึงทนต่อทุกอย่างที่ปลายทางโยนมา และเอเจนต์ของคุณเห็นข้อความที่ชัดเจนและนำไปปฏิบัติได้

ใบอนุญาต

MIT เอนจิน Junê เองเป็นผลิตภัณฑ์แยกที่ปิด-source — ตัวเชื่อมต่อนี้เป็นส่วนเปิด โดยการออกแบบ