要約
Model Context Protocol (MCP) は、AIアシスタントを外部データソースやAPIに接続するための標準規格です。これにより、Claude Desktop、Cursor、その他のAIツールがAPIに安全にアクセスできるようになります。Modern PetstoreAPIはMCPを実装しており、AIアシスタントが自然言語を介してペットの検索、注文、在庫管理を行うことができます。
はじめに
Claude Desktopに「300ドル以下の利用可能な猫を見せてください」と尋ねると、Claudeは「ペットストアのデータにアクセスできません」と答えます。ワークフローを中断して、APIからコピー&ペーストする必要があるでしょう。
MCP(Model Context Protocol)を使用すると、ClaudeはあなたのAPIに直接アクセスできます。同じ質問をすると、ClaudeはPetstoreAPIを照会し、結果をフィルタリングして、300ドル以下の利用可能な猫を表示します。
Modern PetstoreAPIはMCPを実装しており、AIアシスタントが自然言語を介してペットストアとやり取りできるようにします。
AI統合のためのAPIを構築している場合、ApidogはMCP実装のテストやAIアシスタントのインタラクションの検証を支援します。
MCPとは?
MCPは、AIアシスタントを外部リソースに接続するためにAnthropicによって作成されたプロトコルです。
MCPが解決する問題
AIアシスタントは強力ですが、孤立しています。以下のことはできません。
- 会社の内部APIにアクセスする
- データベースを照会する
- ファイルシステムからファイルを読み取る
- 外部サービスとやり取りする
MCPは、AIアシスタントがこれらのリソースに安全に接続するための標準的な方法を提供します。
MCPコンポーネント
1. MCPサーバー - リソースとツールをAIアシスタントに公開します
2. MCPクライアント - AIアシスタント(Claude Desktop、Cursorなど)
3. リソース - AIが読み取ることができるデータ(ファイル、データベースレコード、API応答)
4. ツール - AIが実行できるアクション(注文の作成、ペットの更新、在庫の検索)
MCPアーキテクチャ
AI Assistant (Claude Desktop)
↓ MCP Protocol
MCP Server (PetstoreAPI MCP Server)
↓ Internal APIs
PetstoreAPI Backend
↓
Database
MCPの仕組み
1. サーバー登録
Claude DesktopをMCPサーバーに接続するように設定します。
{
"mcpServers": {
"petstore": {
"command": "node",
"args": ["/path/to/petstore-mcp-server.js"],
"env": {
"PETSTORE_API_KEY": "your-api-key"
}
}
}
}
2. ツール発見
AIアシスタントが尋ねます。「利用可能なツールは何ですか?」
MCPサーバーが応答します。
{
"tools": [
{
"name": "search_pets",
"description": "Search for pets by species, status, and price",
"inputSchema": {
"type": "object",
"properties": {
"species": {"type": "string", "enum": ["CAT", "DOG"]},
"maxPrice": {"type": "number"},
"status": {"type": "string", "enum": ["AVAILABLE", "ADOPTED"]}
}
}
},
{
"name": "create_order",
"description": "Place an order for a pet",
"inputSchema": {
"type": "object",
"properties": {
"petId": {"type": "string"},
"userId": {"type": "string"}
},
"required": ["petId", "userId"]
}
}
]
}
3. ツール実行
ユーザーが尋ねます。「300ドル以下の利用可能な猫を見せてください」
AIアシスタントが呼び出します。
{
"tool": "search_pets",
"arguments": {
"species": "CAT",
"status": "AVAILABLE",
"maxPrice": 300
}
}
MCPサーバーが実行します。
async function search_pets({ species, status, maxPrice }) {
const response = await fetch(
`https://petstoreapi.com/v1/pets?species=${species}&status=${status}&maxPrice=${maxPrice}`
);
return await response.json();
}
結果をAIに返し、AIがユーザー向けにフォーマットします。
MCPと従来のAPIの比較
| 機能 | 従来のAPI | MCP |
|---|---|---|
| アクセス | 直接HTTP | AIアシスタント経由 |
| インターフェース | REST/GraphQL | 自然言語 |
| 認証 | APIキー、OAuth | MCPサーバーが認証を処理 |
| 発見 | OpenAPIドキュメント | ツールスキーマ |
| 利用 | コード/curl | 会話型 |
| エラー処理 | HTTPステータスコード | AIがエラーを解釈 |
比較例
従来のAPI:
curl -H "Authorization: Bearer token" \
"https://petstoreapi.com/v1/pets?species=CAT&maxPrice=300"
MCP:
User: 「300ドル以下の利用可能な猫を見せてください」
AI: [search_petsツールを呼び出し、結果をフォーマット]
"こちらが300ドル以下の利用可能な猫5匹です。
1. Fluffy - 250ドル
2. Whiskers - 280ドル
..."
Modern PetstoreAPIはMCPをどのように実装しているか
Modern PetstoreAPIはMCPサーバーを提供します。
利用可能なツール
1. search_pets - 条件でペットを検索 2. get_pet - ペットの詳細を取得 3. create_order - 注文を行う 4. get_inventory - 在庫を確認 5. update_pet_status - ペットの利用可能性を更新
例: 検索と注文
ユーザー: 「500ドル以下の犬を見つけて注文してください」
AIのワークフロー:
1. search_pets({species: "DOG", maxPrice: 500}) を呼び出す
2. ユーザーに結果を表示する
3. ユーザーが確認:「ラブラドールを注文する」
4. create_order({petId: "019b4132", userId: "user-456"}) を呼び出す
5. 注文が完了したことを確認
MCPサーバーコード
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
const server = new Server({
name: 'petstore-mcp',
version: '1.0.0'
}, {
capabilities: {
tools: {}
}
});
server.setRequestHandler('tools/list', async () => ({
tools: [
{
name: 'search_pets',
description: 'Search for pets',
inputSchema: {
type: 'object',
properties: {
species: { type: 'string' },
maxPrice: { type: 'number' }
}
}
}
]
}));
server.setRequestHandler('tools/call', async (request) => {
const { name, arguments: args } = request.params;
if (name === 'search_pets') {
const response = await fetch(
`https://petstoreapi.com/v1/pets?${new URLSearchParams(args)}`
);
return { content: [{ type: 'text', text: JSON.stringify(await response.json()) }] };
}
});
const transport = new StdioServerTransport();
await server.connect(transport);
ApidogでMCPをテストする
ApidogはMCP実装のテストを支援します。
- 基盤となるAPIが正しく機能するかテストする
- ツールスキーマがAPI契約と一致するか検証する
- エラー処理をテストする
- 認証フローを検証する
MCPが重要である理由
1. AIネイティブなAPI
APIが自然言語を介してアクセス可能になります。非技術系のユーザーもAIアシスタントを介してAPIとやり取りできます。
2. 標準化
MCPはAI-API統合の標準となりつつあります。一度サポートすれば、すべてのMCPクライアントで機能します。
3. セキュリティ
MCPサーバーが認証を処理します。AIアシスタントは直接APIにアクセスする必要はありません。
4. 組み合わせ可能性 (Composability)
AIアシスタントは複数のMCPサーバーを組み合わせ、サービスを横断するワークフローを作成できます。
結論
MCPはAIアシスタントとAPIの架け橋となります。Modern PetstoreAPIはMCPを実装しており、Claude Desktopやその他のAIツールが自然言語を介してペットストアとやり取りできるようにします。
主なポイント:
- MCPはAIアシスタントをAPIに接続します
- ツールはAIができることを定義します
- 自然言語がAPI呼び出しに取って代わります
- Modern PetstoreAPIはMCPの実装を示しています
よくある質問
どのAIアシスタントがMCPをサポートしていますか?
Claude Desktop、Cursor、その他のAnthropic製のツールが対応しています。サポートは拡大中です。
MCPは安全ですか?
はい。MCPサーバーが認証を処理します。AIアシスタントはAPIキーを認識しません。
既存のAPIでMCPを使用できますか?
はい。既存のAPIをラップするMCPサーバーを構築することで可能です。
MCPはREST APIに取って代わるものですか?
いいえ。MCPはAIアシスタントからのアクセス用です。REST APIは直接プログラムによるアクセス用として引き続き使用されます。
MCPツールをテストするにはどうすればよいですか?
Apidogを使用して基盤となるAPIをテストし、その後Claude DesktopでMCPツールをテストします。
