Создание MCP сервера для анализа финансовых данных в реальном времени через Claude Desktop

Внедрение сервера протокола контекста модели (MCP) для Claude Desktop

В этом практическом руководстве мы создадим сервер MCP (протокол контекста модели), который позволит Claude Desktop получать информацию о настроении новостей на фондовом рынке и ежедневных лидерах роста и падения акций. Поскольку большинство больших языковых моделей (LLM) не могут напрямую получать доступ к актуальным финансовым данным, это решение использует MCP для предоставления актуальных сведений.

Шаг 1: Настройка окружения

Сначала мы настроим окружение и установим менеджер пакетов uv. Для Mac или Linux:

curl -LsSf

Для Windows (PowerShell):

powershell -ExecutionPolicy ByPass -c "irm

Создадим новый каталог проекта и инициализируем его с помощью uv:

uv init stockNews
cd stockNews

Теперь создадим и активируем виртуальное окружение. Для Mac или Linux:

uv venv
source .venv/bin/activate

Для Windows:

uv venv
.venv\Scripts\activate

Теперь установим необходимые зависимости:

uv add mcp httpx python-dotenv

Шаг 2: Настройка переменных окружения

Создадим файл .env, который будет содержать API-ключ для AlphaVantage. Чтобы сгенерировать бесплатный API-ключ, перейдите на сайт AlphaVantage и нажмите кнопку «Получить бесплатный API-ключ». Заполните необходимые данные, и вы получите свой API-ключ — скопируйте его и сохраните, так как он будет использоваться для аутентификации ваших запросов.

Теперь создайте файл .env и добавьте следующую строку:

ALPHA_VANTAGE_API_KEY = ваш_api_ключ

Шаг 3: Реализация сервера MCP и интеграция с AlphaVantage

Сначала создайте файл stockN в каталоге, который мы создали, и добавьте следующие фрагменты кода:

Импортируем необходимые пакеты и настраиваем экземпляр для использования API:

from typing import Any
import os
import httpx
from cp import FastMCP
from dotenv import load_dotenv

# Загрузка переменных .env
load_dotenv()
API_KEY = v("ALPHA_VANTAGE_API_KEY")

# Инициализация сервера FastMCP
mcp = FastMCP("alpha-finance")
# Константы
BASE_URL = "https://www.alphavantage.co/query"
  

Теперь добавим вспомогательные функции для запроса данных из AlphaVantage.

async def call_alpha_vantage(endpoint: str, params: dict[str, Any]) -> dict[str, Any] | None:
    params["apikey"] = API_KEY
    params["function"] = endpoint
    async with httpx.AsyncClient() as client:
        try:
            response = await client.get(BASE_URL, params=params, timeout=30.0)
            response.raise_for_status()
            return response.json()
        except Exception:
            return None
  

Реализация обработки выполнения инструментов:

@mcp.tool()
async def get_news_sentiment(ticker: str) -> str:
    data = await call_alpha_vantage("NEWS_SENTIMENT", {"tickers": (ticker,)})
    if not data or "feed" not in data:
        return "Не удалось получить данные о настроении новостей."
    
    articles = data["feed"][:3]
    result = []
    for item in articles:
        result.append(f"Заголовок: {item['title']}\nРезюме: {item['summary']}\nИсточник: {item['source']} | Опубликовано: {item['time_published']}")
    return "\n—\n".join(result)

@mcp.tool()
async def get_top_movers() -> str:
    data = await call_alpha_vantage("TOP_GAINERS_LOSERS", {})
    if not data:
        return "Не удалось получить данные о лидерах."
    
    gainers = data.get("top_gainers", [])[:3]
    losers = data.get("top_losers", [])[:3]
    
    result = "**Топ Лидеров**\n"
    result += "\n".join([f"{g['ticker']} ({g.get('change_percentage', 'N/A')})" for g in gainers])
    
    result += "\n\n**Топ Убыточных**\n"
    result += "\n".join([f"{l['ticker']} ({l.get('change_percentage', 'N/A')})" for l in losers])
    
    return result
  

Шаг 4: Запуск сервера

Теперь инициализируем и запустим сервер:

if __name__ == "__main__":
    mcp.run(transport="stdio")
  

