Перейти к содержанию

MCP‑сервер

MCP‑сервер — это центральный компонент PrimeAI, в котором сосредоточена доменная логика: интеграция с Lardi API, работа с заявками и профилями 1С, хранение истории диалога, помощь в расчёте маржи и фиксации сделок с перевозчиками. Сервер реализован на базе библиотеки FastMCP и публикует MCP‑эндпоинт по HTTP.

Основные задачи

В этом проекте MCP‑сервер выполняет несколько ключевых функций. Во‑первых, он предоставляет набор инструментов для моделей (через HTTP‑эндпоинт /mcp). Во‑вторых, инкапсулирует доступ к Lardi API и 1С, чтобы клиенты (Telegram‑бот и SIP Hook) работали с одной и той же бизнес‑логикой. В‑третьих, сервер управляет общей базой данных: пользователями, заявками, историей диалогов и связями между заявками и перевозчиками.

Сервер используется одновременно в двух местах: в Telegram‑боте (через OpenAI Responses API и fastmcp) и в SIP Hook (через OpenAI Agents SDK). В обоих случаях модели вызывают MCP‑инструменты, но поверх разных API.

Пример запуска FastMCP

Главная точка входа — файл mcp-server/server.py. Инициализация FastMCP делается так же, как в коде:

from fastmcp import FastMCP
from fastmcp.server.auth import JWTVerifier
from prime_lardi.mcp_logging import ToolLoggingMiddleware

mcp = FastMCP(APP_NAME, auth=_configure_auth())
mcp.add_middleware(ToolLoggingMiddleware())

for m in pkgutil.iter_modules(_tools_pkg.__path__):
    importlib.import_module(f"{_tools_pkg.__name__}.{m.name}")

app = mcp.http_app(path=APP_PATH)

if __name__ == "__main__":
    uvicorn.run(app, host=HOST, port=PORT, log_level="debug")

Сервер добавляет middleware логирования, опционально включает JWT‑проверку через _configure_auth() и автоматически импортирует все инструменты из каталога tools/, после чего поднимает ASGI‑приложение на HOST:PORT с путём /mcp.

Структура MCP‑сервера

Основные части сервера можно описать так:

  • server.py — точка входа; создаёт экземпляр FastMCP, настраивает логирование и, при необходимости, JWT‑аутентификацию, автоматически подгружает все инструменты из каталога tools/ и запускает uvicorn‑сервер.
  • prime_lardi/db.py и prime_lardi/models.py — подключение к MariaDB через mysql+aiomysql и ORM‑модели для таблиц users, dialogue_history, cargo_requests, transporter_matches (а также вспомогательные таблицы, используемые в raw SQL, например request_serials).
  • prime_lardi/* — бизнес‑логика (интеграция с Lardi, работа с профилями 1С, расчёт маржи, история диалога, клонование пользователя).
  • tools/* — MCP‑инструменты высокого уровня: cargo_add, prepare_margin_offer, store_transporter_match, verify_user, send_docx_form, notify_client_pickup, log_demo, ping_probe, get_dialogue_history и др.

Куда смотреть дальше