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 エージェントワークフロー
🛠️ 技術スタック
バックエンド
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 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