From 3d68c4127dbf688c247da4487884ed7cd5de279c Mon Sep 17 00:00:00 2001 From: Hsu Hsiuwei Date: Wed, 8 Apr 2026 23:58:45 +0800 Subject: [PATCH 1/2] 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). --- mempalace/mcp_server.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/mempalace/mcp_server.py b/mempalace/mcp_server.py index 2169255..2ff13b3 100644 --- a/mempalace/mcp_server.py +++ b/mempalace/mcp_server.py @@ -2,7 +2,7 @@ """ 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): mempalace_status — total drawers, wing/room breakdown @@ -17,6 +17,8 @@ Tools (write): mempalace_delete_drawer — remove a drawer by ID """ +import argparse +import os import sys import json import logging @@ -31,12 +33,27 @@ import chromadb from .knowledge_graph import KnowledgeGraph -_kg = KnowledgeGraph() - logging.basicConfig(level=logging.INFO, format="%(message)s", stream=sys.stderr) 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() +_kg = KnowledgeGraph(db_path=os.path.join(_config.palace_path, "knowledge_graph.sqlite3")) def _get_collection(create=False): From c7896d3bb0ab1bef5b551f2242d7bf7a95e6e24e Mon Sep 17 00:00:00 2001 From: Hsu Hsiuwei Date: Thu, 9 Apr 2026 01:15:20 +0800 Subject: [PATCH 2/2] fix: preserve default KG path when --palace not passed When --palace is not explicitly provided, fall back to KnowledgeGraph() which uses DEFAULT_KG_PATH (~/.mempalace/knowledge_graph.sqlite3), preserving backward compatibility for existing users. --- mempalace/mcp_server.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mempalace/mcp_server.py b/mempalace/mcp_server.py index 2ff13b3..7956369 100644 --- a/mempalace/mcp_server.py +++ b/mempalace/mcp_server.py @@ -53,7 +53,10 @@ if _args.palace: os.environ["MEMPALACE_PALACE_PATH"] = os.path.abspath(_args.palace) _config = MempalaceConfig() -_kg = KnowledgeGraph(db_path=os.path.join(_config.palace_path, "knowledge_graph.sqlite3")) +if _args.palace: + _kg = KnowledgeGraph(db_path=os.path.join(_config.palace_path, "knowledge_graph.sqlite3")) +else: + _kg = KnowledgeGraph() def _get_collection(create=False):