fix: honour --palace flag in mcp_server
Parse --palace before initialising module-level singletons so that both ChromaDB and KnowledgeGraph use the correct palace directory. When --palace is provided the user is requesting an isolated palace; KG must co-locate with ChromaDB under that path, not fall back to the global default (~/.mempalace/knowledge_graph.sqlite3).
This commit is contained in:
+20
-3
@@ -2,7 +2,7 @@
|
|||||||
"""
|
"""
|
||||||
MemPalace MCP Server — read/write palace access for Claude Code
|
MemPalace MCP Server — read/write palace access for Claude Code
|
||||||
================================================================
|
================================================================
|
||||||
Install: claude mcp add mempalace -- python -m mempalace.mcp_server
|
Install: claude mcp add mempalace -- python -m mempalace.mcp_server [--palace /path/to/palace]
|
||||||
|
|
||||||
Tools (read):
|
Tools (read):
|
||||||
mempalace_status — total drawers, wing/room breakdown
|
mempalace_status — total drawers, wing/room breakdown
|
||||||
@@ -17,6 +17,8 @@ Tools (write):
|
|||||||
mempalace_delete_drawer — remove a drawer by ID
|
mempalace_delete_drawer — remove a drawer by ID
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
import sys
|
import sys
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
@@ -31,12 +33,27 @@ import chromadb
|
|||||||
|
|
||||||
from .knowledge_graph import KnowledgeGraph
|
from .knowledge_graph import KnowledgeGraph
|
||||||
|
|
||||||
_kg = KnowledgeGraph()
|
|
||||||
|
|
||||||
logging.basicConfig(level=logging.INFO, format="%(message)s", stream=sys.stderr)
|
logging.basicConfig(level=logging.INFO, format="%(message)s", stream=sys.stderr)
|
||||||
logger = logging.getLogger("mempalace_mcp")
|
logger = logging.getLogger("mempalace_mcp")
|
||||||
|
|
||||||
|
|
||||||
|
def _parse_args():
|
||||||
|
parser = argparse.ArgumentParser(description="MemPalace MCP Server")
|
||||||
|
parser.add_argument(
|
||||||
|
"--palace",
|
||||||
|
metavar="PATH",
|
||||||
|
help="Path to the palace directory (overrides config file and env var)",
|
||||||
|
)
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
_args = _parse_args()
|
||||||
|
|
||||||
|
if _args.palace:
|
||||||
|
os.environ["MEMPALACE_PALACE_PATH"] = os.path.abspath(_args.palace)
|
||||||
|
|
||||||
_config = MempalaceConfig()
|
_config = MempalaceConfig()
|
||||||
|
_kg = KnowledgeGraph(db_path=os.path.join(_config.palace_path, "knowledge_graph.sqlite3"))
|
||||||
|
|
||||||
|
|
||||||
def _get_collection(create=False):
|
def _get_collection(create=False):
|
||||||
|
|||||||
Reference in New Issue
Block a user