Skip to main content
Glama
PROJECT_STRUCTURE.md8.56 kB
# Структура проекта MCP Server ## Обзор Проект MCP Server организован в модульную структуру, которая следует принципам SOLID, DRY и KISS. Каждый компонент имеет четкую ответственность и взаимодействует с другими компонентами через хорошо определенные интерфейсы. ## Структура директорий ``` myaiserv/ ├── app/ │ ├── core/ # Базовые компоненты и абстракции │ │ ├── base/ # Базовые абстрактные классы │ │ │ ├── component.py # Базовый компонент MCP │ │ │ ├── tool.py # Базовый класс инструмента │ │ │ ├── resource.py # Базовый класс ресурса │ │ │ ├── prompt.py # Базовый класс промпта │ │ │ └── observer.py # Паттерн наблюдатель │ │ ├── errors.py # Классы ошибок │ │ ├── factories/ # Фабрики для создания компонентов │ │ │ └── tool_factory.py │ │ └── base_*.py # Устаревшие базовые классы (будут удалены) │ ├── models/ # Модели данных │ │ ├── mcp/ # Модели MCP │ │ │ ├── enums.py # Перечисления │ │ │ ├── message.py # Модели сообщений │ │ │ ├── resource.py # Модели ресурсов │ │ │ ├── tool.py # Модели инструментов │ │ │ └── ... │ │ ├── graphql.py # GraphQL модели │ │ └── *.py # Другие модели │ ├── services/ # Сервисы │ │ └── mcp_service.py # Сервис MCP │ ├── tools/ # Инструменты │ │ ├── file/ # Файловые инструменты │ │ │ └── file_system_tool.py │ │ ├── weather/ # Погодные инструменты │ │ │ └── weather_tool.py │ │ ├── text/ # Текстовые инструменты │ │ │ ├── operations/ # Операции с текстом │ │ │ └── text_processor_tool.py │ │ ├── search/ # Поисковые инструменты │ │ │ ├── strategies/ # Стратегии поиска │ │ │ └── search_tool.py │ │ └── registry.py # Регистрация инструментов │ ├── prompts/ # Промпты │ │ ├── prompts.py # Промпты для LLM │ │ ├── system_prompts.py # Системные промпты │ │ └── registry.py # Регистрация промптов │ ├── resources/ # Ресурсы │ │ ├── resources.py # Ресурсы для MCP │ │ └── registry.py # Регистрация ресурсов │ ├── storage/ # Хранилища данных │ │ ├── elasticsearch.py # Клиент Elasticsearch │ │ └── redis.py # Клиент Redis │ ├── utils/ # Утилиты │ │ ├── embeddings.py # Утилиты для эмбеддингов │ │ └── prompt_loader.py # Загрузчик промптов │ └── main.py # Точка входа └── docs/ # Документация ├── ARCHITECTURE.md # Архитектура проекта └── PROJECT_STRUCTURE.md # Структура проекта ``` ## Компоненты ### Core Пакет `core` содержит базовые абстрактные классы и интерфейсы, которые определяют основные компоненты MCP: - `MCPComponent`: Базовый класс для всех компонентов MCP - `MCPTool`: Базовый класс для инструментов - `MCPResource`: Базовый класс для ресурсов - `MCPPrompt`: Базовый класс для промптов - `Observable` и `Observer`: Реализация паттерна Наблюдатель Также в этом пакете находятся фабрики для создания компонентов: - `ToolFactory`: Фабрика для создания инструментов ### Models Пакет `models` содержит модели данных, используемые в проекте: - `mcp`: Модели для MCP (сообщения, ресурсы, инструменты, промпты) - `graphql.py`: Модели для GraphQL API - Другие модели для базы данных и бизнес-логики ### Services Пакет `services` содержит сервисы, которые предоставляют бизнес-логику: - `mcp_service.py`: Сервис для работы с MCP ### Tools Пакет `tools` содержит инструменты, которые могут быть использованы через MCP API: - `file`: Инструменты для работы с файловой системой - `weather`: Инструменты для получения информации о погоде - `text`: Инструменты для обработки текста - `search`: Инструменты для поиска - `registry.py`: Регистрация инструментов ### Prompts Пакет `prompts` содержит промпты, которые могут быть использованы для генерации сообщений для LLM: - `prompts.py`: Промпты для LLM - `system_prompts.py`: Системные промпты - `registry.py`: Регистрация промптов ### Resources Пакет `resources` содержит ресурсы, которые могут быть использованы инструментами и промптами: - `resources.py`: Ресурсы для MCP - `registry.py`: Регистрация ресурсов ### Storage Пакет `storage` содержит клиенты для хранилищ данных: - `elasticsearch.py`: Клиент Elasticsearch - `redis.py`: Клиент Redis ### Utils Пакет `utils` содержит утилиты, которые используются в проекте: - `embeddings.py`: Утилиты для эмбеддингов - `prompt_loader.py`: Загрузчик промптов ## Паттерны проектирования В проекте используются следующие паттерны проектирования: - **Factory Method**: Для создания инструментов, ресурсов и промптов - **Strategy**: Для реализации различных стратегий поиска и обработки текста - **Observer**: Для уведомления о изменениях в ресурсах - **Dependency Injection**: Для внедрения зависимостей в компоненты - **Registry**: Для регистрации и получения компонентов ## Принципы SOLID Проект следует принципам SOLID: - **Single Responsibility**: Каждый класс имеет единственную ответственность - **Open/Closed**: Классы открыты для расширения, но закрыты для модификации - **Liskov Substitution**: Подклассы могут заменять базовые классы - **Interface Segregation**: Интерфейсы разделены на более мелкие и специфичные - **Dependency Inversion**: Зависимости инвертированы через абстракции

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/eagurin/myaiserv'

If you have feedback or need assistance with the MCP directory API, please join our Discord server