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는 다음 작업이 필요하다고 판단할 수 있습니다:
고객을 찾습니다.
고객의 주문을 조회합니다.
지연된 주문을 식별합니다.
지원 티켓을 생성합니다.
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
│
▼
MongoDBLLM은 사용자의 요청에 따라 어떤 도구를 호출할지 결정합니다.
예시
사용자:
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
ToolExecutionErrorMCP 도구 응답은 실패를 명확하게 전달합니다.
예시:
{
"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:00ZAI 에이전트가 비즈니스 데이터를 수정하는 작업을 수행할 수 있는 경우 이는 특히 중요합니다.
상태
계획됨 🚧
Phase 13 — 테스팅
단위 테스트
테스트:
서비스
검증
비즈니스 로직
오류 처리
통합 테스트
테스트:
MCP Tool
↓
Service
↓
MongoDBMCP 테스트
테스트:
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.tsInspector를 사용하면 다음을 할 수 있습니다:
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 informationAI 응답
주문
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 엔지니어링 개념을 학습, 실험 및 시학하는 용도로 제작되었습니다.
공개적으로 배포하기 전에 적절한 오픈소스 라이선스를 추가하십시오.
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