Skip to main content
Glama
pbpeter

Enterprise Support MCP Server

by pbpeter

Enterprise Support MCP Server

Легковесный прототип интеграции корпоративного ИИ, демонстрирующий, как бизнес-возможности могут быть предоставлены большим языковым моделям через Model Context Protocol (MCP).

Проект предоставляет информацию о клиентах и заказах через MCP-сервер на Python. ИИ-ассистент на базе Mistral динамически обнаруживает доступные MCP-инструменты и решает, какие из них вызывать на основе запросов на естественном языке.

Для более сложных запросов ассистент может выполнять несколько вызовов инструментов итеративно, пока не получит достаточно информации для формирования итогового ответа.

Все записи о клиентах и заказах, используемые в этом проекте, являются синтетическими демонстрационными данными.


Ключевые возможности

  • Сервер и клиент Model Context Protocol (MCP)

  • Динамическое обнаружение MCP-инструментов

  • Выбор инструментов на основе LLM с использованием Mistral AI

  • Многошаговый рабочий процесс вызова инструментов

  • Взаимодействие на естественном языке с корпоративными данными

  • Поиск клиентов и заказов

  • Модели данных Pydantic

  • Персистентность SQLite

  • Структурированная обработка ошибок

  • Разделение уровней MCP, персистентности и интеграции с ИИ


Related MCP server: E-commerce MCP Server

Архитектура

flowchart TD
    U[User] --> L[Mistral LLM]
    L --> C[MCP Client]
    C --> S[Enterprise Support MCP Server]
    S --> D[(SQLite Customer / Order Database)]
    D --> S
    S --> C
    C --> L
    L --> U

LLM не обращается к базе данных напрямую.

Вместо этого корпоративные возможности предоставляются через стандартизированные MCP-инструменты. MCP-клиент динамически обнаруживает эти инструменты и предоставляет их схемы LLM.

Затем LLM решает, какой инструмент необходим для конкретного запроса пользователя.


Пример рабочего процесса

Пользователь вводит:

Show me customer 1001.

Приложение выполняет следующий рабочий процесс:

User request
    ↓
Mistral LLM
    ↓
Selects get_customer
    ↓
MCP Client
    ↓
Enterprise Support MCP Server
    ↓
SQLite
    ↓
Customer data
    ↓
MCP Client
    ↓
Mistral LLM
    ↓
Natural-language response

Пример результата:

Here is the information for customer 1001:

- Name: Anna Schmidt
- Email: anna@example.com
- Status: ACTIVE

Код приложения не закрепляет жёстко выбор get_customer.
LLM выбирает подходящий MCP-инструмент на основе запроса пользователя на естественном языке.


Доступные MCP-инструменты

get_customer

Получает информацию о клиенте по идентификатору клиента.

Пример ввода:

{
  "customer_id": 1001
}

get_customer_orders

Получает все заказы, принадлежащие клиенту.

Пример ввода:

{
  "customer_id": 1001
}

get_order_status

Получает текущий статус и информацию об отслеживании заказа.

Пример ввода:

{
  "order_id": 5002
}

Технологический стек

  • Python

  • Model Context Protocol (MCP) Python SDK

  • Mistral AI

  • Pydantic

  • SQLite

  • asyncio

  • python-dotenv

  • uv


Начало работы

Предварительные требования

Проект требует:

  • Python 3.11+

  • pip

  • uv

  • Ключ API Mistral

Проверьте установку Python:

python --version

Проверьте uv:

uv --version

1. Клонирование репозитория

git clone https://github.com/YOUR-USERNAME/enterprise-support-mcp-server.git
cd enterprise-support-mcp-server

Замените YOUR-USERNAME на ваше имя пользователя GitHub.


2. Создание виртуального окружения

python -m venv .venv

Windows PowerShell

.venv\Scripts\Activate.ps1

Linux / macOS

source .venv/bin/activate

3. Установка зависимостей

pip install -r requirements.txt

Основные зависимости включают:

mcp[cli]
mistralai
pydantic
python-dotenv

4. Настройка ключа API Mistral

Создайте файл .env в корне проекта.

Вы можете использовать .env.example в качестве шаблона:

MISTRAL_API_KEY=your_mistral_api_key

Никогда не коммитьте сам файл .env или ключ API в Git.


5. Инициализация демонстрационной базы данных

Запустите:

python init_db.py

Это создаёт локальную базу данных SQLite, содержащую синтетические записи о клиентах и заказах, используемые MCP-инструментами.


Тестирование

Проект можно тестировать на нескольких уровнях.

Тест 1 – Доступ к базе данных

Функции базы данных можно тестировать независимо до подключения MCP.

Убедитесь, что демонстрационная база данных инициализирована:

python init_db.py

Уровень базы данных предоставляет операции для:

get_customer
get_customer_orders
get_order_status

Это проверяет уровень персистентности независимо от MCP и LLM.


Тест 2 – Запуск MCP-сервера

Запустите:

python server.py

