Skip to main content
Glama
ashwani-yadav83602

MCP Customer Support AI

MCP Customer Support AI

Прикладный проект на базе Model Context Protocol (MCP), предназначенный для продакшена, построенный с использованием Node.js, TypeScript, MongoDB и LLM.

Этот проект демонстрирует, как ИИ-приложение может взаимодействовать с внешними системами через инструменты MCP структурированно, безопасно и масштабируемо.

Проект развивается поэтапно: от базового MCP-сервера и инструмента до продакшн-системы ИИ-поддержки клиентов.


🚀 Обзор проекта

Цель проекта — создать ИИ-ассистента поддержки клиентов, который понимает запросы пользователей и использует инструменты MCP для выполнения реальных операций.

Пример

Пользователь может спросить:

«Проверь мой последний заказ и создай обращение в поддержку, если он задерживается.»

ИИ может определить, что ему нужно:

  1. Найти клиента.

  2. Получить заказы клиента.

  3. Определить задержанный заказ.

  4. Создать обращение в поддержку.

ИИ не имеет прямого доступа к базе данных.

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

                         User
                           │
                           ▼
                      AI / LLM
                           │
                           ▼
                      MCP Client
                           │
                           ▼
                    ┌─────────────┐
                    │ MCP Server  │
                    └──────┬──────┘
                           │
              ┌────────────┼────────────┐
              ▼            ▼            ▼
       Customer Tool   Order Tool   Ticket Tool
              │            │            │
              └────────────┼────────────┘
                           ▼
                       Services
                           │
                           ▼
                        MongoDB

🎯 Цели проекта

Этот проект демонстрирует:

  • разработку MCP-серверов

  • создание MCP-инструментов

  • взаимодействие MCP-клиентов

  • вызов инструментов ИИ

  • архитектуру на TypeScript

  • интеграцию с MongoDB

  • многослойную архитектуру приложений

  • проверку входных данных

  • обработку ошибок

  • аутентификацию и авторизацию

  • логирование и мониторинг

  • журналирование операций (audit logging)

  • продакшн-ориентированную архитектуру MCP

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


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

Бэкенд

  • Node.js

  • TypeScript

  • MCP SDK

  • Zod

  • MongoDB

  • Mongoose

ИИ

  • интеграция с LLM

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

  • рабочий процесс AI-агента

Разработка

  • MCP Inspector

  • Git

  • GitHub

  • npm

Планируемая продакшн-инфраструктура

  • Docker

  • Redis

  • аутентификация

  • ограничение частоты запросов

  • логирование

  • мониторинг

  • CI/CD


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

mcp-customer-support/
│
├── src/
│   │
│   ├── index.ts
│   │
│   ├── tools/
│   │   ├── customer.tools.ts
│   │   ├── order.tools.ts
│   │   └── ticket.tools.ts
│   │
│   ├── services/
│   │   ├── customer.service.ts
│   │   ├── order.service.ts
│   │   └── ticket.service.ts
│   │
│   ├── models/
│   │   ├── customer.model.ts
│   │   ├── order.model.ts
│   │   └── ticket.model.ts
│   │
│   ├── db/
│   │   └── database.ts
│   │
│   ├── middleware/
│   │   └── auth.ts
│   │
│   └── utils/
│       ├── logger.ts
│       └── errors.ts
│
├── tests/
│
├── .env.example
├── .gitignore
├── package.json
├── package-lock.json
├── tsconfig.json
└── README.md

🏗️ Этапы разработки

Проект намеренно разбит на этапы, чтобы каждый вводил важное понятие MCP или продакшн-практику.


Этап 1 — Основа MCP-сервера

Цель

Создать базовый MCP-сервер и открыть первый инструмент.

Реализовано

  • проект на Node.js

  • конфигурация TypeScript

  • MCP SDK

  • MCP-сервер

  • транспорт STDIO

  • проверка входных данных через Zod

  • первый MCP-инструмент

  • интеграция с MCP Inspector

Первый инструмент

find_customer

Входные данные:

{
  "email": "ashwani@example.com"
}

Выходные данные:

{
  "id": "customer_123",
  "name": "Ashwani Yadav",
  "email": "ashwani@example.com"
}

Архитектура

MCP Inspector
      │
      ▼
MCP Client
      │
      │ STDIO
      ▼
MCP Server
      │
      ▼
find_customer()
      │
      ▼
Dummy Data

Статус

Завершено ✅


Этап 2 — Несколько MCP-инструментов

Цель

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

Инструменты

find_customer
get_customer_orders
create_support_ticket

