1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MCPサーバーをWeb APIと比較してみる

Posted at

MCPサーバーとWebAPI(以下API)は異なる目的を持つ技術ですが、両方とも外部サービスとの連携を実現するコンポーネントです。以下で比較していきます。

特性 API MCPサーバー
基本的な目的 特定の機能やデータへのアクセスを提供する AIモデルと外部サービスを統合するためのプロトコル
設計思想 クライアント-サーバー型の直接的な通信 AIエージェントのためのツール統合プラットフォーム
主要な機能 データの送受信、計算処理 ツール管理、ワークフロー制御、リソース統合
柔軟性 固定されたエンドポイントと機能 動的ツール追加とカスタマイズが可能
通知機能 通常はなし リソース変更のリアルタイム通知が可能
セキュリティ 基本的な認証機能 ツールレベルでのアクセス制御が可能

上記の図について補足説明します:

  • 色分け:
    • オレンジ系:従来のAPI方式のコンポーネント
    • 青系:MCPサーバーのコンポーネント
  • 矢印:
    • 実線(→):直接的なリクエスト/レスポンスの流れ
    • 点線(-.>):データの依存関係や管理関係
  • 主要な違い:
    • API方式は単純なクライアント-サーバー構造
    • MCP方式はツールとリソースを通じた多層的な統合を実現

具体的な使用のコード例

APIの典型的な使用のコード例:

# シンプルなAPI呼び出し
response = requests.get('<https://api.example.com/users>')
data = response.json()

MCPサーバーの使用のコード例:

# SQLiteデータベースを操作するMCPサーバー
@app.call_tool()
async def call_tool(name: str, arguments: dict):
    if name == "get-top-products":
        date = arguments.get("date")
        limit = arguments.get("limit", 5)
        # データベースクエリ実行
        products = db.query("SELECT * FROM products ORDER BY sales DESC LIMIT ?", limit)
        return [types.TextContent(type="text", text=str(products))]

実践的な活用例

APIの活用例:

  • Webサービスとの連携
  • データ取得・更新
  • 認証・認可処理

MCPサーバーの活用例:

  • GitHubリポジトリの分析と自動化
  • データベース操作の統合
  • ファイルシステムとの連携
  • AIエージェントによるワークフロー自動化
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?