読者が抱える課題
LLM(大規模言語モデル)を組み込んだアプリケーションを開発する際、外部データやシステム機能と連携する手法として、従来のREST API呼び出しに加え、Model Context Protocol(MCP)が選択肢として登場しています。
しかし、「単に既存のREST APIをLLMに呼び出させればよいのか」「MCPを導入すべきケースはどこか」という設計上の判断基準が整理されていないケースが多く見られます。
この記事で分かること
- REST APIとMCPの根本的な役割と構造の違い
- MCPサーバーの実装例(Python)とREST APIラッパーの構成
- 実務におけるアーキテクチャ選定の判断基準とチェックリスト
対象読者・前提条件
- 対象読者: LLMを活用したシステムやエージェント機能を設計・開発するエンジニア
- 前提知識: Web API(REST API)の基本的な理解、Pythonの基本文法
MCPとREST APIの概念比較
REST APIは「クライアントとサーバー間でリソースを操作するための汎用的な規格」です。一方、MCP(Model Context Protocol)は「LLM(またはAIクライアント)が、コンテキストやツール、プロンプトなどの外部リソースに安全かつ標準化された手順でアクセスするためのプロトコル」です。
両者は競合するものではなく、「MCPサーバーの裏側でREST APIを呼び出す」 という補完関係になることが一般的です。
| 項目 | REST API | MCP (Model Context Protocol) |
|---|---|---|
| 主な目的 | アプリケーション間のデータ連携・リソース操作 | LLMに対するツール・コンテキスト情報の標準提供 |
| インターフェース | HTTP/HTTPS (GET, POST, PUT, DELETE等) | JSON-RPC 2.0 (stdio, Server-Sent Events等) |
| スキーマ定義 | OpenAPI (Swagger) 等 | MCP仕様に基づくTool / Resource / Prompt定義 |
| 呼び出し元 | Webフロントエンド、他バックエンドサービス | MCPクライアント(Claude Desktop、AIエージェント等) |
| 状態管理 | 通常はステートレス | セッション管理や機能の動的発見に対応 |
実装例:既存REST APIをMCPツールとして読み替える
以下は、Pythonの mcp SDKを用いて、天気情報を返却する既存REST APIをLLMが利用できるMCPツールとして構築する簡易例です。
※ 実行する際は、事前に pip install mcp httpx を実行し、環境に合わせた認証情報やエンドポイントの設定を行ってください。
# mcp_server_example.py (独自実装例)
import httpx
from mcp.server.fastmcp import FastMCP
# MCPサーバーの初期化
mcp = FastMCP(