Шаг 5: Тестирование сервера

Сначала убедитесь, что у вас установлен Claude для Desktop. Если нет, скачайте и установите последнюю версию с официального сайта. Если у вас уже есть Claude, убедитесь, что он обновлён.

Затем настройте Claude для подключения к вашему серверу MCP. Для этого откройте файл claude_desktop_ в каталоге Claude с помощью любого текстового редактора. Если файл отсутствует, создайте его вручную.

Для MacOS/Linux:

"mcpServers": {
    "stockNews": {
        "command": "uv",
        "args": [
            "--directory",
            "/ABSOLUTE/PATH/TO/PARENT/FOLDER/stockNews",
            "run",
            "stockN"
        ]
    }
}
  

Для Windows:

"mcpServers": {
    "stockNews": {
        "command": "uv",
        "args": [
            "--directory",
            "C:\\ABSOLUTE\\PATH\\TO\\PARENT\\FOLDER\\stockNews",
            "run",
            "stockN"
        ]
    }
}
  

Эта конфигурация позволяет Claude для Desktop знать, что:

  • Существует сервер MCP под названием stockNews.
  • Он должен быть запущен с помощью следующей команды: uv –directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/stockNews run stockN.

После добавления этой конфигурации в файл, сохраните его и перезапустите Claude для Desktop, чтобы применить изменения.

Тестирование команд

Чтобы подтвердить, что Claude для Desktop распознал два инструмента из вашего сервера stockNews, найдите иконку молотка в интерфейсе Claude — эта иконка указывает на доступ к инструментам.

После нажатия на иконку молотка вы должны увидеть два инструмента в списке:

Мы можем протестировать сервер, запустив следующие запросы:

  • Каково настроение новостей для Apple?
  • Кто является топ-участниками и проигравшими на фондовом рынке?

Когда вы задаёте вопрос Claude:

  1. Клиент отправляет ваш запрос в Claude.
  2. Claude проверяет доступные инструменты (такие как get_news_sentiment или get_top_movers) и определяет, какой из них использовать на основе вашего вопроса.
  3. Выбранный инструмент выполняется через настроенный вами сервер MCP.
  4. Инструмент возвращает результаты обратно в Claude.
  5. Claude использует эти результаты для формирования ответа на естественном языке.
  6. Окончательный ответ отображается вам в интерфейсе чата.

Этот бесшовный процесс позволяет Claude взаимодействовать с актуальными данными структурированным и контролируемым образом.

Заключение

Наш сервер для получения финансовых данных на основе MCP расширяет возможности Claude Desktop, позволяя извлекать актуальные финансовые данные в реальном времени. Интегрируя API AlphaVantage с пользовательским сервером MCP, пользователи могут получать живые данные о настроении новостей и отслеживать топовые акции непосредственно через Claude. Эта настройка предоставляет пользователям своевременные и действенные финансовые данные — всё в рамках разговорного интерфейса, что делает финансовый анализ более эффективным, контекстным и интерактивным.

AI Technology

Автоматизация процессов

Посмотрите вокруг и найдите процессы, которые можно автоматизировать. Определите моменты во взаимодействии с клиентами, где искусственный интеллект может добавить наибольшую ценность.

Ключевые показатели эффективности (KPI)

Определите важные KPI, чтобы убедиться, что ваши инвестиции в ИИ действительно оказывают положительное влияние на бизнес.

Выбор инструментов

Выбирайте инструменты, которые соответствуют вашим потребностям и позволяют настраивать их в соответствии с вашими целями.

Начало работы с ИИ

Начните с небольшого проекта, соберите данные о его эффективности, а затем постепенно расширяйте использование ИИ в своей работе.

Контакты

Если вам нужна помощь в управлении ИИ в бизнесе, свяжитесь с нами по адресу hello@itinai.ru. Чтобы быть в курсе последних новостей ИИ, подпишитесь на наш Telegram: https://t.me/itinai.

Пример решения на базе ИИ

Посмотрите на практический пример решения на базе ИИ: бот для продаж с https://itinai.ru/aisales, предназначенный для автоматизации разговоров с клиентами круглосуточно и управления взаимодействиями на всех этапах клиентского пути.

Новости в сфере искусственного интеллекта