From a5f8b37379c616bb73f6ad615465887c1fb0ee6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=AD=D0=BC=D0=B8=D0=BB=D1=8C=20=D0=90=D0=BC=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2?= Date: Mon, 25 May 2026 22:03:22 +0000 Subject: [PATCH] add memory_client.py --- memory_client.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 memory_client.py diff --git a/memory_client.py b/memory_client.py new file mode 100644 index 0000000..dfa41c7 --- /dev/null +++ b/memory_client.py @@ -0,0 +1,43 @@ +"""Клиент для тестирования MCP-сервера памяти.""" +from __future__ import annotations + +import asyncio +from pathlib import Path + +from fastmcp import Client + + +def _unwrap(result) -> object: + if hasattr(result, "data") and result.data is not None: + return result.data + if getattr(result, "structured_content", None): + return result.structured_content + return result + + +async def main() -> None: + # Эквивалент Client("python memory_server.py") при запуске из этой папки + server_path = Path(__file__).resolve().parent / "memory_server.py" + + async with Client(server_path) as client: + saved = await client.call_tool( + "save_with_namespace", + {"key": "username", "value": "Алексей", "namespace": "default"}, + ) + print(f"Сохранено: {_unwrap(saved)}") + + items = await client.call_tool( + "get_by_namespace", + {"namespace": "default"}, + ) + data = _unwrap(items) + print("Данные namespace 'default':") + for item in data: + print(f" {item['key']}: {item['value']}") + + keys = await client.call_tool("list_keys", {"pattern": "*name"}) + print(f"Ключи с 'name': {_unwrap(keys)}") + + +if __name__ == "__main__": + asyncio.run(main())