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:
Hsu Hsiuwei
2026-04-08 23:58:45 +08:00
parent 71736a3f4f
commit 3d68c4127d
+20 -3
View File
@@ -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):