Пример

find_customer

find_customer(email)

get_customer_orders

get_customer_orders(customerId)

create_support_ticket

create_support_ticket(
    customerId,
    orderId,
    issue
)

Ожидаемая архитектура

                    MCP Server
                        │
        ┌───────────────┼───────────────┐
        ▼               ▼               ▼
find_customer()   get_orders()   create_ticket()

Статус

Запланировано 🚧


Этап 3 — Интеграция с MongoDB

Цель

Заменить тестовые данные на реальные постоянные.

База данных

MongoDB

Коллекции

customers
orders
support_tickets

Архитектура

MCP Tool
   │
   ▼
Service Layer
   │
   ▼
Mongoose
   │
   ▼
MongoDB

Пример

find_customer()
      │
      ▼
customer.service.ts
      │
      ▼
Customer Model
      │
      ▼
MongoDB

Преимущества

  • Постоянные данные

  • Корректные запросы к базе данных

  • Интердирование

  • Проверка схем

  • Масштабируемый доступ к данным

Планируемый индекс

customers.email

Это позволяет искать клиентов по email эффективно даже при росте данных.

Статус

Запланировано 🚧


Этап 4 — Сервисный слой и чистая архитектура

Цель

Для this отделить MCP-инструменты от бизнес-логики.

Вместо того чтобы размещать логику работы с базой данных прямо внутри MCP-инструмента:

Tool
 ↓
Service
 ↓
Database

Пример

customer.tools.ts
        │
        ▼
customer.service.ts
        │
        ▼
customer.model.ts
        │
        ▼
MongoDB

Зачем?

Зачем это:

  • раздеlimos

  • Тестируемость

  • Многоразовое использование

  • Удобство сопровождения

  • Проще переход на REST/GraphQL/внутренние сервисы

Статус

Запланировано 🚧


Этап 5 — MCP-клиент

Цель

Создать отдельный MCP-клиент, который подключается к MCP-серверу.

┌──────────────┐
│ MCP Client   │
└──────┬───────┘
       │
       ▼
┌──────────────┐
│ MCP Server   │
└──────────────┘

Клиент сможет:

Обнаруживать инструменты

listTools()

Выполнять инструменты

callTool()

Пример:

callTool(
    "find_customer",
    {
        email: "ashwani@example.com"
    }
)

Статус

Запланировано 🚧


Этап 6 — Интеграция с LLM

Цель

Подключить LLM к MCP-клиенту.

Архитектура становится:

User
 │
 ▼
LLM
 │
 ▼
MCP Client
 │
 ▼
MCP Server
 │
 ▼
Tools
 │
 ▼
MongoDB

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

Пример

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

Check my latest order.

AI:

I need the customer's orders.

Инструмент:

get_customer_orders()

Инструмент возвращает данныео заказе.

AI затем формирует ответ на естественном языке.

Статус

Запланировано 🚧


Этап 7 — Рабочий процесс AI-агента

Цель

Позволить LLM выполнять многошаговые сценарии.

Пример запроса:

Check my latest order and create a support
ticket if it is delayed.

Рабочий процесс AI:

             User Request
                   │
                   ▼
                 LLM
                   │
                   ▼
           find_customer()
                   │
                   ▼
        get_customer_orders()
                   │
                   ▼
           Analyze orders
                   │
                   ▼
        Is order delayed?
              /          \
            Yes           No
             │             │
             ▼             ▼
 create_support_ticket   Response
             │
             ▼
          Response

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

Статус

Запланировано 🚧


Этап 8 — Аутентификация и авторизация

Цель

Защитить операции MCP.

Аutентификация проверяет:

Кто пользователь?

Авторизация проверяет:

Что пользователю разрешено делать?

Пример прав:

customer.read
order.read
ticket.create
ticket.update
admin.refund

Пример:

Customer
 ├── find_customer       ✅
 ├── get_orders          ✅
 ├── create_ticket       ✅
 └── refund_order        ❌

Admin
 ├── find_customer       ✅
 ├── get_orders          ✅
 ├── create_ticket       ✅
 └── refund_order        ✅

Статус

Запланировано 🚧


Этап 9 — Обработка ошибок

Цель

Создать единообразную обработку ошибок во всех инструментах.

Пример:

CustomerNotFoundError
OrderNotFoundError
UnauthorizedError
ValidationError
DatabaseError
ToolExecutionError

Ответ MCP-инструментов будет четко сообщать об ошибках.

Пример:

{
  "isError": true,
  "message": "Customer not found"
}

