MCP Customer Support AI
Asistente de Soporte al Cliente con MCP
Un proyecto Model Context Protocol (MCP) orientado a la producción, creado con Node.js, TypeScript, MongoDB y un LLM.
Este proyecto demuestra cómo una aplicación de IA puede interactuar con sistemas externos a través de herramientas MCP de forma estructurada, segura y escalable.
El proyecto se desarrolla de forma incremental, desde un servidor y una herramienta MCP básicos hasta un sistema de soporte al cliente impulsado por IA con estilo y estructura de producción.
Visión General del Proyecto
El objetivo de este proyecto es construir un asistente de soporte al cliente impulsado por IA que pueda entender las solicitudes de los usuarios y usar herramientas MCP para realizar operaciones en el mundo real.
Ejemplo
Un usuario puede preguntar:
"Consulta mi último pedido y crea un ticket de soporte si está retrasado".
La IA puede determinar que necesita:
Encontrar al cliente.
Obtener los pedidos del cliente.
Identificar el pedido retrasado.
Crear un ticket de soporte.
La IA no accede directamente a la base de datos.
En su lugar, interactúa con la aplicación a través de herramientas MCP.
User
│
▼
AI / LLM
│
▼
MCP Client
│
▼
┌─────────────┐
│ MCP Server │
└──────┬──────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
Customer Tool Order Tool Ticket Tool
│ │ │
└────────────┼────────────┘
▼
Services
│
▼
MongoDB🎯 Objetivos del Proyecto
Este proyecto demuestra:
Desarrollo de servidores MCP
Creación de herramientas MCP
Comunicación con clientes MCP
Llamada a herramientas con IA
Arquitectura TypeScript
Integración con MongoDB
Arquitectura de capa de servicios
Validación de entradas
Manejo de errores
Autenticación y autorización
Registro y monitorización de logs
Registro de auditoría
Arquitectura MCP orientada a producción
Flujos de trabajo de agentes de IA
🛠️ Stack Tecnológico
Backend
Node.js
TypeScript
SDK de MCP
Zod
MongoDB
Mongoose
IA
Integración con LLM
Llamada de herramientas
Flujo de trabajo de agente de IA
Desarrollo
MCP Inspector
Git
GitHub
npm
Infraestructura de producción planificada
Docker
Redis
Autenticación
Limitación de peticiones (rate limiting)
Registro de logs
Monitorización
CI/CD
📁 Estructura del Proyecto
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🏗️ Fases de Desarrollo
El proyecto está dividido intencionadamente en fases para que cada una introduzca un concepto importante de MCP o de producción.
Fase 1 — Fundamentos del Servidor MCP
Objetivo
Crear un servidor MCP básico y exponer la primera herramienta.
Implementado
Proyecto Node.js
Configuración de TypeScript
SDK de MCP
Servidor MCP
Transporte STDIO
Validación de entrada con Zod
Primera herramienta MCP
Integración con MCP Inspector
Primera Herramienta
find_customerEntrada:
{
"email": "ashwani@example.com"
}Salida:
{
"id": "customer_123",
"name": "Ashwani Yadav",
"email": "ashwani@example.com"
}Arquitectura
MCP Inspector
│
▼
MCP Client
│
│ STDIO
▼
MCP Server
│
▼
find_customer()
│
▼
Dummy DataEstado
Completado ✅
Fase 2 — Múltiples Herramientas MCP
Objetivo
Crear múltiples herramientas que representen operaciones reales de soporte al cliente.
Herramientas
find_customer
get_customer_orders
create_support_ticketEjemplo
find_customer (encontrar_cliente)
find_customer(email)get_customer_orders (obtener_pedidos_de_cliente)
get_customer_orders(customerId)create_support_ticket (crear_ticket_de_soporte)
create_support_ticket(
customerId,
orderId,
issue
)Arquitectura Esperada
MCP Server
│
┌───────────────┼───────────────┐
▼ ▼ ▼
find_customer() get_orders() create_ticket()Estado
Planificado 🚧
Fase 3 — Integración con MongoDB
Objetivo
Reemplazar los datos simulados por datos reales y persistentes.
Base de Datos
MongoDB
Colecciones
customers
orders
support_ticketsArquitectura
MCP Tool
│
▼
Service Layer
│
▼
Mongoose
│
▼
MongoDBEjemplo
find_customer()
│
▼
customer.service.ts
│
▼
Customer Model
│
▼
MongoDBBeneficios
Datos persistentes
Consultas de base de datos adecuadas
Indexación
Validación de esquema
Acceso escalable a los datos
Índice Planificado
customers.emailEsto permite que la búsqueda de clientes por correo electrónico siga siendo eficiente a medida que el conjunto de datos crezca.
Estado
Planificado 🚧
Fase 4 — Capa de servicios y Arquitectura Limpia
Objetivo
Mantener las herramientas MCP separadas de la lógica de negocio.
En lugar de poner la lógica de la base de datos directamente dentro de la herramienta MCP:
Tool
↓
Service
↓
DatabaseEjemplo
customer.tools.ts
│
▼
customer.service.ts
│
▼
customer.model.ts
│
▼
MongoDB¿Por qué?
Esto nos proporciona:
Separación de responsabilidades: separación de responsabilidades
Capacidad de prueba
Reutilización
Mantenibilidad
Migración más fácil a REST/GraphQL/servicios internos
Estado
Planificado 🚧
Fase 5 — Cliente MCP
Objetivo
Desarrollar un cliente MCP dedicado que se conecte al servidor MCP.
┌──────────────┐
│ MCP Client │
└──────┬───────┘
│
▼
┌──────────────┐
│ MCP Server │
└──────────────┘El cliente podrá:
Descubrir herramientas
listTools()Ejecutar herramientas
callTool()Por ejemplo:
callTool(
"find_customer",
{
email: "ashwani@example.com"
}
)Estado
Planificado 🚧
Fase 6 — Integración con LLM
Objetivo
Conectar un LLM al cliente MCP.
La arquitectura queda así:
User
│
▼
LLM
│
▼
MCP Client
│
▼
MCP Server
│
▼
Tools
│
▼
MongoDBEl LLM decidirá qué herramienta se debe llamar en función de la solicitud del usuario.
Ejemplo
Usuario:
Check my latest order.IA:
I need the customer's orders.Herramienta:
get_customer_orders()La herramienta devuelve los datos del pedido.
La IA genera entonces una respuesta en lenguaje natural.
Estado
Planificado 🚧
Fase 7 — Flujo de Trabajo de Agente de IA
Objetivo
Permitir que el LLM realice flujos de trabajo de varios pasos.
Ejemplo de solicitud:
Check my latest order and create a support
ticket if it is delayed.Flujo de trabajo de la IA:
User Request
│
▼
LLM
│
▼
find_customer()
│
▼
get_customer_orders()
│
▼
Analyze orders
│
▼
Is order delayed?
/ \
Yes No
│ │
▼ ▼
create_support_ticket Response
│
▼
ResponseEsto demuestra la diferencia entre simplemente exponer herramientas y construir un agente de IA capaz de orquestar herramientas de orquestación.
Estado
Planificado 🚧
8 — Autenticación y Autorización
Objetivo
Proteger las operaciones MCP.
La autenticación verifica:
¿Quién es el usuario?
La autorización verifica:
¿Qué se le permite hacer al usuario?
Ejemplo de permisos:
customer.read
order.read
ticket.create
ticket.update
admin.refundEjemplo permisos:
Customer
├── find_customer ✅
├── get_orders ✅
├── create_ticket ✅
└── refund_order ❌
Admin
├── find_customer ✅
├── get_orders ✅
├── create_ticket ✅
└── refund_order ✅Estado
Planificado 🚧
🌐 Manejo de Errores
Objetivo
Crear un manejo de errores coherente en todas las herramientas.
Ejemplo ejemplo:
CustomerNotFoundError
OrderNotFoundError
UnauthorizedError
ValidationError
DatabaseError
ToolExecutionErrorLas respuestas de las herramientas MCP comunicarán claramente los fallos.
Ejemplo errores:
{
"isError": true,
"message": "Customer not found"
}Estado
Planificado 🚧
10 — Registro de Logs y Observabilidad
Objetivo
Realizar un seguimiento de las operaciones del MCP en producción.
Cada ejecución de una herramienta debe proporcionar información como:
Request ID
User ID
Tool name
Arguments
Execution time
Status
Error
TimestampEjemplo registro:
INFO Tool Execution
tool: get_customer_orders
customerId: customer_123
duration: 85ms
status: successObjetivos de Monitorización
Latencia de herramientas
Tasa de errores
Latencia de la base de datos
Latencia de la respuesta de la IA
Frecuencia de uso de herramientas
Llamadas de herramientas fallidas
Estado
Planificado 🚧
11 — Limitación de Peticiones
Objetivo
Proteger el servidor MCP de solicitudes excesivas o abusivas.
Estrategia potencial:
User
│
▼
Rate Limiter
│
├── Allowed ──→ MCP Tool
│
└── Blocked ──→ Rate Limit ErrorSe puede introducir Redis para la limitación de peticiones distribuida.
Ejemplo ejemplo:
100 requests / minute / userEstado
Planificado 🚧
12 — Registro de Auditoría
Objetivo
Registrar las operaciones sensibles impulsadas por la IA.
Por ejemplo:
User:
customer_123
AI requested:
create_support_ticket
Order:
order_123
Action:
Support ticket created
Timestamp:
2026-08-23T10:30:00ZEsto es particularmente importante cuando los agentes de IA pueden realizar acciones que modifiquen datos empresariales.
Estado
Planificado 🚧
13 — Pruebas
Pruebas unitarias
Probar:
Servicios
Módulos de validación
Lógica de negocio
Manejo de errores
Pruebas de integración
Probar:
MCP Tool
↓
Service
↓
MongoDBPruebas MCP
Probar:
MCP Client
↓
MCP Server
↓
ToolEjemplo
find_customer
↓
valid email
↓
customer returnedy:
find_customer
↓
invalid email
↓
validation errorEstado
Planificado 🚧
14 — Dockerización
Objetivo
Contener la aplicación.
Docker
│
├── MCP Server
│
├── MongoDB
│
└── RedisEjemplo de arquitectura de producción:
┌─────────────┐
│ AI App │
└──────┬──────┘
│
▼
┌─────────────┐
│ MCP Server │
└──────┬──────┘
│
┌──────────┼──────────┐
▼ ▼ ▼
MongoDB Redis LogsEstado
Planificado 🚧
Fase 15 — CI/CD
Objetivo
Automatizar las pruebas y el despliegue.
Pipeline:
Developer
│
▼
Git Push
│
▼
GitHub Actions
│
├── Install dependencies
├── Lint
├── Type check
├── Run tests
├── Build
└── DeployEstado
Planificado 🚧
🔐 Variables de Entorno
Nunca confirmes .env en GitHub.
Utiliza:
.envpara el desarrollo local.
Ejemplo:
MONGODB_URI=mongodb://localhost:27017/mcp-support
OPENAI_API_KEY=your_api_key
JWT_SECRET=your_secretProporciona:
.env.exampleen su lugar:
MONGODB_URI=
OPENAI_API_KEY=
JWT_SECRET=🧪 Desarrollo
Instalar dependencias:
npm installEjecutar el servidor de desarrollo:
npm run devCompilar:
npm run buildEjecutar la compilación para producción:
npm start🔍 MCP Inspector
El MCP Inspector se utiliza para probar el servidor MCP e inspeccionar las herramientas disponibles durante el desarrollo.
Ejemplo:
npx @modelcontextprotocol/inspector npx tsx src/index.tsEl Inspector nos permite: Inspector nos permite:
Conectarnos al servidor MCP
Descubrir herramientas
Inspeccionar los esquemas de las herramientas
Ejecutar herramientas
Inspeccionar las respuestas
Depurar la comunicación MCP
🧠 Conceptos MCP Demostrados
Este proyecto demuestra los siguientes conceptos de MCP:
Servidor MCP
Proporciona capacidades a los clientes MCP.
Cliente MCP
Se conecta a los servidores MCP e invoca sus capacidades.
Herramientas
Operaciones ejecutables expuestas a los sistemas de IA.
Ejemplos:
find_customer
get_customer_orders
create_support_ticketRecursos
Datos contextuales de solo lectura que se pueden exponer a un cliente MCP.
Posibles recursos futuros:
customer://customer_123
order://order_123Prompts
Plantillas o flujos de trabajo de prompt reutilizables que se exponen a través de MCP.
Posibles ejemplos:
Ejemplos potenciales:
customer_support_resolution🏆 Arquitectura de Producción
La arquitectura final está prevista que tenga el siguiente aspecto:
┌───────────────┐
│ User │
└───────┬───────┘
│
▼
┌───────────────┐
│ LLM / AI │
└───────┬───────┘
│
▼
┌───────────────┐
│ MCP Client │
└───────┬───────┘
│
▼
┌────────────────────────┐
│ MCP Server │
│ │
│ Authentication │
│ Authorization │
│ Validation │
│ Rate Limiting │
│ Logging │
└───────────┬────────────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
Customer Tool Order Tool Ticket Tool
│ │ │
└────────────────┼────────────────┘
▼
Service Layer
│
┌───────────────┼───────────────┐
▼ ▼ ▼
MongoDB Redis Logging📌 Progreso Actual
Fase | Característica | Estado |
1 | Fundamentos del Servidor MCP | ✅ Completado |
2 | Múltiples Herramientas MCP | 🚧 Planificado |
3 | Integración con MongoDB | 🚧 Planificado |
4 | Capa de Servicios | 🚧 Planificado |
5 | Cliente MCP | 🚧 Planificado |
6 | Integración con LLM | 🚧 Planificado |
7 | Flujo de Agente de IA | 🚧 Planificado |
8 | Autenticación y Autorización | 🚧 Planificado |
9 | Manejo de Errores | 🚧 Planificado |
10 | Registro y Observabilidad | 🚧 Planificado |
11 | Limitación de Peticiones | 🚧 Planificado |
12 | Registro de Auditoría | 🚧 Planificado |
13 | Pruebas | 🚧 Planificado |
14 | Dockerización | 🚧 Planificado |
15 | CI/CD | 🚧 Planificado |
💡 Ejemplo de Conversación Futura
Una vez completadas todas las fases, el sistema debería admitir conversaciones como:
Usuario
Mi último pedido no ha llegado. ¿Puedes comprobarlo y crear un ticket de soporte?
IA
1. Find customer
2. Retrieve orders
3. Identify delayed order
4. Create support ticket
5. Return ticket informationRespuesta del companero AI
Su pedido
ORD-123está retrasado. He creado el ticket de soporteTICKET-456para usted.
🎓 Temas de Entrevistas Cubiertos
Este proyecto se puede utilizar para demostrar conocimientos sobre:
Model Context Protocol
Agentes de IA
Llamadas de herramientas LLM
Llamada de funciones (function calling)
Servidores MCP
Clientes MCP
Descubrimiento de herramientas
Ejecución de herramientas
TypeScript
Node.js
MongoDB
Mongoose
Arquitectura limpia
Arquitectura de capa de servicios
Autenticación
Autorización
RBAC
Limitación de peticiones
Redis
Registro de logs
Observabilidad
Docker
CI/CD
GitHub Actions
Pruebas de software
Arquitectura backend escalable
📈 Mejoras Futuras
Las posibles mejoras futuras incluyen:
Múltiples servidores MCP
Herramientas MCP de pagos
Herramientas MCP de correo electrónico
Integración con CRM
Integración con Slack
Integración con GitHub
Base de datos vectorial
RAG
Búsqueda semántica
Aprobación de humano-en-el-bucle (human-in-the-loop)
Políticas de permisos de herramientas
Trazabilidad de ejecución de herramientas
Despliegue MCP distribuido
Despliegue en Kubernetes
👨💻 Filosofía de Desarrollo
El proyecto sigue estos principios:
Separación de responsabilidades
Tipado fuerte
Validación de entrada
Gestión segura de secretos
Lógica de negocio bajo pruebas
Ejecución de herramientas observable
Acceso a herramientas con el menor privilegio
Arquitectura escalable
Límites MCP claros
📜 Licencia
Este proyecto está pensado para el aprendizaje, la experimentación y demostración de conceptos de ingeniería MCP/IA.
Añade una licencia de código abierto adecuada antes de distribuirlo públicamente.
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