Добавлен memory_client.py
This commit is contained in:
+58
-3
@@ -1,3 +1,58 @@
|
|||||||
fastmcp==0.1.5 # библиотека для MCP‑серверов и клиентов
|
# memory_client.py
|
||||||
pydantic==2.7.4 # валидация данных (не используется напрямую, но указана)
|
"""
|
||||||
python-dotenv==1.0.1 # загрузка переменных окружения
|
Асинхронный клиент для тестирования работы 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())
|
||||||
Reference in New Issue
Block a user