2026年、Model Context Protocol(MCP)はAIエージェント開発のデファクトスタンダードへと成長しました。Cursor、Claude Code、GitHub Copilot、そして無数のOSSプロジェクトがMCP対応を表明し、ツール呼び出しの統一プロトコルとしての地位を確立しています。しかし、この急速な普及の裏で**認證の欠如**、**入力サニタイズの不備**、**スパイラスティクス攻撃**といったセキュリティリスクが顕在化しています。本稿では、ECサイトのAIカスタマーサービス、エンタープライズRAGシステム、個人開発者のプロジェクトという3つの具体的なユースケースから、MCP導入時に直面する安全问题とその対処法を実例とともに解説します。
1. MCPプロトコルとは:2026年現在の技術的 landscape
MCPは、LLM(大規模言語モデル)と外部ツール/データソースを結びつけるための**開放型プロトコル**です。2023年末にAnthropicが提唱して以来、以下のような経緯で進化してきました:
- 2024年Q1:Claude Desktop Official Betaとして限定公開
- 2024年Q3:MCP Specification 1.0公開、サーバー/クライアント実装がOSSとしてフォーク
- 2025年:Cursor、Windsurf、Continue.devがMCPネイティブサポートを表明
- 2026年:Microsoft、Google、MetaがMCP互換レイヤー導入を宣言
MCPの**コアコンセプト**は「Host」「Client」「Server」の3層アーキテクチャです。HostがユーザーインターフェースとLLMを包括し、Clientが個別の接続を管理し、Serverがファイルシステムやデータベース、Web APIといったリソースを公開します。
2. ユースケース1:ECサイトのAIカスタマーサービスへのMCP導入
筆者が担当した某アパレルECサイトでは、従来のルールベースチャットボットからMCPを活用したAIサービスへの移行を実施しました。このプロジェクトでは**商品データベース**への直接アクセス、**在庫inquirement**システム、**注文statusinquirement**の3つのMCPサーバーを構築しました。
2.1 システム構成
┌─────────────────────────────────────────────────────────────┐
│ MCP Host (Claude/Cursor) │
├──────────────┬──────────────┬──────────────┬────────────────┤
│ Client-1 │ Client-2 │ Client-3 │ Client-N │
│ (Product DB) │ (Inventory) │ (Orders) │ (Custom) │
├──────────────┴──────────────┴──────────────┴────────────────┤
│ MCP Server Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ PostgreSQL │ │ Redis │ │ REST APIs │ │
│ │ 34ms avg │ │ 12ms avg │ │ (External) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
2.2 実装コード:TypeScriptによるMCPサーバ構築
以下はECサイト向けMCPサーバーの実装例です。HolySheep AIのAPIキーを 사용하여 商品推荐機能を実装しています:
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
const server = new Server(
{ name: 'ecommerce-mcp-server', version: '1.0.0' },
{ capabilities: { tools: {} } }
);
// HolySheep AI API configuration
const HOLYSHEEP_API_KEY = process.env.HOLYSHEEP_API_KEY;
const HOLYSHEEP_BASE_URL = 'https://api.holysheep.ai/v1';
// 商品推荐 function
async function recommendProducts(userQuery: string, userId: string) {
const response = await fetch(${HOLYSHEEP_BASE_URL}/chat/completions, {
method: 'POST',
headers: {
'Authorization': Bearer ${HOLYSHEEP_API_KEY},
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'gpt-4.1',
messages: [
{
role: 'system',
content: 'あなたはECサイトの商品推荐AIです。ユーザーの好みに合った商品をおすすめします。'
},
{
role: 'user',
content: ユーザー${userId}のクエリ: ${userQuery}
}
],
max_tokens: 500
})
});
if (!response.ok) {
throw new Error(HolySheep API Error: ${response.status});
}
return response.json();
}
// ツール一覧登録
server.setRequestHandler(ListToolsRequestSchema, async () => {
return {
tools: [
{
name: 'recommend_products',
description: 'ユーザーの好みに基づいて商品を推荐します',
inputSchema: {
type: 'object',
properties: {
user_query: { type: 'string', description: 'ユーザーの検索クエリ' },
user_id: { type: 'string', description: 'ユーザーID' },
category: { type: 'string', description: '商品カテゴリー' }
},
required: ['user_query', 'user_id']
}
},
{
name: 'check_inventory',
description: '商品の在庫状況を確認します',
inputSchema: {
type: 'object',
properties: {
product_id: { type: 'string', description: '商品ID' },
size: { type: 'string', description: 'サイズ' },
color: { type: 'string', description: 'カラー' }
},
required: ['product_id']
}
}
]
};
});
// ツール呼び出しハンドラー
server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
try {
if (name === 'recommend_products') {
const result = await recommendProducts(args.user_query, args.user_id);
return {
content: [{ type: 'text', text: JSON.stringify(result) }]
};
}
if (name === 'check_inventory') {
// 在庫確認ロジック
const inventory = await checkInventoryFromDB(args.product_id);
return {
content: [{ type: 'text', text: JSON.stringify(inventory) }]
};
}
throw new Error(Unknown tool: ${name});
} catch (error) {
return {
content: [{ type: 'text', text: Error: ${error.message} }],
isError: true
};
}
});
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error('E-commerce MCP Server running on stdio');
}
main().catch(console.error);
この実装では、HolySheep AIの¥1=$1恩恵を受けて、GPT-4.1を**月額usage**$8/million tokensというコストで運用