MCP Customer Support AI
MCP Customer Support AI
本项目是一个面向生产的 Model Context Protocol (MCP) 项目,使用 Node.js、TypeScript、MongoDB 和 LLM 构建。
本项目展示了 AI 应用程序如何通过 MCP 工具,以结构化、安全且可扩展的方式与外部系统交互。
项目采用增量方式开发,从基本的 MCP 服务器和工具开始,逐步演进为一个生产风格的 AI 驱动型客户支持系统。
🚀 项目概述
本项目的目标是构建一个 AI 驱动的客户支持助手,使其能够理解用户请求并通过 MCP 工具执行真实世界中的操作。
示例
用户可能会问:
"查看我的最新订单,如果订单延迟就创建一个支持工单。"
AI 可以判断出它需要:
查找客户。
获取该客户的订单。
识别延迟的订单。
创建一个支持工单。
AI 不会直接访问数据库。
它通过 MCP 工具与应用程序交互。
User
│
▼
AI / LLM
│
▼
MCP Client
│
▼
┌─────────────┐
│ MCP Server │
└──────┬──────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
Customer Tool Order Tool Ticket Tool
│ │ │
└────────────┼────────────┘
▼
Services
│
▼
MongoDB🎯 项目目标
本项目旨在演示:
MCP 服务器开发
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 或生产概念。
阶段 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优势
持久化数据
规范的数据库查询
索引
Schema 验证
可扩展的数据访问
计划索引
customers.email这确保了随着数据集的增长,按邮箱查找客户仍然是高效的。
状态
计划中 🚧
阶段 4 — 服务层与整洁架构
目标
将 MCP 工具与业务逻辑分离。
而不是将数据库逻辑直接放在 MCP 工具内部:
Tool
↓
Service
↓
Database示例
customer.tools.ts
│
▼
customer.service.ts
│
▼
customer.model.ts
│
▼
MongoDB为什么?
这样做的好处是:
关注点分离
可测试性
可重用性
可维护性
更容易迁移到 REST/GraphQL/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 操作的安全。
身份验证验证:
用户是谁?
授权验证:
用户被允许做什么?
示例权限:
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
ToolExecutionErrorMCP 工具响应将清晰地传达失败信息。
示例:
{
"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监控目标
工具延迟
错误率
数据库延迟
AI 响应延迟
工具使用频率
失败的工具调用
状态
计划中 🚧
阶段 11 — 速率限制
目标
保护 MCP 服务器免受请求过多或恶意请求的影响。
潜在策略:
User
│
▼
Rate Limiter
│
├── Allowed ──→ MCP Tool
│
└── Blocked ──→ Rate Limit Error可以引入 Redis 实现分布式速率限制。
示例:
100 requests / minute / user状态
计划中 🚧
阶段 12 — 审计日志
目标
记录 AI 驱动的敏感操作。
例如:
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 化
目标
将应用程序容器化。
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运行生产构建:
npm start🔍 MCP Inspector
MCP Inspector 用于在开发过程中测试 MCP 服务器并检查可用工具。
示例:
npx @modelcontextprotocol/inspector npx tsx src/index.tsInspector 允许我们:
连接到 MCP 服务器
发现工具
检查工具 schema
执行工具
检查响应
调试 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