REFACTORING-GUIDE.md•3.91 kB
# MCP Server Refactoring Guide
## Структура после рефакторинга
### 📁 Новая структура файлов:
```
src/
├── mcp-server.js # Основной MCP сервер (stdio)
├── streamable-http-wrapper.js # HTTP wrapper (упрощенный)
├── http-wrapper.js # HTTP wrapper (полный)
├── mcp-manager.js # Менеджер MCP соединения
└── handlers/
├── mcp-handler.js # Главный обработчик запросов
├── initialize.js # Обработка initialize
├── tools.js # Обработка tools/list и tools/call
├── resources.js # Обработка resources/list и resources/read
└── notifications.js # Обработка notifications и ping
```
### 🔧 Что было сделано:
#### 1. **Выделен MCP Manager** (`mcp-manager.js`)
- Управление MCP процессом
- Отправка запросов и обработка ответов
- Методы для tools и resources
#### 2. **Созданы специализированные обработчики:**
**`handlers/initialize.js`**
- Обработка `initialize` запроса
- Возврат capabilities и server info
**`handlers/tools.js`**
- `handleToolsList()` - список инструментов
- `handleToolsCall()` - вызов инструментов
**`handlers/resources.js`**
- `handleResourcesList()` - список ресурсов
- `handleResourcesRead()` - чтение ресурсов
**`handlers/notifications.js`**
- `handleNotificationsInitialized()` - уведомление об инициализации
- `handlePing()` - ping notification
**`handlers/mcp-handler.js`**
- Главный роутер запросов
- Маршрутизация по методам MCP
- Обработка HTTP методов (GET, POST, DELETE)
#### 3. **Упрощен основной файл** (`streamable-http-wrapper.js`)
- Только Express настройка
- Middleware и CORS
- Подключение обработчиков
- Graceful shutdown
### ✅ Преимущества рефакторинга:
1. **Модульность**: Каждый обработчик в отдельном файле
2. **Читаемость**: Код легче понимать и поддерживать
3. **Тестируемость**: Каждый модуль можно тестировать отдельно
4. **Расширяемость**: Легко добавлять новые обработчики
5. **Переиспользование**: Модули можно использовать в других проектах
### 🚀 Использование:
```bash
# Запуск рефакторированного сервера
node src/streamable-http-wrapper.js
# Тестирование
node test-streamable.js
node test-streamable-resources.js
node test-mcp-inspector-ping.js
```
### 📊 Результат:
- **Функциональность**: 100% сохранена
- **Производительность**: Без изменений
- **Совместимость**: Полная совместимость с MCP Inspector и Smithery
- **Код**: Более чистый и организованный
### 🔄 Миграция:
Старый код в `streamable-http-wrapper.js` (400+ строк) разделен на:
- `streamable-http-wrapper.js` (60 строк)
- `mcp-manager.js` (120 строк)
- `handlers/` (5 файлов, ~200 строк)
**Общее количество строк осталось примерно тем же, но код стал намного более организованным!**