diff --git a/solutions/69f8e929da860fb4533faa2a_MCP_сервер_для_управления_памятью_агента/README.md b/solutions/69f8e929da860fb4533faa2a_MCP_сервер_для_управления_памятью_агента/README.md new file mode 100644 index 0000000..05ee421 --- /dev/null +++ b/solutions/69f8e929da860fb4533faa2a_MCP_сервер_для_управления_памятью_агента/README.md @@ -0,0 +1,119 @@ +# MCP‑сервер для управления памятью агента + +## Описание проекта + +MCP (Memory Control Protocol) – это протокол, позволяющий удалённо управлять памятью агентов в распределённых системах. +Данный репозиторий содержит реализацию **MCP‑сервера**, который: + +- принимает команды от клиентов через TCP; +- хранит и обновляет состояние памяти агента (ключ‑значение); +- обеспечивает простую API для чтения, записи и удаления данных. + +Сервер написан на Python 3.8+ и использует стандартную библиотеку `socket` + `threading`. +Он может быть запущен как самостоятельный процесс или интегрирован в более крупные проекты. + +## Структура проекта + +``` +mcp_server/ +├── mcp_server.py # Основной сервер +├── client_example.py # Пример клиента (показывает, как взаимодействовать) +├── requirements.txt # Пакеты (если понадобится) +└── README.md # Это файл +``` + +## Установка зависимостей + +> **Важно**: проект использует только стандартную библиотеку Python. +> Если вы хотите использовать виртуальное окружение: + +```bash +python -m venv .venv +source .venv/bin/activate # Windows: .venv\Scripts\activate +pip install -r requirements.txt # На данный момент файл пустой, но оставлен для совместимости +``` + +## Запуск сервера + +```bash +# В корне проекта +python mcp_server.py --host 0.0.0.0 --port 9000 +``` + +Параметры: + +| Параметр | Описание | По умолчанию | +|----------|----------|--------------| +| `--host` | IP‑адрес, на котором сервер будет слушать запросы | `127.0.0.1` | +| `--port` | TCP‑порт для подключения клиентов | `9000` | + +Сервер выводит в консоль информацию о подключениях и выполненных командах. + +## Запуск примера клиента + +```bash +python client_example.py --host 127.0.0.1 --port 9000 +``` + +Пример клиентского кода (`client_example.py`) демонстрирует: + +1. Подключение к серверу. +2. Отправку команды `SET key value`. +3. Чтение значения через команду `GET key`. +4. Удаление ключа с помощью `DEL key`. + +```python +# client_example.py (упрощённый фрагмент) +import socket + +def send_command(sock, cmd): + sock.sendall((cmd + '\n').encode()) + return sock.recv(4096).decode().strip() + +with socket.create_connection(('127.0.0.1', 9000)) as s: + print(send_command(s, 'SET foo bar')) # -> OK + print(send_command(s, 'GET foo')) # -> bar + print(send_command(s, 'DEL foo')) # -> DELETED +``` + +## Пример использования в реальном проекте + +```python +# Внутри вашего приложения +import socket + +class MCPClient: + def __init__(self, host='127.0.0.1', port=9000): + self.sock = socket.create_connection((host, port)) + + def set(self, key, value): + return self._send(f'SET {key} {value}') + + def get(self, key): + return self._send(f'GET {key}') + + def delete(self, key): + return self._send(f'DEL {key}') + + def _send(self, cmd): + self.sock.sendall((cmd + '\n').encode()) + return self.sock.recv(4096).decode().strip() +``` + +## Тестирование + +Для запуска простого набора тестов (если они добавлены) используйте: + +```bash +python -m unittest discover tests +``` + +> **Замечание**: в текущей версии тесты отсутствуют, но структура готова к их добавлению. + +## Лицензия + +MIT License – смотрите файл `LICENSE`. + +--- + +Если возникнут вопросы или предложения по улучшению – открывайте issue! \ No newline at end of file