はじめに
AI技術は急速に進化していますが、従来の大規模言語モデル(LLM)は主にテキスト生成に特化していました。しかし、現代のニーズは、単なる回答を超えて、タスクを自動化し、外部ツールと連携するAIを求めています。ここで登場するのがエージェントAIです。エージェントAIは、ユーザーの指示に基づき、データにアクセスし、アクションを実行する自律型AIです。
**Model Context Protocol(MCP)**は、このエージェントAIの構築を容易にするオープンなプロトコルです。MCPを使えば、AIがGoogle Calendar、Slack、データベースなどの外部リソースにアクセスし、複雑なワークフローを自動化できます。このシリーズでは、MCPを活用してエージェントAIをゼロから構築する方法を学びます。
第1章では、エージェントAIの基本とMCPの役割を紹介します。簡単なMCPサーバーを構築し、エージェントAIの可能性を体感してみましょう!
エージェントAIとは?
エージェントAIは、以下の特徴を持つAIです:
- 自律性:ユーザーの指示を解釈し、適切なアクションを自ら選択。
- コンテキスト認識:外部データ(カレンダー、メール、データベース)を参照して正確な判断。
- アクション実行:ツールやAPIを通じてタスクを実行(例:メール送信、タスク作成)。
LLMとの違い
従来のLLM(例:ChatGPT、Claude)は、ユーザーの質問に答えるだけでした。たとえば、「明日の予定を教えて」と聞くと、LLMは「カレンダーを見ていないのでわからない」と答えます。一方、エージェントAIは以下のように動作します:
- Google Calendarにアクセス(MCP経由)。
- 予定を解析し、ユーザーに要約を提示。
- 必要なら新しい予定を追加。
この違いは、MCPが外部データやツールとの標準化された接続を提供することで実現します。
MCPがエージェントAIをどう強化するか?
MCPは、エージェントAIの「神経システム」のような役割を果たします。主な機能は以下の通り:
- リソース提供:データ(ファイル、データベース)をAIに提供。
- ツール統合:APIやスクリプトをAIが実行可能に。
- 標準化:異なるツールやAI間で一貫した接続を確保。
実際のシナリオ
あなたが「来週のミーティングを準備して」とエージェントAIに依頼したとします。MCPを介して、以下が実行されます:
- Google Calendarからミーティング予定を取得。
- Slackで関連する議論を検索。
- Notionに議事録テンプレートを作成。
- 必要な参加者にメール通知を送信。
このようなワークフローは、MCPの標準化がなければ、個別のカスタムインテグレーションが必要で、開発が複雑でした。
なぜMCPでエージェントAIを構築するのか?
MCPを活用する利点は以下の通り:
- 柔軟性:Google CalendarからQdrantまで、どんなツールとも統合可能。
- スケーラビリティ:単一のMCPサーバーで複数のエージェントをサポート。
- コミュニティの力:オープンソースのMCPサーバーを利用・拡張可能。
- セキュリティ:OAuth 2.1やユーザー同意で安全性を確保。
環境の準備
エージェントAIを試すために、以下の環境を準備します:
- Python 3.8以降:MCPサーバー構築用。
- mcpライブラリ:JSON-RPC通信を処理(仮定のライブラリ、実際は公式ドキュメントを確認)。
- Claude Desktop:MCP対応のAIクライアント。
- テキストエディタ:VS Code推奨。
インストールコマンド:
pip install mcp jsonrpcserver
コード例:メールデータを取得するMCPサーバー
エージェントAIの第一歩として、メールデータをリソースとして提供するシンプルなMCPサーバーを構築します。この例では、ダミーのメールデータを返します(実際にはGmail APIなどを使用)。
from mcp import MCPServer
class EmailServer(MCPServer):
def __init__(self, host, port):
super().__init__(host, port)
self.register_resource("get_emails", self.get_emails)
def get_emails(self, params):
try:
# ダミーデータ(実際はGmail APIなどを利用)
emails = [
{"from": "alice@example.com", "subject": "ミーティングの提案", "date": "2025-04-15"},
{"from": "bob@example.com", "subject": "プロジェクト進捗", "date": "2025-04-14"}
]
return {"status": "success", "emails": emails}
except Exception as e:
return {"status": "error", "message": str(e)}
if __name__ == "__main__":
server = EmailServer(host="localhost", port=8087)
print("メールMCPサーバーを起動中: http://localhost:8087")
server.start()
コードの説明
- MCPServer:JSON-RPC通信を処理するベースクラス。
- get_emails:ダミーのメールリストを返すリソース(実際はAPI統合)。
- register_resource:リソースを登録し、AIがアクセス可能に。
- start():サーバーを起動。
テスト方法
- サーバーを起動:
python email_server.py
- Claude Desktopで設定:
{ "mcp_servers": [ { "name": "EmailServer", "url": "http://localhost:8087", "auth": "none" } ] }
- Claudeにプロンプト:
レスポンス例:
最近のメールを教えてください。
以下のメールが見つかりました: - 送信者: alice@example.com, 件名: ミーティングの提案, 日付: 2025-04-15 - 送信者: bob@example.com, 件名: プロジェクト進捗, 日付: 2025-04-14
次のステップ
このサーバーは、エージェントAIの基礎です。次の章では、Google Calendarを統合して、実際にスケジュール管理を行うエージェントを構築します。以下のような質問をAIが処理できるようになります:
- 「来週の空き時間を教えて」
- 「新しいミーティングを追加して」
まとめ
この第1章では、エージェントAIの概念と、MCPがその構築をどのように支援するかを学びました。MCPは、AIを自律的で実用的なアシスタントに変える鍵です。簡単なメールサーバーを構築することで、MCPの可能性を少しだけ体験できました。
次の第2章では、Google CalendarとMCPを統合し、スケジュール管理エージェントの第一歩を踏み出します。エージェントAIの構築にワクワクしている方は、ぜひお楽しみに!
役に立ったと思ったら、「いいね」や「ストック」をしていただけると嬉しいです!次の章でまたお会いしましょう!