Skip to main content
Glama
ashwani-yadav83602

MCP Customer Support AI

MCP Customer Support AI

Node.js, TypeScript, MongoDB, LLM로 구축된 프로덕션 지향 Model Context Protocol (MCP) 프로젝트입니다.

이 프로젝트는 AI 애플리케이션이 MCP 도구를 통해 구조화되고 안전하며 확장 가능한 방식으로 외부 시스템과 상호작용하는 방법을 보여줍니다.

이 프로젝트는 기본 MCP 서버와 도구에서 시작하여 프로덕션 스타일의 AI 기반 고객 지원 시스템으로 점진적으로 개발됩니다.


🚀 프로젝트 개요

이 프로젝트의 목표는 사용자 요청을 이해하고 MCP 도구를 사용하여 실제 작업을 수행할 수 있는 AI 기반 고객 지원 어시스턴트를 구축하는 ICS입니다.

예시

사용자는 다음과 같이 요청할 수 있습니다:

"최신 주문을 확인하고 지연된 경우 지원 티켓을 생성해 주세요."

AI는 다음 작업이 필요하다고 판단할 수 있습니다:

  1. 고객을 찾습니다.

  2. 고객의 주문을 조회합니다.

  3. 지연된 주문을 식별합니다.

  4. 지원 티켓을 생성합니다.

AI는 데이터베이스에 직접 접근하지 않습니다.

대신 MCP 도구를 통해 애플리케이션과 상호작용합니다.

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

🎯 프로젝트 목표

이 프로젝트는 다음을 보여줍니다:

  • MCP server 개발

  • MCP 도구 생성

  • MCP 클라이언트통신

  • AI 도구 호출

  • TypeScript 아키텍처

  • MongoDB 통합

  • 서비스 계층 아키텍처

  • 입력 값 검증

  • 오류 처리

  • 인증 및 권한 부여

  • 로깅 및 모니터링

  • 감사 로깅

  • 프로덕션 지향 MCP 아키텍처

  • AI 에이전트 워크플로우


🛠️ 기술 스택

백엔드

  • Node.js

  • TypeScript

  • MCP SDK

  • Zod

  • MongoDB

  • Mongoose

AI

  • 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 또는 프로덕션 개념을 소개할 수 있도록 의도적으로 여러 단계로 나뉘어 있습니다.


Phase 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

상태

완료 ✅


Phase 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()

상태

계획됨 🚧


Phase 3 — MongoDB 통합

목표

더미 데이터를 실제 영구 데이터로 교체합니다.

데이터베이스

MongoDB

컬렉션

customers
orders
support_tickets

아키텍처

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

예시

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

장점

  • 영구 데이터

  • 적절한 데이터베이스 쿼리

  • 인덱싱

  • 스키마 검증

  • 확장 가능한 데이터 접근

계획된 인덱스

customers.email

이를 통해 데이터셋이 커져도 이메일 데이터 검색이 효율적으로 유지됩니다.

상태

계획됨 🚧


Phase 4 — 서비스 계층 및 깨끗한 아키텍처

목표

MCP 도구와 비즈니스 로직을 분리합니다.

데이터베이스 로직을 MCP 도구 내부에 직접 배치하는 대신:

Tool
 ↓
Service
 ↓
Database

예시

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

왜 이런가?

이를 통해 얻을 수 있는 것:

  • 관심사 분리

  • 테스트 가능성

  • 재사용성

  • 유지보수 용이성

  • REST/GraphQL/내부 서비스로의 전환이 용이

상태

계획됨 🚧


Phase 5 — MCP 클라이언트

목표

MCP 서버에 연결하는 전용 MCP 클라이언트를 구축합니다.

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

클라이언트는 다음을 할 수 있습니다:

도구 발견

listTools()

도구 실행

callTool()

예를 들어:

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

상태

계획됨 🚧


Phase 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는 자연어 응답을 생성합니다.

상태

계획됨 🚧


Phase 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 에이전트를 구축하는 것의 차이를 보여줍니다.

상태

계획됨 🚧


Phase 8 — 인증 및 권한 부여

목표

MCP 작업을 안전하게 보호합니다.

인증은 다음을 확인합니다:

사용자는 누구인지?

권한 부여는 다음을 확인합니다:

사용자는 무엇이 허용되는가?

