Memlord

ทางการ

เซิร์ฟเวอร์หน่วยความจำ MCP ที่โฮสต์เอง สำหรับการใช้งานส่วนตัวและทีม

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

คุณทำอะไรได้บ้างด้วย Memlord MCP?

  • จัดเก็บความทรงจำพร้อมประเภทและแท็ก — ใช้ store_memory เพื่อบันทึกข้อเท็จจริง ความชอบ คำแนะนำ ข้อเสนอแนะ การตัดสินใจ หรือข้อมูลเชิงลึก โดยสามารถกำหนดวันหมดอายุได้
  • ค้นหาความทรงจำด้วยการดึงข้อมูลแบบไฮบริด — ใช้ retrieve_memory เพื่อค้นหาความทรงจำที่เกี่ยวข้องโดยใช้การค้นหาแบบข้อความเต็ม BM25 และการค้นหาเชิงความหมายแบบเวกเตอร์ร่วมกัน โดยส่งคืนข้อมูลสั้นๆ ที่กระชับ
  • เรียกคืนความทรงจำตามนิพจน์เวลา — ใช้ recall_memory เพื่อค้นหาความทรงจำที่ตรงกับคำค้นหาเวลาที่เป็นภาษาธรรมชาติ เช่น "สัปดาห์ที่แล้ว" หรือ "เมื่อวาน"
  • เรียกดูและกรองความทรงจำทั้งหมด — เรียก list_memories พร้อมตัวกรองประเภทและแท็กเพื่อแบ่งหน้าความทรงจำที่จัดเก็บไว้
  • รวมความทรงจำผ่านการฝัน — ใช้พรอมต์ dream เพื่อให้ผู้ช่วยตรวจสอบผู้สมัคร dream_report รวมรายการที่เกือบซ้ำกันเป็นข้อมูลเชิงลึก และปลดระวางความทรงจำที่ถูกแทนที่โดยไม่ทำลายข้อมูล

เอกสาร

เซิร์ฟเวอร์หน่วยความจำ MCP แบบโฮสต์เองพร้อมการค้นหาแบบไฮบริด BM25 + semantic รองรับโดย PostgreSQL +
pgvector

เซิร์ฟเวอร์หน่วยความจำ MCP แบบโฮสต์เองสำหรับการใช้งานส่วนตัวและทีม

License Python Version MCP Ruff MCP score

เริ่มต้นอย่างรวดเร็ววิธีการทำงานเครื่องมือ MCPการกำหนดค่าข้อกำหนดใบอนุญาต


✨ คุณสมบัติ

  • 🔍 การค้นหาแบบไฮบริด — BM25 (ข้อความเต็ม) + vector KNN (pgvector) ผสานผ่าน Reciprocal Rank Fusion
  • 📂 ผู้ใช้หลายคน — ผู้ใช้แต่ละคนเห็นเฉพาะความทรงจำของตนเอง; พื้นที่ทำงานสำหรับความรู้ทีมที่ใช้ร่วมกัน
  • 🛠️ เครื่องมือ MCP 11 รายการ — จัดเก็บ, ดึงข้อมูล, เรียกคืน, แสดงรายการ, ค้นหาตามแท็ก, รับ, อัปเดต, ลบ, ย้าย, แสดงรายการพื้นที่ทำงาน, รายงานการฝัน
  • 💤 การฝัน — ขั้นตอนการรวมข้อมูลแบบมีคำแนะนำ (พรอมต์ MCP dream + เครื่องมือ dream_report): ค้นหาความทรงจำที่เกือบซ้ำและขัดแย้งกัน, รวมเป็นข้อมูลเชิงลึกโดยไม่ทำลาย, ขับเคลื่อนโดย LLM ของไคลเอนต์
  • 🌐 เว็บ UI — เรียกดู, ค้นหา, แก้ไข และลบความทรงจำในเบราว์เซอร์; ส่งออก/นำเข้า JSON
  • 🔒 OAuth 2.1 — เซิร์ฟเวอร์การอนุญาตในกระบวนการเต็มรูปแบบ, เปิดใช้งานตลอดเวลา
  • 🐘 PostgreSQL — pgvector สำหรับ embeddings, tsvector สำหรับการค้นหาข้อความเต็ม
  • 📊 การเปิดเผยแบบก้าวหน้า — การค้นหาส่งคืนตัวอย่างย่อตามค่าเริ่มต้น; เรียก get_memory(name) เฉพาะสิ่งที่คุณต้องการ, ลดการใช้โทเค็น
  • 🔁 การขจัดรายการซ้ำ — ตรวจจับความทรงจำที่เกือบเหมือนกันโดยอัตโนมัติก่อนบันทึก, ป้องกันการสะสมของสัญญาณรบกวน

🆚 เปรียบเทียบ Memlord

