MCP Customer Support AI
MCP Customer Support AI
Node.js、TypeScript、MongoDB、LLM で作られた、本番向けの Model Context Protocol (MCP) プロジェクトです。
このプロジェクトは、AIアプリケーションが MCP ツールを通じて外部システムと構造化・安全・スケーラブルな方法で連携できる仕組みを示しています。
このプロジェクトは、基本的なMCPサーバーとツールから始まり、本番運用型のAIカスタマーサポートシステムへと段階的に構築されています。
🚀 プロジェクト概要
このプロジェクトの目標は、ユーザーのリクエストを理解し、MCP ツールを使って実際のビジネス操作を実行できる、AI 搭載のカスタマーサポートアシスタントを構築することです。
例
ユーザーは次のように質問できます:
「最新の注文を確認して、遅延している場合はサポートチケットを作成してください。」
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 エージェントワークフロー
🛠️ 技術スタック
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
│
▼
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 サーバーに接続し、そ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 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 deployed
Maintenance
Related MCP Connectors
Build and manage AI-native customer support agents from Claude or any MCP client.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Build and run AI workflows, agents, data tables and 1000+ API integrations from any MCP client.
Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI-powered customer support with real-time access to CRM, ticketing, and communication tools via MCP, supporting context-aware conversations and automated actions.Apache 2.0
- AlicenseNot gradedqualityDmaintenanceExposes 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.1MIT
- FlicenseNot gradedqualityCmaintenanceProvides MCP tools for hybrid knowledge base search, grounded Q&A with citations, agent execution, and ticket/account lookups.-
- FlicenseNot gradedqualityCmaintenanceEnables 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.-