# 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!