From dbf6f2de45a2a13a68dde0b1a4c2e8bb24b7485e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D0=B8=D1=8F=20=D0=91=D0=B5=D1=80=D0=B4?= =?UTF-8?q?=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=D0=B0?= Date: Thu, 28 May 2026 08:34:19 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20=20memory=5Fserver.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- memory_server.py | 56 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 memory_server.py diff --git a/ memory_server.py b/ memory_server.py new file mode 100644 index 0000000..872e852 --- /dev/null +++ b/ memory_server.py @@ -0,0 +1,56 @@ +import asyncio +from fastmcp import FastMCP +from typing import Any + +# Внутреннее хранилище памяти +memory_store: dict[str, Any] = {} +namespace_store: dict[str, dict[str, Any]] = {} + +mcp = FastMCP("memory_server") + + +@mcp.tool() +def save(key: str, value: str) -> str: + """Сохраняет значение по ключу.""" + memory_store[key] = value + return f"Значение сохранено под ключом '{key}'." + + +@mcp.tool() +def get(key: str) -> str | None: + """Возвращает значение по ключу. Если ключ не найден, возвращает None.""" + return memory_store.get(key) + + +@mcp.tool() +def delete(key: str) -> str: + """Удаляет значение по ключу.""" + if key in memory_store: + del memory_store[key] + return f"Ключ '{key}' удалён." + return f"Ключ '{key}' не найден." + + +@mcp.tool() +def list_keys() -> dict[str, list[str]]: + """Возвращает список всех сохранённых ключей.""" + return {"keys": list(memory_store.keys())} + + +@mcp.tool() +def save_with_namespace(namespace: str, key: str, value: str) -> str: + """Сохраняет значение в указанном пространстве имён.""" + ns = namespace_store.setdefault(namespace, {}) + ns[key] = value + return f"Значение сохранено под ключом '{key}' в пространстве имён '{namespace}'." + + +@mcp.tool() +def get_by_namespace(namespace: str, key: str) -> str | None: + """Получает значение из указанного пространства имён.""" + ns = namespace_store.get(namespace, {}) + return ns.get(key) + + +if __name__ == "__main__": + mcp.run() \ No newline at end of file