Пошаговое руководство по преобразованию FastAPI приложения в MCP сервер

Пошаговое руководство по преобразованию приложения FastAPI в сервер MCP

FastAPI-MCP — это инструмент с нулевой конфигурацией, который без усилий открывает конечные точки FastAPI как инструменты протокола контекста модели (MCP). Он позволяет вам интегрировать сервер MCP непосредственно в ваше приложение FastAPI, что делает процесс простым и удобным.

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

API Службы национальных парков

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

Установка Cursor IDE

Вы можете скачать Cursor IDE с официального сайта. Он разработан специально для разработки с поддержкой ИИ. Скачивание бесплатное и включает 14-дневную пробную версию.

Зависимости Python

Запустите следующую команду для загрузки необходимых библиотек:

pip install fastapi uvicorn httpx python-dotenv pydantic fastapi-mcp mcp-proxy

Шаг 2: Создание приложения FastAPI

Мы создадим простое приложение FastAPI, которое использует API Службы национальных парков для получения предупреждений, связанных с национальными парками США. Позже мы преобразуем это приложение в сервер MCP.

Сначала создайте файл .env и сохраните в нем ваш ключ API:

NPS_API_KEY=

Замените на сгенерированный вами ключ. Теперь создайте новый файл и вставьте следующий код. Это будет основная логика вашего приложения:

from fastapi import FastAPI, HTTPException, Query
from typing import List, Optional
import httpx
import os
from dotenv import load_dotenv
from fastapi_mcp import FastApiMCP

# Загрузка переменных окружения из файла .env
load_dotenv()

app = FastAPI(title="API предупреждений национальных парков")

# Получение ключа API из переменной окружения
NPS_API_KEY = os.getenv("NPS_API_KEY")

if not NPS_API_KEY:
    raise ValueError("Переменная окружения NPS_API_KEY не установлена")

@app.get("/alerts")
async def get_alerts(
    parkCode: Optional[str] = Query(None, description="Код парка (например, 'yell' для Йеллоустона)"),
    stateCode: Optional[str] = Query(None, description="Код штата (например, 'wy' для Вайоминга)"),
    q: Optional[str] = Query(None, description="Поисковый запрос")
):
    """Получение предупреждений о парках из API Службы национальных парков"""
    url = "https://api.nps.gov/api/v1/alerts"
    params = {"api_key": NPS_API_KEY}

    # Добавление необязательных параметров, если они предоставлены
    if parkCode:
        params["parkCode"] = parkCode
    if stateCode:
        params["stateCode"] = stateCode
    if q:
        params["q"] = q

    try:
        async with httpx.AsyncClient() as client:
            response = await client.get(url, params=params)
            response.raise_for_status()
            return response.json()
    except httpx.HTTPStatusError as e:
        raise HTTPException(status_code=e.response.status_code, detail=f"NPS API ошибка: {e}")
    except Exception as e:
        raise HTTPException(status_code=500, detail=f"Внутренняя ошибка сервера: {str(e)}")

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)
  

Шаг 3: Тестирование приложения FastAPI

Чтобы протестировать приложение, выполните следующую команду в терминале:

python

После запуска сервера откройте браузер и перейдите по адресу: http://localhost:8000/docs. Это откроет интерфейс, где мы можем протестировать нашу конечную точку API.

Нажмите кнопку “Попробовать”. В поле параметра park_code введите yell (для парков Калифорнии). Нажмите “Выполнить”. Вы должны получить ответ 200 OK вместе с JSON-данными, содержащими информацию о предупреждениях для национальных парков в Калифорнии.

Шаг 4: Реализация сервера MCP

Для этого добавьте следующий код перед блоком if __name__ == "__main__": в вашем файле:

mcp = FastApiMCP(
    app,
    # Необязательные параметры
    name="API предупреждений национальных парков",
    description="API для получения предупреждений из национальных парков",
    base_url="http://localhost:8000",
)
  

Теперь вам нужно зарегистрировать ваш сервер FastAPI MCP в Cursor.

Откройте Cursor и перейдите в:

Файл > Настройки > Настройки Cursor > MCP > Добавить новый глобальный сервер MCP

Это откроет файл конфигурации. Внутри этого файла добавьте следующую запись и сохраните ее:

"mcpServers": {
    "Служба национальных парков": {
        "command": "mcp-proxy",
        "args": []
    }
}
  

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

Теперь запустите приложение, используя следующую команду:

python

После запуска приложения перейдите в Файл > Настройки > Настройки Cursor > MCP. Теперь вы должны увидеть ваш новый сервер в списке и запущенным в разделе MCP.

Теперь вы можете протестировать сервер, введя запрос в чате. Он будет использовать наш сервер MCP для получения и возврата соответствующего результата.

Заключение

Не забудьте подписаться на нас в социальных сетях и присоединиться к нашему сообществу. Если вам нужна помощь в управлении ИИ в бизнесе, свяжитесь с нами по адресу hello@itinai.ru.

Также ознакомьтесь с практическим примером решения на основе ИИ: бот для продаж, созданный для автоматизации взаимодействия с клиентами и управления взаимодействиями на всех этапах клиентского пути.

AI Solution Example

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