MCP Customer Support AI
MCP Customer Support AI
Прикладный проект на базе Model Context Protocol (MCP), предназначенный для продакшена, построенный с использованием Node.js, TypeScript, MongoDB и LLM.
Этот проект демонстрирует, как ИИ-приложение может взаимодействовать с внешними системами через инструменты MCP структурированно, безопасно и масштабируемо.
Проект развивается поэтапно: от базового MCP-сервера и инструмента до продакшн-системы ИИ-поддержки клиентов.
🚀 Обзор проекта
Цель проекта — создать ИИ-ассистента поддержки клиентов, который понимает запросы пользователей и использует инструменты MCP для выполнения реальных операций.
Пример
Пользователь может спросить:
«Проверь мой последний заказ и создай обращение в поддержку, если он задерживается.»
ИИ может определить, что ему нужно:
Найти клиента.
Получить заказы клиента.
Определить задержанный заказ.
Создать обращение в поддержку.
ИИ не имеет прямого доступа к базе данных.
Вместо этого он взаимодействует с приложением через инструменты 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
│
▼
MongoDBLLM будет выбирать, какой инструмент вызвать, на основе запроса пользователя.
Пример
Пользователь:
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 ErrorRedis может быть задействован для распределённого ограничения частоты.
Пример:
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
↓
MongoDBMCP-тесты
Проверяют:
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.tsInspector позволяет нам:
подключаться к MCP-серверу
обнаруживать инструменты
просматривать схемы инструментов
выполнять инструменты
просматривать ответы
отлаживать MCP-коммуникацию
🧠 Продемонстрированные концепции MCP
Этот проект демонстрирует следующие концепции MCP:
MCP-сервер
Предоставляет возможности MCP-клиентам.
MCP-клиент
Подключается к MCP-серверам и вызывает их возможности.
Инструменты
Выполнимые операции, предоставляемые ИИ-системам.
Примеры:
find_customer
get_customer_orders
create_support_ticketРесурсы
Контекстные данные только для чтения, которые могут быть представлены MCP-клиенту.
Возможные будущие ресурсы:
customer://customer_123
order://order_123Prompt-шаблоны
Многоразовые шаблоны и сценарии запросов, которые могут быть представлены через 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-инженерии.
Добавьте соответствующую лицензию с открытым исходным кодом перед публичным распространением.
This server cannot be installed
Maintenance
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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