Для MCP-сервера на основе stdio HTTP-порт или браузер не открываются.

Процесс ожидает, пока MCP-клиент свяжется с ним через стандартный ввод/вывод.

Остановите сервер с помощью:

Ctrl+C

Тест 3 – MCP-клиент без LLM

Запустите:

python client.py

Клиент подключается к MCP-серверу и обнаруживает доступные инструменты.

Ожидаемое обнаружение инструментов:

Available tools:
- get_customer
- get_customer_orders
- get_order_status

Затем клиент может вызывать MCP-инструменты напрямую.

Этот тест проверяет:

MCP Client
    ↓
MCP protocol
    ↓
MCP Server
    ↓
SQLite
    ↓
MCP result

Для этого теста большая языковая модель не требуется.


Тест 4 – Выбор MCP-инструмента на основе LLM

Запустите:

python llm_client.py

Приложение должно сначала отобразить MCP-инструменты, обнаруженные на сервере:

Available MCP tools:
- get_customer
- get_customer_orders
- get_order_status

Затем вы можете ввести запрос на естественном языке.

Поиск клиента

Show me customer 1001.

Ожидаемое поведение:

Mistral
    ↓
get_customer
    ↓
customer_id = 1001

Итоговый ответ должен содержать информацию о клиенте 1001.


Заказы клиента

Попробуйте:

Show me all orders for customer 1001.

Ожидаемый инструмент:

get_customer_orders

Статус заказа

Попробуйте:

What is the status of order 5002?

Ожидаемый инструмент:

get_order_status

Запрос без корпоративных данных

Попробуйте:

What can you help me with?

LLM должна быть способна ответить на этот запрос без доступа к данным о клиентах или заказах.

Это демонстрирует, что выполнение инструментов выбирается динамически, а не выполняется для каждого запроса.


Тест 5 – Многошаговый вызов инструментов

LLM-клиент поддерживает итеративное выполнение инструментов.

Попробуйте более сложный запрос, например:

Customer 1001 says that one of her orders has not arrived.
Can you investigate?

Для сложных запросов ассистент может использовать несколько MCP-инструментов перед формированием итогового ответа.

Концептуально:

User
    ↓
Mistral
    ↓
MCP Tool
    ↓
Tool Result
    ↓
Mistral
    ↓
Another tool required?
    ├── Yes → MCP Tool → Result → Mistral
    └── No  → Final Response

Цикл вызова инструментов имеет максимальное количество итераций для предотвращения случайного бесконечного выполнения.


Тесты обработки ошибок

MCP-сервер также обрабатывает неизвестные бизнес-сущности.

Например:

Show me customer 9999.

Соответствующий MCP-инструмент возвращает результат с ошибкой вместо того, чтобы выдумывать информацию о клиенте.

Это особенно важно для корпоративных интеграций на основе ИИ: фактические данные о клиентах и заказах должны поступать из подключённой корпоративной системы, а не от LLM.


Структура проекта

enterprise-support-mcp-server/
│
├── server.py
│   └── MCP server and tool definitions
│
├── client.py
│   └── MCP client for direct tool testing
│
├── llm_client.py
│   └── Mistral integration and agentic tool-calling workflow
│
├── database.py
│   └── Database access layer
│
├── models.py
│   └── Pydantic domain models
│
├── init_db.py
│   └── Creates synthetic demo data
│
├── requirements.txt
├── .env.example
├── .gitignore
└── README.md

Зачем MCP?

LLM также может вызывать специфичные для приложения функции напрямую.

MCP вводит стандартизированный интерфейс между AI-приложениями и внешними возможностями.

В этом проекте:

Mistral
   ↓
Tool Calling
   ↓
MCP Client
   ↓
Standardized MCP interface
   ↓
Enterprise Support MCP Server
   ↓
Enterprise capabilities

LLM отвечает за принятие решения о том, какая возможность необходима.

MCP отвечает за предоставление этих возможностей через стандартизированный протокол.

Это разделение означает, что корпоративный бэкенд не нужно проектировать специально для одного конкретного LLM-провайдера.


Цель проекта

Проект намеренно мал и фокусируется на одном архитектурном вопросе:

Как сделать существующие корпоративные возможности доступными для AI-ассистентов через стандартизированный уровень интеграции?

Он демонстрирует сочетание:

  • Интеграции корпоративных систем

  • Model Context Protocol

  • Вызова инструментов LLM

  • Агентных рабочих процессов

  • Структурированных бизнес-данных

  • Разделения ответственности

Проект служит практическим прототипом для интеграции AI-ассистентов с существующими корпоративными приложениями.


Уведомление о безопасности

Этот репозиторий содержит только синтетические демонстрационные данные.

Не сообщайте ключи API, учётные данные, данные клиентов или другую конфиденциальную информацию через исходный код или закоммиченные файлы .env.

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • The grounded data layer for any LLM: governed SQL, metrics, lineage and catalog over your data.

  • A Model Context Protocol server for Wix AI tools

  • Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pbpeter/enterprise-support-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server