Статус

Запланировано 🚧


Этап 10 — Логирование и наблюдаемость

Цель

Отслеживать операции MCP в продакшне.

Каждое выполнение инструмента должно предоставлять информацию, например:

Request ID
User ID
Tool name
Arguments
Execution time
Status
Error
Timestamp

Пример:

INFO Tool Execution

tool: get_customer_orders
customerId: customer_123
duration: 85ms
status: success

Целя мониторинга

  • Задержка инструментов

  • Доля ошибок

  • Задержка базы данных

  • Задержка ответа ИИ

  • Частота использования инструментов

  • Неудачные вызовы инструментов

Статус

Запланировано 🚧


Этап 11 — Ограничение частоты запросов

Цель

Защитить MCP-сервер от избыточных или вредоносных запросов.

Возможная стратегия:

User
 │
 ▼
Rate Limiter
 │
 ├── Allowed ──→ MCP Tool
 │
 └── Blocked ──→ Rate Limit Error

Redis может быть задействован для распределённого ограничения частоты.

Пример:

100 requests / minute / user

Статус

Запланировано 🚧


Этап 12 — Журналирование аудита

Цель

Фиксировать важные действия, выполняемSорые управляются ИИ.

Например:

User:
customer_123

AI requested:
create_support_ticket

Order:
order_123

Action:
Support ticket created

Timestamp:
2026-08-23T10:30:00Z

Это особенно важно, когда AI-агенты могут выполнять действия, изменяющие бизнес-данные.

Статус

Запланировано 🚧


Этап 13 — Тестирование

Модульные тесты

Проверяют:

  • Сервисы

  • Валидацию

  • Бизнес-логику

  • Обработку ошибок

Интеграционные тесты

Проверяют:

MCP Tool
   ↓
Service
   ↓
MongoDB

MCP-тесты

Проверяют:

MCP Client
   ↓
MCP Server
   ↓
Tool

Пример

find_customer
    ↓
valid email
    ↓
customer returned

и

find_customer
    ↓
invalid email
    ↓
validation error

Статус

Запланировано 🚚


Этап 14 — Контейнеризация

Цель

Упаковать приложение в контейнеры.

Docker
│
├── MCP Server
│
├── MongoDB
│
└── Redis

Пример продакшн-архитектуры:

                 ┌─────────────┐
                 │   AI App    │
                 └──────┬──────┘
                        │
                        ▼
                 ┌─────────────┐
                 │ MCP Server  │
                 └──────┬──────┘
                        │
             ┌──────────┼──────────┐
             ▼          ▼          ▼
          MongoDB     Redis      Logs

Статус

Запланировано 🚧


Этап 15 — CI/CD

Цель

Автоматизировать тестирование и развёртывание.

Конвейер:

Developer
    │
    ▼
Git Push
    │
    ▼
GitHub Actions
    │
    ├── Install dependencies
    ├── Lint
    ├── Type check
    ├── Run tests
    ├── Build
    └── Deploy

Статус

Запланировано 🚧


🔐 Переменные окружения

Никогда не коммитьте .env в GitHub.

Используйте:

.env

для локальной разработки.

Пример:

MONGODB_URI=mongodb://localhost:27017/mcp-support
OPENAI_API_KEY=your_api_key
JWT_SECRET=your_secret

Вместо этого предоставьте:

.env.example

например:

MONGODB_URI=
OPENAI_API_KEY=
JWT_SECRET=

🧪 Разработка

Установите зависимости:

npm install

Запустите сервер разработки:

npm run dev

Сборка:

npm run build

Запуск production-сборки:

npm start

🔍 MCP Inspector

MCP Inspector используется для тестирования MCP-сервера и просмотра доступных инструментов во время разработки.

Пример:

npx @modelcontextprotocol/inspector npx tsx src/index.ts

Inspector позволяет нам:

  • подключаться к MCP-серверу

  • обнаруживать инструменты

  • просматривать схемы инструментов

  • выполнять инструменты

  • просматривать ответы

  • отлаживать MCP-коммуникацию


🧠 Продемонстрированные концепции MCP

Этот проект демонстрирует следующие концепции MCP:

MCP-сервер

Предоставляет возможности MCP-клиентам.

MCP-клиент

Подключается к MCP-серверам и вызывает их возможности.

Инструменты

Выполнимые операции, предоставляемые ИИ-системам.

Примеры:

find_customer
get_customer_orders
create_support_ticket

Ресурсы

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

Возможные будущие ресурсы:

customer://customer_123
order://order_123

