Skip to main content
Glama
ashwani-yadav83602

MCP Customer Support AI

MCP Customer Support AI

本项目是一个面向生产的 Model Context Protocol (MCP) 项目,使用 Node.js、TypeScript、MongoDB 和 LLM 构建。

本项目展示了 AI 应用程序如何通过 MCP 工具,以结构化、安全且可扩展的方式与外部系统交互。

项目采用增量方式开发,从基本的 MCP 服务器和工具开始,逐步演进为一个生产风格的 AI 驱动型客户支持系统。


🚀 项目概述

本项目的目标是构建一个 AI 驱动的客户支持助手,使其能够理解用户请求并通过 MCP 工具执行真实世界中的操作。

示例

用户可能会问:

"查看我的最新订单,如果订单延迟就创建一个支持工单。"

AI 可以判断出它需要:

  1. 查找客户。

  2. 获取该客户的订单。

  3. 识别延迟的订单。

  4. 创建一个支持工单。

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
 │
 ▼
MongoDB

LLM 将根据用户的请求决定应调用哪个工具。

示例

用户:

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

监控目标

  • 工具延迟

  • 错误率

  • 数据库延迟

  • 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
   ↓
MongoDB

MCP 测试

测试内容:

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.ts

Inspector 允许我们:

  • 连接到 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 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