mcp-stocks-info-server
MOEX Stocks & News MCP Server is designed to provide up-to-date MOEX stock market data and financial news through Model Context Protocol (MCP) integration with large language models (LLMs). It offers real-time stock information, news analysis, and a suite of tools for market assessment with support for Docker and CI/CD workflows.
MOEX Stocks & News MCP Server
MCP (Model Context Protocol) сервер для доступа к данным о котировках акций на Московской бирже (MOEX) и финансовым новостям. Этот сервер предоставляет интерфейс для взаимодействия с LLM (Large Language Models) для получения актуальной информации о котировках и новостях.
Возможности
- Получение информации о котировках акций на MOEX
- Получение списка растущих/падающих акций
- Поиск акций по названию или тикеру
- Получение финансовых новостей за текущий день
- Поиск новостей по ключевым словам
- Получение новостей, связанных с конкретными акциями
- Анализ акций на основе котировок и новостей
- Обзор рынка с ключевыми показателями
- Анализ финансовых новостей
Особенности
- Использование MCP (Model Context Protocol) для интеграции с LLM
- Кэширование данных для быстрого доступа
- Поддержка как Redis, так и in-memory кэша
- Хранение исторических данных в MongoDB
- Чистая архитектура с разделением на слои
- API ключи для доступа к внешним источникам данных
- Контейнеризация с использованием Docker и Docker Compose
Требования
- Docker и Docker Compose
- API ключи для доступа к внешним сервисам (опционально)
Установка и запуск с помощью Docker
- Клонируйте репозиторий:
git clone https://github.com/jklondon/mcp-stocks-info-server.git
cd mcp-stocks-info-server
- Создайте файл с переменными окружения:
# Создайте .env файл из примера
cp .env.example .env
# Отредактируйте .env файл, установив свой API ключ NewsAPI
# NEWSAPI_KEY=your_news_api_key_here
- Запустите сервисы с помощью Docker Compose:
docker-compose up -d
- Проверьте работу сервисов:
# Посмотреть логи всех сервисов
docker-compose logs
# Посмотреть логи конкретного сервиса
docker-compose logs app
Разработка
Линтинг кода
Проект использует golangci-lint для статического анализа кода. Для запуска линтера локально:
-
Установите golangci-lint следуя официальной инструкции
-
Запустите линтер с помощью команды make:
make lint
Непрерывная интеграция (CI)
Проект настроен с использованием GitHub Actions для автоматического запуска следующих проверок при каждом пуше и PR:
- Линтинг кода с помощью golangci-lint
- Сборка и тестирование
Запуск без Docker
Требования
- Go 1.21 или выше
- MongoDB (опционально, но рекомендуется)
- Redis (опционально)
Установка
- Клонируйте репозиторий:
git clone https://github.com/jklondon/mcp-stocks-info-server.git
cd mcp-stocks-info-server
- Установите зависимости:
go mod download
-
Создайте конфигурационный файл
config.yaml
(см. пример ниже) -
Соберите сервер:
go build -o mcp-stocks-server ./cmd/server
Запуск сервера
./mcp-stocks-server config.yaml
Пример конфигурационного файла
server:
port: 8080
host: "localhost"
timeoutSeconds: 30
database:
uri: "mongodb://localhost:27017"
database: "mcp_stocks"
collection: "stocks"
timeout: "5s"
cache:
redisURI: "localhost:6379"
redisDB: 0
defaultTTL: "5m"
stocksTTL: "15m"
newsTTL: "30m"
moex:
baseURL: "https://iss.moex.com/iss"
timeout: "10s"
useCache: true
apiKey: "" # Опционально
newsAPI:
baseURL: "https://newsapi.org/v2"
timeout: "10s"
useCache: true
apiKey: "your_news_api_key_here" # Требуется для доступа к NewsAPI
sources: ["rbc", "vedomosti", "kommersant"]
apiKeys:
moexKey: "" # Опционально
newsAPIKey: "your_news_api_key_here" # Дублирует newsAPI.apiKey
logLevel: "info"
environment: "development"
Интеграция с LLM
Для интеграции с LLM ваш клиент должен поддерживать протокол MCP. Вы можете использовать любой MCP-совместимый клиент для взаимодействия с этим сервером.
Доступные инструменты (tools)
get_stock_info
- получение информации о котировке акцииget_top_gainers
- получение списка топ растущих акцийget_top_losers
- получение списка топ падающих акцийsearch_stocks
- поиск акций по названию или тикеруget_today_news
- получение финансовых новостей за сегодняsearch_news
- поиск новостей по ключевому словуget_news_by_ticker
- получение новостей, связанных с указанным тикером
Доступные шаблоны (prompts)
stock_analysis
- анализ котировок акцииmarket_overview
- общий обзор состояния рынкаnews_analysis
- анализ финансовых новостей за сегодня
Участие в разработке
Проект является открытым, и любой может внести свой вклад. Если у вас есть предложения или исправления, создайте issue или pull request.
Лицензия
MIT