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 搭載のカスタマーサポートアシスタントを構築することです。

ユーザーは次のように質問できます:

「最新の注文を確認して、遅延している場合はサポートチケットを作成してください。」

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 概念や本番運用の概念をできるように、意図的に段階に分かれています。


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/内部サービスへの移行の容易さ

20

予定 🚧


Phase 5 — MCP クライアント

目的

MCP サーバーに接続する専用の MCP クライアントを構築します。

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

クライアントは次のことができます:

ツールの発見

listTools()

ツールの実行

callTool()

例:

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

ステータス

予定 🚧


Phase 6 — LLM 統合

目的

MCP クライアントに従って LLM を接続します。

アーキテクチャは次:

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 サーバーに接続し、そBebeの機能を呼び出します。

ツール

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

📌 現在の進捗

Phase

内容/機能

ステータス

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