Добавлен memory_client.py

This commit is contained in:
2026-05-28 14:27:24 +00:00
parent 0a0883d774
commit 13fed8a000
+58 -3
View File
@@ -1,3 +1,58 @@
fastmcp==0.1.5 # библиотека для MCP‑серверов и клиентов
pydantic==2.7.4 # валидация данных (не используется напрямую, но указана)
python-dotenv==1.0.1 # загрузка переменных окружения
# memory_client.py
"""
Асинхронный клиент для тестирования работы MCP-сервера памяти.
Использует FastMCP Client и демонстрирует вызовы инструментов:
- save_with_namespace
- get_by_namespace
- list_keys
"""
from fastmcp import Client
import asyncio
async def main() -> None:
"""
Основная точка входа: создаём клиент, подключаемся к серверу,
вызываем инструменты и выводим результаты.
"""
# Создаём клиента, указывая путь к исполняемому файлу сервера
client = Client("python memory_server.py")
# Подключаемся к серверу (асинхронно)
await client.connect()
try:
# Сохраняем данные в namespace 'default'
result = await client.call_tool(
"save_with_namespace",
{"key": "username", "value": "Алексей", "namespace": "default"}
)
print(f"Сохранено: {result}")
# Получаем все записи из namespace 'default'
result = await client.call_tool(
"get_by_namespace",
{"namespace": "default"}
)
print("Данные namespace 'default':")
for item in result:
# В ответе ключ хранится как 'namespace:key', но в JSON
# сохраняется только значение и timestamp, поэтому выводим
# только полезную часть.
key = item.get("key", "")
value = item.get("value", "")
print(f" {key}: {value}")
# Получаем список ключей с подстрокой 'name'
keys = await client.call_tool(
"list_keys",
{"pattern": "*name"}
)
print(f"Ключи с 'name': {keys}")
finally:
# Закрываем соединение
await client.close()
if __name__ == "__main__":
asyncio.run(main())