Junê (june-mcp)
ทางการมอบความทรงจำให้เอเจนต์ของคุณ: ความทรงจำกราฟความรู้ที่ใช้ร่วมกัน มีการอ้างอิง และแยกตามผู้เช่า สำหรับโฮสต์ MCP ใดๆ คำตอบที่มีพื้นฐานจากเอนด์พอยต์ June แบบ local-first — งดตอบแทนที่จะเดา
คุณทำอะไรได้บ้างด้วย 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 ใดก็ได้ มีสามวิธีที่จะมีหนึ่ง:
- แอป Junê desktop (local-first) รัน แอป Junê แล้วเชื่อมต่อกับเอนจินท้องถิ่น — ไฟล์ กราฟ และคีย์ของคุณอยู่ในเครื่องของคุณ
- บริการ June ของคุณเอง ลูกค้า Pro/Team ที่รันแพ็กเกจเอนจิน
june-localชี้JUNE_BASE_URLไปที่เซิร์ฟเวอร์ของตัวเอง - โฮสต์ (Team) ชี้ไปที่ปลายทางพื้นที่ทำงาน June ที่โฮสต์ของคุณด้วย API key จากคอนโซลของคุณ
การกำหนดค่า
เซิร์ฟเวอร์เป็นแบบ fail-closed: มันปฏิเสธที่จะเริ่มทำงานเว้นแต่ว่ารู้ว่าจะเชื่อมต่อที่ไหนและเป็นใคร และบอก ทุกอย่าง ที่ขาดหายไปในข้อความเดียว (ไม่ใช่ทีละข้อผิดพลาด)
| env | จำเป็น | ความหมาย |
|---|---|---|
JUNE_BASE_URL | ✅ | ปลายทาง June ของคุณ เช่น http://localhost:8000 |
JUNE_CANVAS | ✅ | canvas (พื้นที่ทำงาน) ที่จะผูกการเชื่อมต่อนี้ — เป็น ชื่อ (work) หรือ canvas id ชื่อจะถูกแปลงเป็น id ตอนเริ่มต้น; ชื่อที่กำกวมจะ fail closed |
JUNE_CANVAS_CREATE | ไม่บังคับ | 1 สร้าง canvas ที่ระบุชื่อในการรันครั้งแรกถ้ายังไม่มี (ปฏิเสธในโหมด read-only) |
JUNE_API_KEY | ✅ | June 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_enrich | Pro: การแยกข้อมูลใหม่เบื้องหลังของ 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 — ตัวเชื่อมต่อนี้เป็นส่วนเปิด โดยการออกแบบ