예시 권한:

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        ✅

상태

계획됨 🚧


Phase 9 — 오류 처리

목표

모든 도구에 일관된 오류 처리를 구축합니다.

예시:

CustomerNotFoundError
OrderNotFoundError
UnauthorizedError
ValidationError
DatabaseError
ToolExecutionError

MCP 도구 응답은 실패를 명확하게 전달합니다.

예시:

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

상태

계획됨 🚧


Phase 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

모니터링 목표

  • 도구 지연 시간

  • 오류율

  • 데이터베이스 지연 시간

  • AI 응답 지연 시간

  • 도구 사용 빈도

  • 실패한 도구 호출

상태

계획됨 🚧


Phase 11 — 속도 제한

목표

MCP 서버를 과도하거나 악성적인 요청으로부터 보호합니다.

가능한 전략:

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

분산 속도 제한을 위해 Redis를 도입할 수 있습니다.

예시:

100 requests / minute / user

상태

계획됨 🚧


Phase 12 — 감사 로깅

목표

민감한 AI 기반 작업을 기록합니다.

예를 들어:

User:
customer_123

AI requested:
create_support_ticket

Order:
order_123

Action:
Support ticket created

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

AI 에이전트가 비즈니스 데이터를 수정하는 작업을 수행할 수 있는 경우 이는 특히 중요합니다.

상태

계획됨 🚧


Phase 13 — 테스팅

단위 테스트

테스트:

  • 서비스

  • 검증

  • 비즈니스 로직

  • 오류 처리

통합 테스트

테스트:

MCP Tool
   ↓
Service
   ↓
MongoDB

MCP 테스트

테스트:

MCP Client
   ↓
MCP Server
   ↓
Tool

예시

find_customer
    ↓
valid email
    ↓
customer returned

및:

find_customer
    ↓
invalid email
    ↓
validation error

상태

계획됨 🚧


Phase 14 — Docker화

목표

애플리케이션을 컨테이너화합니다.

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

예시 프로덕션 아키텍처:

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

상태

계획됨 🚧


Phase 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

프로덕션 빌드 실행:

npm start

🔍 MCP Inspector

MCP Inspector는 개발 중에 MCP 서버를 테스트하고 사용 가능한 도구를 검사하는 데 사용됩니다.

예시:

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

Inspector를 사용하면 다음을 할 수 있습니다:

  • MCP 서버에 연결

  • 도구 발견

  • 도구 스키마 검사

  • 도구 실행

  • 응답 검사

  • MCP 통신 디버그


🧠 설명된 MCP 개념

이 프로젝트는 다음 MCP 개념을 보여줍니다:

MCP 서버

MCP 클라이언트에게 기능을 제공합니다.

MCP 클라이언트

MCP 서버에 연결하고 기능을 호출합니다.

도구

AI 시스템에 노출되는 실행 가능한 작업입니다.

예시:

find_customer
get_customer_orders
create_support_ticket

리소스

MCP 클라이언트에 노출할 수 있는 읽기 전용 컨텍스트 데이터입니다.

잠재적 추가 리소스:

customer://customer_123
order://order_123

프롬프트

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 서버 기초

✅ 완료

2

여러 MCP 도구

🚧 계획됨

3

MongoDB 통합

🚧 계획됨

4

서비스 계층

🚧 계획됨

5

MCP 클라이언트

🚧 계획됨

6

LLM 통합

🚧 계획됨

7

AI 에이전트 워크플로우

🚧 계획됨

8

인증 및 권한 부여

🚧 계획됨

9

오류 처리

🚧 계획됨

10

로깅 및 관측 가능성

🚧 계획됨

11

속도 제한

🚧 계획됨

12

감사 로깅

🚧 계획됨

13

테스트

🚧 계획됨

14

Docker화

🚧 계획됨

15

CI/CD.

🚧 계획됨


💡 예시 미래 대화

모든 단계가 완료되면 시스템은 다음과 같은 대화를 지원해야 합니다:

사용자

최신 주문이 아직 도착하지 않았습니다. 확인하고 지원 티켓을 만들어 주시겠습니까?

AI

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

AI 응답

주문 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

  • 의미 검색

  • 사람 검토 승인

  • 도구 권한 정책

  • 도구 실행 추적

  • 분산 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