# MCP‑сервер для управления памятью агента ## Описание проекта MCP (Memory Control Protocol) – это протокол, позволяющий удалённо управлять памятью агентов в распределённых системах. Данный репозиторий содержит реализацию **MCP‑сервера**, который: - принимает команды от клиентов по TCP/IP; - обрабатывает запросы на чтение/запись памяти агента; - поддерживает простую аутентификацию и логирование. Сервер написан на Python 3.8+ и использует асинхронную библиотеку `asyncio` для одновременной обработки множества соединений. ## Структура проекта ``` mcp_server/ ├── mcp_server.py # Основной серверный скрипт ├── client_example.py # Пример клиента, демонстрирующий работу с сервером ├── requirements.txt # Список зависимостей └── README.md # Это файл ``` ## Установка зависимостей ```bash # Создайте виртуальное окружение (рекомендуется) python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate # Установите зависимости pip install -r requirements.txt ``` `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 ``` Клиент демонстрирует: 1. Подключение к серверу; 2. Отправку команды `SET key value`; 3. Чтение значения через команду `GET key`; 4. Вывод результата в консоль. ## Пример использования ```python # client_example.py import asyncio import argparse async def main(host, port): reader, writer = await asyncio.open_connection(host, port) # Установим значение writer.write(b"SET counter 42\n") await writer.drain() print(await reader.readline()) # OK # Получим значение writer.write(b"GET counter\n") await writer.drain() print(await reader.readline()) # 42 writer.close() await writer.wait_closed() if __name__ == "__main__": parser = argparse.ArgumentParser(description="MCP client example") parser.add_argument("--host", default="127.0.0.1") parser.add_argument("--port", type=int, default=9000) args = parser.parse_args() asyncio.run(main(args.host, args.port)) ``` ## Тесты Для запуска тестов (если они добавлены) используйте: ```bash pytest tests/ ``` ## Лицензия MIT License – см. файл `LICENSE`. --- Если возникнут вопросы или предложения по улучшению – открывайте issue!