Внедрение OAuth 2.1 для MCP серверов с помощью Scalekit: пошаговое руководство по кодированию
В этой статье мы обсудим, как осуществить внедрение OAuth 2.1 для MCP серверов, используя Scalekit, и сделаем это на примере создания простого сервера анализа новостей о финансах. Этот процесс позволит вам обеспечить безопасность вашего сервера, упростив работу с аутентификацией и авторизацией.
Применение OAuth 2.1 в современном бизнесе
OAuth 2.1 — это протокол авторизации, который значительно упрощает взаимодействие между пользователем и приложением. Он обеспечивает безопасность, позволяя приложениям получать ограниченный доступ к данным пользователя без необходимости передачи паролей. Внедрение этого протокола поможет вашему бизнесу защитить конфиденциальные данные и повысить уровень доверия клиентов.
Подготовка необходимых зависимостей
Перед началом работы убедитесь, что у вас установлены все необходимые инструменты и библиотеки:
- API Alpha Vantage: используйте его для получения новостей финансирования. Для получения бесплатного ключа API перейдите на платформу Alpha Vantage и зарегистрируйтесь.
- Node.js: установите последнюю версию с официального сайта nodejs.org. Это необходимо для тестирования вашего приложения.
- Python библиотеки: установите нужные пакеты с помощью команды
pip install fastapi fastmcp mcp scalekit-sdk-python.
Создание учетной записи Scalekit
Scalekit значительно облегчает работу с OAuth. Создайте учетную запись на сайте scalekit.com и активируйте полную аутентификацию. Настройте необходимые разрешения в панели авторизации, добавив разрешение news:read для получения данных о новостях из Alpha Vantage.
Настройка MCP сервера
Теперь добавьте ваш MCP сервер в интерфейс Scalekit:
- Укажите уникальный идентификатор ресурса и настройте его для локального тестирования.
- Получите ваши API учётные данные, включая Client ID и Secret Key, которые будут нужны для конфигурации.
Создание конфигурационного файла
Создайте файл config.py, чтобы загрузить все переменные окружения:
import os
from dotenv import load_dotenv
load_dotenv()
class Settings():
ALPHA_VANTAGE_API_KEY = os.environ.get('ALPHA_VANTAGE_API_KEY')
# Другие переменные окружения
settings = Settings()
Логика анализа новостей
Теперь создадим логику для получения данных о новостях с помощью API Alpha Vantage. Используйте следующий код для получения последней информации:
from mcp.server.fastmcp import FastMCP
import httpx
from config import settings
mcp = FastMCP("finance-news")
async def call_alpha_vantage(endpoint: str, params: dict) -> dict:
params["apikey"] = settings.ALPHA_VANTAGE_API_KEY
async with httpx.AsyncClient() as client:
response = await client.get(BASE_URL, params=params)
return response.json()
Создание промежуточного ПО авторизации
Разработаем промежуточное ПО, которое будет проверять входящие запросы. Оно обеспечит, чтобы только авторизованные запросы обрабатывались вашим сервером:
from fastapi import HTTPException, Request
from scalekit import ScalekitClient
class AuthMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next):
# Проверка токена
if not valid_token:
raise HTTPException(status_code=401, detail="Unauthorized")
return await call_next(request)
Запуск сервера
Запустите сервер, выполнив команду python server.py. Для тестирования используйте любой клиент API, чтобы отправить запросы к вашему MCP серверу. При отсутствии правильных учетных данных вы получите ошибку аутентификации.
Преимущества использования Scalekit и OAuth 2.1
Внедрение OAuth 2.1 с использованием Scalekit позволяет не только упростить процесс авторизации, но и значительно улучшить безопасность вашего приложения. Вы получаете:
- Автоматизацию обработки токенов, что сокращает время разработки.
- Упрощение интеграции с сторонними API.
- Повышение доверия пользователей к вашему приложению.
Заключение
Внедрение OAuth 2.1 для MCP серверов с помощью Scalekit — это инвестиция, которая окупится благодаря повышению безопасности и упрощению работы с авторизацией. Следуйте нашим рекомендациям, и ваш сервер будет готов к безопасной работе с клиентами.













