diff --git a/src/claude_memory/mcp_server.py b/src/claude_memory/mcp_server.py index 5758274..0a105a7 100644 --- a/src/claude_memory/mcp_server.py +++ b/src/claude_memory/mcp_server.py @@ -600,19 +600,11 @@ class MemoryServer: try: for line in sys.stdin: line = line.strip() - if not line: + if not line or line.startswith("Content-Length:"): continue try: message = json.loads(line) - except json.JSONDecodeError as e: - print( - json.dumps({ - "jsonrpc": "2.0", - "id": None, - "error": {"code": -32700, "message": f"Parse error: {e}"}, - }), - flush=True, - ) + except json.JSONDecodeError: continue response = self.process_message(message) if response is not None: @@ -623,6 +615,11 @@ class MemoryServer: def main() -> None: + # Suppress all stderr output — MCP clients (e.g. Claude Code) may treat + # any stderr as a fatal error and refuse to load the server. + sys.stderr = open(os.devnull, "w") + logging.disable(logging.CRITICAL) + server = MemoryServer() server.run() diff --git a/src/claude_memory/sync.py b/src/claude_memory/sync.py index 2c9b027..82409ad 100644 --- a/src/claude_memory/sync.py +++ b/src/claude_memory/sync.py @@ -87,14 +87,7 @@ class SyncEngine: return self._last_sync_success def start(self) -> None: - """Run initial sync (blocking), then start background thread.""" - try: - self._sync_once() - self._last_sync_success = True - except Exception: - logger.warning("Initial sync failed, starting in offline mode") - self._last_sync_success = False - + """Start background sync thread (non-blocking).""" self._thread = threading.Thread(target=self._sync_loop, daemon=True) self._thread.start()