evo-container-apps-currency-exchange-mcp-server-lab
Демнострационный Node.js сервер для предоставления курсов валют Центрального Банка России (ЦБР) и инструментов конвертации через Model Context Protocol (MCP). Создан с использованием TypeScript и Express, предоставляет эндпоинты для получения актуальных курсов валют и конвертации валют в российские рубли (RUB).
Возможности
- Получает ежедневные курсы валют от ЦБР (https://www.cbr-xml-daily.ru/daily.xml)
- Кэширует курсы на 1 час для снижения нагрузки
- Предоставляет MCP-совместимые эндпоинты для списка ресурсов и конвертации валют
- Защищен аутентификацией через Bearer токен
- Готов к Docker для простого развертывания
Структура проекта
.
├── src/
│ ├── auth.middleware.ts # Express middleware for Bearer token authentication
│ ├── cbr.service.ts # Fetches and caches CBR exchange rates
│ ├── config.ts # Loads environment variables (PORT, MCP_TOKEN)
│ ├── endpoints.ts # Registers Express endpoints for MCP
│ ├── mcp.server.ts # MCP server definition (resources/tools)
│ ├── mcp.ts # Main entry point, Express app setup
│ └── transport.manager.ts # Manages MCP session transports
├── dockerfile # Multi-stage Docker build
├── package.json # Project metadata and scripts
├── tsconfig.json # TypeScript configuration
└── README.md # Project documentationНачало работы
Предварительные требования
- Node.js 20+
Установка
yarn installПеременные окружения
MCP_TOKEN(обязательно): Bearer token for API authentication
Разработка
yarn devСборка
yarn buildЗапуск (Production)
yarn startDocker
Build and run the server in Docker:
yarn docker:build
yarn docker:runMCP ресурсы и инструменты
- rates://latest: Возвращает последние курсы валют ЦБР (JSON)
- convert: Конвертирует заданную сумму из указанной валюты в RUB
- Вход: { from: "USD", amount: 100 } - Выход: { from: "USD", to: "RUB", input: 100, rate: 90.5, result: 9050 }
Деплой в Artifact Registry
Для публикации образа в Artifact Registry выполните следующие шаги:
- Соберите Docker-образ:
yarn docker:build- Задайте тег для образа (замените `` на имя вашего реестра):
yarn docker:tag- Отправьте образ в реестр:
yarn docker:pushВажно: В командах выше ` необходимо заменить на фактическое имя вашего Artifact Registry. Например: crp12345`.Для автоматизации всех шагов используйте:
yarn deployДеплой в Cloud.ru Container Apps
Подробная инструкция по деплою сервера в Container Apps доступна по ссылке: Развертывание MCP-сервера в контейнере
Инструкция по созданию Artifact Registry
Подробная инструкция по созданию Artifact Registry доступна по ссылке: cloud.ru/docs/labs/services/topics/container-apps\_\_before-work
License
MIT license
