1年前は生成AIという言葉が流行っていましたが、今年はAIエージェントという言葉が世の中で流行っています。
AIエージェントは、デジタルおよびリアルの環境で、状況を知覚し、意思決定を下し、アクションを起こし、
目的を達成するためにAI技法を適用する自律的または半自律的なソフトウェアです。
とガートナー社によって定義されています。
企業にとっては、社内の業務効率化を大きく推進する可能性を秘めた技術であるため、注目度が高まっています。
AIエージェントを実現するためには従来のRAGやチャットボット以外にも外部ツールとの連携も必要になります。 この外部ツールと連携するためにClaudeを提供するAnthropic社が提唱するのがMCP(Model Context Protocol)です。
MCP(Model Context Protocol)とは?
AIと外部のデータやサービスをつなぐための共通ルールです。
MCP は生成AIモデルと様々なデータソースやツールを標準化された方法で接続します。
Anthropic社はAIのUSB-Cポートと表現しており、それほどAIエージェントの実現には欠かせないツールと言えるでしょう。
MCPサーバーとは?
MCP(Model Context Protocol)サーバーは、AIアシスタントと外部データソースやツールを接続するための標準プロトコルであるMCPを実装するサーバーです。以下に、MCPサーバーの基本的な概念とその役割について解説します。
MCPサーバーの役割
MCPサーバーは、以下のような役割を果たします。
- データアクセスの仲介
MCPサーバーは、AIアシスタント(MCPクライアント)と外部データソースやツールの間でデータのやり取りを仲介し、AIアシスタントに対して必要なデータにアクセスしやすい環境を提供します。 - プロトコルの実装
MCPサーバーは、MCPプロトコルを実装し、リクエストとレスポンスの形式を標準化し、異なるツールやデータソースとの統合が容易になります。 - 柔軟なインターフェース提供
MCPサーバーは、AIアシスタントが外部ツールを自然に利用できるように柔軟なインターフェースを提供します。
MCPサーバーの構成要素
MCPサーバーは、以下のような構成要素から成り立っています。
- プロトコルハンドラ
リクエストを受け取り、適切な処理を行うためのハンドラです。リクエストの種類に応じて、データの取得や操作を行います。 - コンテンツタイプ
リクエストやレスポンスのデータ形式を定義し、異なるデータソースやツールとの互換性が確保されます。 - エラーハンドリング
リクエスト処理中に発生するエラーを管理し、適切なエラーメッセージを返す機能です。これにより、信頼性の高いデータアクセスが可能になります。
MCPサーバーの利点
MCPサーバーを利用することで、以下のような利点があります。
- 統一されたアクセス方法
異なるデータソースやツールに対して、統一されたアクセス方法を提供するため、開発者は一貫した方法でデータを操作できます。 - 拡張性
MCPサーバーは、さまざまなデータソースやツールに対応できるため、システムの拡張が容易です。 - 効率的な開発
MCPサーバーを利用することで、AIアシスタントの開発が効率化され、迅速なプロトタイピングが可能になります。
MCPについて説明しましたが、これを実現するのに自身で一から実装するのも大変です。 そこで、今回はMCPの仕組みが実装されたOSSツールのFastMCPについて説明します。
FastMCPとは?
FastMCPは、MCPサーバーとクライアントの作成を劇的に簡素化するために設計された高レベルのPythonicフレームワークです。
Pythonで実装可能で、比較的お手軽にMCPサーバーを構築できます。
アプリケーションのResources、Tools、Promptsのメインコンテナとして機能し、「MCPクライアント」との通信を管理します。
データを公開するResources
GETエンドポイントのようなものです。LLMのコンテキストに情報をロードするために使用されます。
機能を提供するTools
POSTエンドポイントのようなものです。コードを実行したり、タスク処理するために使用されます。
Prompts
LLMが構造化された目的を持ったる応答を生成するのに役立つ、再利用可能なメッセージテンプレートです。
実際に書いてみました。
実際にクライアントからMCPサーバーに依頼して結果を得るシンプルなサンプルを書いてみました。
観光庁が公開している【インバウンド消費動向調査】2024年暦年の調査結果(確報)の概要 をデータソースにしています。
tool.py(MCPサーバーとしての動作をします。)
- @mcp.tool()デコレーターによりtoolを定義します。複数定義することも可能です。
- transport="stdio"と指定することでstdioでの通信をします。※
client.py(クライアントとしての動きをします。)
ツール呼び出しにサーバー側で定義したツール名(今回はInbound_Consumer_Trends_Survey)を入れることで呼び出し可能です。
MCPサーバーからは以下の結果が得られます。
Tool result: [TextContent(type='text', text='2024年の米国からの訪日外国人による旅行支出について要点をまとめると以下の通りです:\n\n1. **旅行支出総額**:\n - 米国からの訪日外国人旅行者による旅行支出は約9,011億円で、全体の構成比は11.1%を占めました。これは米国が全体で4番目に高い支出を示した国・地域です。\n\n2. **支出内訳**:\n - 買物代: 米国からの旅行者の買物代は比較的多く、一般的に他の費目に比べて高い割合を占めています。\n - 宿泊費: 宿泊に対する支出も高く、旅行全体の中で重要な費用項目となっています。\n - 飲 食費: 飲食に関しては、宿泊や買物に次いで高い費用を占めます。\n \n3. **旅行者数と一人当たりの支出**:\n - 米国からの訪日外国人旅行者数は2,713,492人と見積もられています。\n - 一人当たりの旅行支出は約331,976円で、これは高い方に位置しており、特に宿泊費や買物代の割合が大きいことが示唆されます。\n \n4. **費目別比較**:\n - 宿泊費、買物代、飲 食費の割合が高いのが特徴です。\n\n5. **2023年および2019年との比較**:\n - 2023年比での増加率: 米国からの旅行者支出は48.5%増加しています。\n - 2019年比での増加率: 179.2% の増加となっており、これは新型コロナウイルス感染症の影響からの大幅な回復を示しています。\n\nこのように、米国からの訪日外国人旅行者による2024年の旅行支出は非常に高い水準を示 しています。特に買物や宿泊に多くの費用をかけていることが特徴的であり、これらの項目が全体の支出を押し上げています。', annotations=None)]
テキスト部分を抜き出しMarkdown形式にすると以下の通りの結果が得られます。
※通信方式は現在以下の2方式が主流です。
項目 | stdio | Streamable HTTP |
概要 | stdioは、標準入出力を使用してメッセージの送受信を行う方式 | Streamable HTTPは、HTTPプロトコルを使用してストリーミングデータを送受信する方式 |
データ形式 | テキストベース | バイナリおよびテキスト |
通信方向 | 双方向通信 | 双方向通信 |
接続の確立 | 標準入出力を介して接続 | HTTPリクエスト/レスポンスを介して接続 |
使用例 | サーバーとクライアント間のメッセージ交換 | ライブストリーミング、リアルタイムデータ配信 |
今回の使用はあくまでもMCP・FastMCPの入り口に過ぎません。 また、MCP自体が登場したばかりのプロトコルで、進化するスピードも早いです。 今後追い続けていく必要があります。
AIエージェントの構築で困っている方、そもそも生成AIを社内にどの様に導入するのが良いのか? などお困りの際は弊社にご相談いただけますと幸いです。
私たちのサービスでは、データ分析基盤の構築やDeep Learningモデル開発、
MLOps構築、生成AIモデル開発等データに関わるプロジェクトを伴走支援しております。
データ分析基盤開発やデータのAI活用経験のある方、興味のある方は、ぜひご応募ください。
あなたのスキルと情熱をお待ちしています。