MemlordOpenMemorymcp-memory-servicebasic-memory
การค้นหาBM25 + vector + RRFVector เท่านั้น (Qdrant)BM25 + vector + RRFBM25 + vector
EmbeddingsONNX ในเครื่อง, ไม่ต้องกำหนดค่าOpenAI ตามค่าเริ่มต้น; Ollama เป็นตัวเลือกONNX ในเครื่อง, ไม่ต้องกำหนดค่าFastEmbed ในเครื่อง
พื้นที่จัดเก็บPostgreSQL + pgvectorPostgreSQL + QdrantSQLite-vec / Cloudflare VectorizeSQLite + ไฟล์ Markdown
ผู้ใช้หลายคน❌ ผู้ใช้เดียวในทางปฏิบัติ⚠️ การกำหนดขอบเขต agent-ID, ไม่มีการแยก
พื้นที่ทำงาน✅ ใช้ร่วมกัน + ส่วนตัว, ลิงก์เชิญ⚠️ เนมสเปซ "Apps"⚠️ แท็ก + conversation_id✅ แฟล็กต่อโปรเจกต์
การรับรองความถูกต้อง✅ OAuth 2.1❌ ไม่มี (โฮสต์เอง)✅ OAuth 2.0 + PKCE
เว็บ UI✅ เรียกดู, แก้ไข, ส่งออก✅ แดชบอร์ด Next.js✅ UI สมบูรณ์, การแสดงกราฟ, คะแนนคุณภาพ❌ ในเครื่อง; คลาวด์เท่านั้น
เครื่องมือ MCP11515+~20
โฮสต์เอง✅ กระบวนการเดียว✅ Docker (3 คอนเทนเนอร์)
อินพุตหน่วยความจำด้วยตนเอง (จัดเก็บอย่างชัดเจน)สกัดอัตโนมัติโดย LLMด้วยตนเองด้วยตนเอง (บันทึก Markdown)
ประเภทหน่วยความจำข้อเท็จจริง / การตั้งค่า / คำแนะนำ / ข้อเสนอแนะ / การตัดสินใจ / ข้อมูลเชิงลึกข้อเท็จจริงที่สกัดอัตโนมัติการสังเกต + ลิงก์วิกิ
การค้นหาตามเวลา✅ วันที่ภาษาธรรมชาติ⚠️ REST เท่านั้น, ไม่ใช่ในเครื่องมือ MCP✅ recent_activity
ประสิทธิภาพโทเค็น✅ การเปิดเผยแบบก้าวหน้า✅ build_context traversal
นำเข้า / ส่งออก✅ JSON✅ ZIP (JSON + JSONL)✅ Markdown (อ่านได้โดยมนุษย์)
ใบอนุญาตAGPL-3.0 / เชิงพาณิชย์Apache 2.0Apache 2.0AGPL-3.0

จุดเด่นที่แท้จริงของคู่แข่ง:

  • OpenMemory — สกัดความทรงจำจากข้อความสนทนาดิบโดยอัตโนมัติ; ไม่ต้องตัดสินใจว่าจะจัดเก็บอะไรด้วยตนเอง; นำเข้า/ส่งออกที่ดี
  • mcp-memory-service — เว็บ UI สมบูรณ์ยิ่งขึ้น (การแสดงกราฟ, การให้คะแนนคุณภาพ, 8 แท็บ); ใบอนุญาตที่อนุญาตมากกว่า (Apache 2.0); ตัวเลือกการขนส่งหลายแบบ (stdio, SSE, HTTP)
  • basic-memory — ความทรงจำเป็นไฟล์ Markdown ที่อ่านได้โดยมนุษย์ คุณสามารถแก้ไข, ควบคุมเวอร์ชัน, และอ่านได้โดยไม่ต้องใช้เซิร์ฟเวอร์; ลิงก์เอนทิตีสไตล์วิกิสร้างกราฟความรู้ในเครื่อง; เครื่องมือ MCP ~20 รายการ

เมื่อใดควรเลือก Memlord:

  • คุณต้องการ embeddings ในเครื่องที่ไม่ต้องกำหนดค่า — โมเดล ONNX มาพร้อมกับเซิร์ฟเวอร์, ไม่ต้องใช้ Ollama หรือ API ภายนอก
  • คุณใช้งาน เซิร์ฟเวอร์ทีมผู้ใช้หลายคน พร้อมการรับรองความถูกต้อง OAuth 2.1 ที่เหมาะสมและพื้นที่ทำงานแบบเชิญ
  • คุณต้องการ ฐานข้อมูลระดับการผลิต (PostgreSQL) ที่ปรับขนาดได้เกินกว่า SQLite ของเครื่องเดียว
  • คุณจัดการความทรงจำ อย่างชัดเจน — จัดเก็บสิ่งที่สำคัญ, มีประเภทและแท็ก, ไม่ใช่ทุกสิ่งที่ LLM ตัดสินใจสกัด
  • คุณต้องการ เว็บ UI แบบโฮสต์เอง พร้อม CRUD เต็มรูปแบบและการส่งออก JSON, โดยไม่ต้องสมัครสมาชิกคลาวด์

🚀 เริ่มต้นอย่างรวดเร็ว

🐳 Docker

cp .env.example .env
docker compose up

เซิร์ฟเวอร์ HTTP (ผู้ใช้หลายคน, เว็บ UI, OAuth)

# Install dependencies
uv sync --dev

# Download ONNX model (~23 MB)
uv run python scripts/download_model.py

