Noriyo Akita's Today I Learned

# Hugging Face MCP Course - 1. Introduction to Model Context Protocol 学習メモ

Table of Contents

Hugging Face の MCP Course Unit1 を受講したので、学習内容をまとめておく。MCPは「AIアプリケーションのためのUSB-C」と表現される新しいプロトコルで、AI統合の複雑さを劇的に軽減する可能性を秘めている。

MCPが解決する問題:M×N統合地獄

従来のAI統合では、M個のAIアプリケーションとN個の外部ツール/データソースを連携させるのに M×N個のカスタム統合 が必要だった。これは開発・メンテナンスコストが指数関数的に増大する典型的な問題。

MCPはこれを M+N問題 に変換する:

  • 各AIアプリケーション:MCPクライアントを1回実装
  • 各ツール/データソース:MCPサーバーを1回実装

これだけで全ての組み合わせが動作する。シンプルで美しい解決策だ。

アーキテクチャ:3つの要素

Host(ホスト)

ユーザーが直接触るAIアプリケーション。Claude Desktop、Cursor、カスタムアプリなど。ユーザーとのやり取りを管理し、全体のフローを調整する。

Client(クライアント)

ホスト内のコンポーネント。特定のMCPサーバーとの1対1通信を担当。プロトコルレベルの詳細を隠蔽してくれる。

Server(サーバー)

外部ツールやデータソースへのアクセスを提供。既存機能の軽量ラッパーとして動作。ローカル・リモート両対応。

4つの主要機能

Tools(ツール)

実行可能な関数。メッセージ送信、API呼び出し、計算実行など。副作用があるためユーザー承認が通常必要。

例:天気データ取得、チケット発行、ファイル操作

Resources(リソース)

読み取り専用データソース。REST APIのGETエンドポイント的な存在。複雑な計算なしでコンテキストを提供。

例:ファイル内容、データベースレコード、設定情報

Prompts(プロンプト)

事前定義されたワークフロー。ユーザー、AIモデル、機能間のインタラクションをガイド。利用可能なツールとリソースを最適活用するための構造化されたテンプレート。

Sampling(サンプリング)

サーバー主導のLLM処理要求。エージェント的な動作や再帰的インタラクションを可能にする。複雑な多段階タスクに威力を発揮。

通信プロトコル

基盤:JSON-RPC 2.0

  • 軽量なリモートプロシージャコール
  • 人間が読みやすいJSON形式
  • 言語非依存
  • 明確な仕様と実績

メッセージタイプ

  • Request:クライアント→サーバーの操作指示
  • Response:リクエストに対する応答(成功/エラー)
  • Notification:サーバー→クライアントの一方向メッセージ

トランスポート

  • stdio:ローカル通信用。シンプル、ネットワーク設定不要
  • HTTP+SSE:リモート通信用。ネットワーク越え、Webサービス連携

実装:SDKとGradio統合

MCP SDK

TypeScript、Python、Java、Kotlin、C#、Swift、Rust、Dart/Flutterで利用可能。プロトコル詳細を隠蔽し、開発者は機能実装に集中できる。

@mcp.tool()
def get_weather(location: str) -> str:
# 天気データ取得ロジック
pass
@mcp.resource()
def weather_resource(location: str) -> str:
# 天気リソース提供
pass

Gradio統合

demo.launch(mcp_server=True) だけでGradioアプリがMCPサーバーに変身。人間向けWebUIとAI向けAPIを同時提供できる。

動的発見の威力

MCPクライアントは接続時に tools/listresources/listprompts/list でサーバーの機能を動的発見。ハードコードされた知識不要で、各サーバーの特定機能に適応できる。

これにより、基本的なサーバーと高度なサーバーを同一エコシステム内で混在可能。拡張性が高い。

個人的な感想

MCPは統合問題に対する非常にエレガントな解決策だと感じた。特に:

  1. 標準化の価値:プロトコル統一により開発効率が劇的向上
  2. モジュラー設計:各コンポーネントが独立して進化可能
  3. 実用性:Gradio統合など、すぐに使える形で提供

次のステップ

Unit2では実際に Gradio を使って MCP サーバーを構築し、複数のクライアントと接続することで、エンドツーエンドの MCP アプリケーションを構築する方法を学ぶ。

参考: HuggingFace MCP Course Unit1

My avatar

Thanks for reading my blog post! Feel free to check out my other posts or contact me via the social links in the footer.


More Posts