货币兑换服务

一个基于Node.js的货币兑换服务器,提供俄罗斯中央银行(CBR)的货币汇率和货币转换工具,支持通过Model Context Protocol(MCP)进行访问。

  • by cloud-ru
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 cloud-ru/evo-container-apps-currency-exchange-mcp-server-lab

使用说明

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 start

Docker

Build and run the server in Docker:

yarn docker:build
yarn docker:run

MCP ресурсы и инструменты

  • rates://latest: Возвращает последние курсы валют ЦБР (JSON)
  • convert: Конвертирует заданную сумму из указанной валюты в RUB
    • Вход: { from: "USD", amount: 100 }
    • Выход: { from: "USD", to: "RUB", input: 100, rate: 90.5, result: 9050 }

Деплой в Artifact Registry

Для публикации образа в Artifact Registry выполните следующие шаги:

  1. Соберите Docker-образ:
    yarn docker:build
    
  2. Задайте тег для образа (замените <REGISTRY-NAME> на имя вашего реестра):
    yarn docker:tag
    
  3. Отправьте образ в реестр:
    yarn docker:push
    

Важно: В командах выше <REGISTRY-NAME> необходимо заменить на фактическое имя вашего 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