API連携とWebサービス:AIをインターネットに繋ぐ
AIが、世界中の情報にアクセスできたら
データベース連携によって、AIはあなたのローカルなデータを扱えるようになりました。しかし、現代のアプリケーションの多くは、インターネット上の様々な Webサービス や API と連携することで成り立っています。天気予報、地図、ニュース、SNS、これらすべてがAPIを通じて情報を提供しています。
この記事では、MCPの応用編の締めくくりとして、AIを外部のAPIと連携させる 方法を解説します。これにより、AIは閉じたシステムからインターネットという広大な情報の海へと漕ぎ出し、その能力を最大限に発揮できるようになります。
APIとは?なぜ連携が重要なのか
はじめに、API(Application Programming Interface) について簡単におさらいします。APIとは、あるソフトウェアやサービスが、その機能やデータを外部のプログラムから利用するために提供している「窓口」や「呼び出し規約」のことです。
たとえば、天気予報サイトは、人間が見るためのウェブページだけでなく、プログラムが利用するための天気情報APIを提供しています。このAPIを呼び出すことで、緯度と経度を渡して、その地点の現在の気温や湿度をJSON形式で受け取ることができます。
AIをAPIと連携させることで、以下のようなことが可能になります。
- リアルタイムな情報取得: 「東京の今の天気は?」という質問に、AIがリアルタイムで答えられるようになります。
- 外部サービスの操作: 「この内容をTwitterに投稿して」といった指示で、AIがSNSを操作できます。
- 複雑なワークフローの自動化: 「今日のカレンダーの予定を見て、訪問先までの交通手段を調べて、その結果をSlackで通知して」といった、複数のサービスをまたぐ複雑なタスクを実行できます。
要するに、「API連携は、AIにインターネット上の無数のサービスを『道具』として使わせるための鍵である」ということです。
ステップ1:連携するAPIを選ぶ
今回は、例として無料で利用できる公開APIである「Public APIs」の一つ、猫に関する豆知識を返すAPI(Cat Facts API)を使ってみましょう。
このAPIのエンドポイントは https://catfact.ninja/fact
です。このURLにアクセスするだけで、猫の豆知識がJSON形式で返ってきます。
ステップ2:APIを呼び出すツールを作成する
次に、このAPIを呼び出し、結果を取得するMCPツール get_cat_fact
を作成します。外部のAPIと通信するには、HTTPリクエストを送信するためのライブラリが必要です。Pythonでは requests
、Node.jsでは axios
や node-fetch
がよく使われます。
■Pythonでの実装
まず、requests
ライブラリをインストールします。
pip install requests
そして、ツールを実装します。
# server.py (一部抜粋) import requests def get_cat_fact(): """猫に関する豆知識をランダムに取得する""" try: response = requests.get("https://catfact.ninja/fact") # エラーがあれば例外を発生させる response.raise_for_status() # JSONのレスポンスから、factの部分だけを返す return response.json()["fact"] except requests.exceptions.RequestException as e: # ネットワークエラーなどをAIに伝える raise Exception(f"APIへのアクセスに失敗しました: {e}")
このコードのポイントは、try...except
ブロックで通信エラーを適切に捕捉し、AIに失敗を伝えている点です。
ステップ3:認証が必要なAPIとの連携
多くのAPIは、誰でも自由に使えるわけではなく、APIキー などを使った認証を求められます。このようなAPIと連携する場合、APIキーの管理に注意が必要です。
APIキーをコードに直接書き込むのは、セキュリティ上非常に危険です。代わりに、環境変数 を使って管理するのが一般的な方法です。
# server.py (架空の天気APIの例) import os import requests def get_weather(city: str): """指定された都市の天気を取得する""" # 環境変数からAPIキーを読み込む api_key = os.getenv("WEATHER_API_KEY") if not api_key: raise Exception("APIキーが設定されていません") url = f"https://api.example-weather.com/v1/current?city={city}&key={api_key}" try: response = requests.get(url) response.raise_for_status() return response.json() except requests.exceptions.RequestException as e: raise Exception(f"天気APIへのアクセスに失敗しました: {e}")
このように実装することで、機密情報であるAPIキーをコードから分離し、安全にツールを運用することができます。
要するに、「認証が必要なAPIでは、APIキーを環境変数で管理し、コードに直接書き込まない」ことが鉄則です。
AIとの対話シナリオ
get_cat_fact
ツールをMCPサーバーに登録すると、AIとこんな楽しい会話ができます。
あなた: 「何か面白いこと教えて」
AI: 「どのようなジャンルの情報に興味がありますか?」
あなた: 「猫について何か」
AI: ( get_cat_fact()
を実行し、結果を受け取る)
AI: 「豆知識です。猫は、生涯の約70%を寝て過ごすそうです。」
このように、API連携によって、AIとの対話はより豊かで、予測不能なものになります。
まとめ
今回は、MCPコースの最終回として、AIを外部APIやWebサービスと連携させる方法について学びました。
- API連携により、AIはインターネット上のリアルタイムな情報や無数のサービスを扱えるようになる。
- HTTPリクエストライブラリを使えば、APIを呼び出すツールを簡単に作成できる。
- 通信エラーやAPIからのエラーを適切に処理し、AIに伝えることが重要。
- 認証が必要なAPIでは、APIキーを環境変数で安全に管理する必要がある。
これで、MCP入門コースはすべて終了です。あなたは、MCPの基本概念から、サーバー構築、ツール作成、そしてデータベースやAPIとの連携まで、一通りの知識とスキルを身につけました。
AIにどのような道具を与え、どのようなタスクを任せるかは、あなたのアイデア次第です。このコースで得た知識を元に、あなただけの強力なAIアシスタントを育てていってください。