diff --git a/memory_server.py b/memory_server.py deleted file mode 100644 index 3236e5c..0000000 --- a/memory_server.py +++ /dev/null @@ -1,84 +0,0 @@ -import json -import os -from datetime import datetime -from fastmcp import MCP, Tool - -DATA_FILE = "memory_store.json" - -class MemoryStore: - def __init__(self): - if not os.path.exists(DATA_FILE): - with open(DATA_FILE, "w", encoding="utf-8") as f: - json.dump({}, f) - with open(DATA_FILE, "r", encoding="utf-8") as f: - self.store = json.load(f) - - def _save(self): - with open(DATA_FILE, "w", encoding="utf-8") as f: - json.dump(self.store, f, ensure_ascii=False, indent=2) - - def _key(self, key: str, namespace: str = None) -> str: - return f"{namespace}:{key}" if namespace else key - - def save(self, key: str, value: str): - self.store[self._key(key)] = {"value": value, "timestamp": datetime.utcnow().isoformat()} - self._save() - - def get(self, key: str) -> str: - return self.store.get(self._key(key), {}).get("value") - - def delete(self, key: str): - self.store.pop(self._key(key), None) - self._save() - - def list_keys(self): - return list(self.store.keys()) - - def save_with_namespace(self, namespace: str, key: str, value: str): - self.store[self._key(key, namespace)] = {"value": value, "timestamp": datetime.utcnow().isoformat()} - self._save() - - def get_by_namespace(self, namespace: str, key: str) -> str: - return self.store.get(self._key(key, namespace), {}).get("value") - -store = MemoryStore() - -@Tool(name="save", description="Save a value under a key") -def save_tool(args): - store.save(args["key"], args["value"]) - return f"Saved {args['key']}" - -@Tool(name="get", description="Get value by key") -def get_tool(args): - val = store.get(args["key"]) - return val if val is not None else "Key not found" - -@Tool(name="delete", description="Delete a key") -def delete_tool(args): - store.delete(args["key"]) - return f"Deleted {args['key']}" - -@Tool(name="list_keys", description="List all keys") -def list_keys_tool(_): - return ", ".join(store.list_keys()) or "No keys" - -@Tool(name="save_with_namespace", description="Save value under key in namespace") -def save_ns_tool(args): - store.save_with_namespace(args["namespace"], args["key"], args["value"]) - return f"Saved {args['namespace']}:{args['key']}" - -@Tool(name="get_by_namespace", description="Get value by key in namespace") -def get_ns_tool(args): - val = store.get_by_namespace(args["namespace"], args["key"]) - return val if val is not None else "Key not found" - -mcp = MCP() -mcp.register_tool(save_tool) -mcp.register_tool(get_tool) -mcp.register_tool(delete_tool) -mcp.register_tool(list_keys_tool) -mcp.register_tool(save_ns_tool) -mcp.register_tool(get_ns_tool) - -if __name__ == "__main__": - mcp.run(transport="stdio")