Prompt-шаблоны

Многоразовые шаблоны и сценарии запросов, которые могут быть представлены через MCP.

Возможный пример:

customer_support_resolution

🏆 Архитектура в продакшене

Итоговая архитектура планируется выглядеть так:

                         ┌───────────────┐
                         │     User      │
                         └───────┬───────┘
                                 │
                                 ▼
                         ┌───────────────┐
                         │    LLM / AI   │
                         └───────┬───────┘
                                 │
                                 ▼
                         ┌───────────────┐
                         │  MCP Client   │
                         └───────┬───────┘
                                 │
                                 ▼
                    ┌────────────────────────┐
                    │       MCP Server       │
                    │                        │
                    │ Authentication         │
                    │ Authorization          │
                    │ Validation             │
                    │ Rate Limiting          │
                    │ Logging                │
                    └───────────┬────────────┘
                                │
               ┌────────────────┼────────────────┐
               ▼                ▼                ▼
        Customer Tool      Order Tool       Ticket Tool
               │                │                │
               └────────────────┼────────────────┘
                                ▼
                         Service Layer
                                │
                ┌───────────────┼───────────────┐
                ▼               ▼               ▼
             MongoDB          Redis          Logging

📌 Текущий прогресс

Этап

Функция

Статус

1

MCP Server Foundation

✅ Завершено

2

Multiple MCP Tools

🚧 Запланировано

3

MongoDB Integration

🚧 Запланировано

4

Service Layer

🚧 Запланировано

5

MCP Client

🚧 Запланировано

6

LLM Integration

🚧 Запланировано

7

AI Agent Workflow

🚧 Запланировано

8

Authentication & Authorization

🚧 Запланировано

9

Error Handling

🚧 Запланировано

10

Logging & Observability

🚧 Запланировано

11

Rate Limiting

🚧 Запланировано

12

Audit Logging

🚧 Запланировано

13

Testing

🚧 Запланировано

14

Dockerization

🚧 Запланировано

15

CI/CD

🚧 Запланировано

💡 Пример будущего диалога

После завершения всех этапов система должна поддерживать такие диалоги:

Пользователь

Мой последний заказ ещё не пришёл. Можете проверить его и создать обращение в поддержку?

ИИ

1. Find customer
2. Retrieve orders
3. Identify delayed order
4. Create support ticket
5. Return ticket information

Ответ ИИ

Ваш заказ ORD-123 задерживается. Я создал для вас обращение в поддержку TICKET-456.


🎓 Затронуты темы для интервью

Этот проект может быть использован для демонстрации знаний в следующих областях:

  • Model Context Protocol

  • AI-агенты

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

  • вызов функций

  • MCP-серверы

  • MCP-клиенты

  • обнаружение инструментов

  • выполнение инструментов

  • TypeScript

  • Node.js

  • MongoDB

  • Mongoose

  • чистая архитектура

  • архитектура уровня сервисов

  • аутентификация

  • авторизация

  • RBAC

  • ограничение частоты запросов

  • Redis

  • логирование

  • наблюдаемость

  • Docker

  • CI/CD

  • GitHub Actions

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

  • масштабируемая бэкенд-архитектура


📈 Будущие улучшения

Возможные улучшения в будущем:

  • несколько MCP-серверов

  • MCP-инструменты для платежей

  • MCP-инструменты для электронной почты

  • интеграция с CRM

  • интеграция со Slack

  • интеграция с GitHub

  • векторная база данных

  • RAG

  • семантический поиск

  • Участие человека в цикле утверждения (human-in-the-loop)

  • политики прав доступа к инструментам

  • трассировка выполнения инструментов

  • распределённое развёртывание MCP

  • развёртывание в Kubernetes


👨💻 Философия разработки

Проект следует следующим принципам:

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

  • строгая типизация

  • валидация входных данных

  • безопасное хранение секретов

  • тестируемая бизнес-логика

  • наблюдаемое выполнение инструментов

  • минимальные права на доступ к инструментам

  • масштабируемая архитектура

  • чёткие границы MCP


📜 Лицензия

Этот проект неявно для обучения, экспериментирования и демонстрации концепций MCP/AI-инженерии.

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

-
license - not tested
Not graded
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 Connectors

  • Connect e-commerce and marketing data to AI assistants via MCP.

  • Free public MCP for AI agents — 193 tools, 44 workflows. No API key.

  • 100+ MCP tools for AI agents: content metadata, trade intelligence, business-expertise analysis.

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/ashwani-yadav83602/First-Customer-MCP-PROJECT'

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