# Run migrations
alembic upgrade head

# Start the server
memlord

เปิด http://localhost:8000 สำหรับเว็บ UI ปลายทาง MCP อยู่ที่ /mcp


🔍 วิธีการทำงาน

แต่ละคำขอค้นหาทำงาน BM25 และ vector KNN แบบขนาน, จากนั้นรวมผลลัพธ์ผ่าน Reciprocal Rank Fusion:

flowchart TD
    Q([query]) --> BM25["BM25\nsearch_vector @@ websearch_to_tsquery"]
    Q --> EMB["ONNX embed\nparaphrase-multilingual-MiniLM-L12-v2 · 384d · local"]
    EMB --> KNN["KNN\nembedding <=> query_vector\ncosine distance"]
    BM25 --> RRF["RRF fusion\nscore = 1/(k+rank_bm25) + 1/(k+rank_vec)\nk=60"]
    KNN --> RRF
    RRF --> R([top-N results])

⚙️ การกำหนดค่า

การตั้งค่าทั้งหมดใช้คำนำหน้า MEMLORD_ ดู .env.example สำหรับรายการทั้งหมด

ตัวแปรค่าเริ่มต้นคำอธิบาย
MEMLORD_DB_URLpostgresql+asyncpg://postgres:postgres@localhost/memlordURL การเชื่อมต่อ PostgreSQL
MEMLORD_PORT8000พอร์ตเซิร์ฟเวอร์
MEMLORD_BASE_URLhttp://localhost:8000URL สาธารณะสำหรับ OAuth (โหมด HTTP)
MEMLORD_OAUTH_JWT_SECRETmemlord-dev-secret-please-changeความลับการลงนาม JWT (โหมด HTTP)

ตั้งค่า MEMLORD_BASE_URL เป็น URL สาธารณะของคุณและเปลี่ยน MEMLORD_OAUTH_JWT_SECRET ก่อนการปรับใช้


🛠️ เครื่องมือ MCP

เครื่องมือคำอธิบาย
store_memoryบันทึกความทรงจำ (idempotent ตามเนื้อหา); แจ้งเตือนเมื่อเกือบซ้ำ; expires_at เป็นตัวเลือก
retrieve_memoryการค้นหาแบบ semantic + ข้อความเต็มแบบไฮบริด; ส่งคืนตัวอย่างย่อตามค่าเริ่มต้น
recall_memoryค้นหาด้วยนิพจน์เวลาภาษาธรรมชาติ; ส่งคืนตัวอย่างย่อตามค่าเริ่มต้น
list_memoriesรายการแบบแบ่งหน้าพร้อมตัวกรองประเภท/แท็ก
search_by_tagการค้นหาแท็กแบบ AND/OR
get_memoryดึงข้อมูลความทรงจำเดี่ยวตามชื่อพร้อมเนื้อหาเต็ม (รวมที่หมดอายุ)
update_memoryอัปเดตเนื้อหา, ประเภท, แท็ก, ข้อมูลเมตา, หรือการหมดอายุตามชื่อ (และเปลี่ยนชื่อเป็นตัวเลือก)
delete_memoryลบตามชื่อ
move_memoryย้ายความทรงจำไปยังพื้นที่ทำงานอื่น
list_workspacesแสดงรายการพื้นที่ทำงานที่คุณเป็นสมาชิก (รวมถึงส่วนตัว)
dream_reportตัวเลือกการรวมแบบอ่านอย่างเดียว: คู่ความทรงจำที่คล้ายกัน, ความทรงจำที่หมดอายุและกำลังจะหมดอายุ

พรอมต์ MCP dream นำทาง LLM ของไคลเอนต์ผ่านขั้นตอนการรวมทั้งหมดเหนือ เอาต์พุต dream_report: จำแนกคู่ที่คล้ายกัน (ซ้ำ / เสริม / ขัดแย้ง), รวม เป็นความทรงจำ insight, เลิกใช้ความทรงจำที่ถูกแทนที่ผ่าน expires_at — ไม่เคยทำลาย

การจัดการพื้นที่ทำงาน (สร้าง, เชิญ, เข้าร่วม, ออก) จัดการผ่านเว็บ UI


💻 ข้อกำหนดของระบบ

  • Python 3.12
  • PostgreSQL ≥ 15 พร้อมส่วนขยาย pgvector
  • uv — ตัวจัดการแพ็คเกจ Python

👨‍💻 การพัฒนา

pyright src/           # type check
ruff format .          # format
pytest                 # run tests
alembic-autogen-check  # verify migrations are up to date

📄 ใบอนุญาต

Memlord มีใบอนุญาตคู่:

  • AGPL-3.0 — ฟรีสำหรับการใช้งานโอเพนซอร์ส หากคุณเรียกใช้เวอร์ชันที่แก้ไขเป็นบริการเครือข่าย คุณต้องเผยแพร่ซอร์สโค้ดของคุณ
  • ใบอนุญาตเชิงพาณิชย์ — สำหรับการปรับใช้ที่เป็นกรรมสิทธิ์หรือแบบปิด ติดต่อ sergey@memlord.com หรือ dmitry@memlord.com เพื่อซื้อ