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и др.
Куда смотреть дальше
- Запуск и конфигурация — как стартует
server.py, как настраивается логирование, аутентификация и подключение к БД. - Модель данных — какие таблицы используются и как они описаны в ORM.
- Доменная логика — обзор модулей в
prime_lardi/. - MCP‑инструменты — подробное описание каждого инструмента из каталога
tools/.