Внедрение сервера протокола контекста модели (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:
- Клиент отправляет ваш запрос в Claude.
- Claude проверяет доступные инструменты (такие как get_news_sentiment или get_top_movers) и определяет, какой из них использовать на основе вашего вопроса.
- Выбранный инструмент выполняется через настроенный вами сервер MCP.
- Инструмент возвращает результаты обратно в Claude.
- Claude использует эти результаты для формирования ответа на естественном языке.
- Окончательный ответ отображается вам в интерфейсе чата.
Этот бесшовный процесс позволяет Claude взаимодействовать с актуальными данными структурированным и контролируемым образом.
Заключение
Наш сервер для получения финансовых данных на основе MCP расширяет возможности Claude Desktop, позволяя извлекать актуальные финансовые данные в реальном времени. Интегрируя API AlphaVantage с пользовательским сервером MCP, пользователи могут получать живые данные о настроении новостей и отслеживать топовые акции непосредственно через Claude. Эта настройка предоставляет пользователям своевременные и действенные финансовые данные — всё в рамках разговорного интерфейса, что делает финансовый анализ более эффективным, контекстным и интерактивным.
Автоматизация процессов
Посмотрите вокруг и найдите процессы, которые можно автоматизировать. Определите моменты во взаимодействии с клиентами, где искусственный интеллект может добавить наибольшую ценность.
Ключевые показатели эффективности (KPI)
Определите важные KPI, чтобы убедиться, что ваши инвестиции в ИИ действительно оказывают положительное влияние на бизнес.
Выбор инструментов
Выбирайте инструменты, которые соответствуют вашим потребностям и позволяют настраивать их в соответствии с вашими целями.
Начало работы с ИИ
Начните с небольшого проекта, соберите данные о его эффективности, а затем постепенно расширяйте использование ИИ в своей работе.
Контакты
Если вам нужна помощь в управлении ИИ в бизнесе, свяжитесь с нами по адресу hello@itinai.ru. Чтобы быть в курсе последних новостей ИИ, подпишитесь на наш Telegram: https://t.me/itinai.
Пример решения на базе ИИ
Посмотрите на практический пример решения на базе ИИ: бот для продаж с https://itinai.ru/aisales, предназначенный для автоматизации разговоров с клиентами круглосуточно и управления взаимодействиями на всех этапах клиентского пути.