Skip to main content
Glama
MCP Customer Support AI

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 エージェントワークフロー


🛠️ 技術スタック

Related MCP server: support-agent-mcp

バックエンド

  • 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エンジニアリング概念のデモンストレーションを目的としています。

公開する前に、文ためのオープンソースライセンスを追加してください。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Exposes order status lookup and knowledge base search tools from the Support Agent AI over MCP, enabling MCP clients to handle customer support queries with grounded, citation-backed answers.
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to handle customer support by looking up order status, semantically searching knowledge bases, and creating support tickets through MCP tools, with grounded answers and automated evaluations.
    -