mcpField
P
Proyecto Cliente MCP con Gemini y Servidor de Herramientas Meteorológicas

Proyecto Cliente MCP con Gemini y Servidor de Herramientas Meteorológicas

ローカル
github.com/KarlheinzniebuhrAI・エージェント077 週間前に更新

Proyecto Cliente MCP con Gemini y Servidor de Herramientas Meteorológicas について

Gemini クライアントと天気ツールのサーバーを組み合わせた Python の例です。AI が天気ツールを呼び出し、結果をユーザー向けの回答にまとめる流れを示します。

主な機能

  1. 01Gemini クライアントと天気サーバー
  2. 02気象警報と予報のツール
  3. 03ツールの検出と呼び出し
  4. 04クライアントとサーバーの統合ログ

活用シーン

  1. 01地域の天気に関する質問への回答
  2. 02MCP と Gemini のリクエストフローの確認

MCP 対応

クライアントは天気 MCP サーバーに接続し、get_alerts や get_forecast などのツールを検出して呼び出します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

要約

  1. 依存関係をインストールします:pip install -r requirements.txt
  2. .env を作成し、GEMINI_API_KEY=TU_CLAVE_API_AQUI を設定します。
  3. 実行します:python mcp_gemini_client.py weather_tool_server.py

Gemini クライアントと気象ツールサーバーを使用する MCP プロジェクト

このリポジトリでは、MCP(Model-Client-Protocol)プロトコルを使用して、AI クライアント(Google Gemini を使用)を専門ツール(この場合は気象ツール)を提供するサーバーに接続する方法を紹介します。

仕組み

このシステムは、Gemini AI と専門ツールの間の橋渡し役として機能します。流れを簡単に説明します。

コンポーネントの役割
  1. mcp_gemini_client.py - 次の役割を担う「仲介役」です。

    • Gemini AI と通信します。
    • ツールサーバー(weather_tool_server.py)に接続します。
    • ユーザー入力を処理し、応答を表示します。
  2. weather_tool_server.py - 次の役割を担う「ツールプロバイダー」です。

    • 気象に関する特定のツール(get_alerts、get_forecast)を提供します。
    • ツールのリクエストを処理し、結果を返します。
  3. MCP(Model-Client-Protocol) - 次の役割を担う「通信システム」です。

    • クライアントがツールを検出して呼び出すための標準化された方法を提供します。
    • クライアントとサーバー間のメッセージングを処理します。
天気について質問したときの流れ
  1. ユーザー入力:クライアントで「ニューヨークの天気はどうですか?」のような質問を入力します。
  2. クライアントでの処理:
    • mcp_gemini_client.py がこの質問を Gemini AI に送信します。
    • また、weather_tool_server.py サーバーに問い合わせて、利用可能なツールを Gemini に伝えます。
  3. Gemini AI の判断:
    • Gemini は気象ツール(たとえば get_forecast)を使う必要があると判断します。
    • 使用するツールと引数(たとえばニューヨークの緯度と経度)を示す応答を作成します。
  4. ツールの実行:
    • クライアントは、ツールを使用するための Gemini のリクエストを解析します。
    • ツールのリクエストを weather_tool_server.py サーバーに送信します。
    • サーバーは気象情報を取得する処理を実行し、結果を返します。
  5. 最終応答:
    • ツールの結果がクライアントに戻り、クライアントはそれを Gemini に送り返します。
    • Gemini は、これらの結果をユーザーにとってわかりやすい応答にまとめます。
    • クライアントはこの最終応答を表示します。

セットアップと実行

  1. 依存関係のインストール:
    pip install google-generativeai python-dotenv mcp-protocols # Asegúrate de que mcp-protocols sea el paquete correcto
    
  2. API キー:
    • Google AI Studio から API キーを取得します。
    • プロジェクトのルートに .env ファイルを作成します。
    • .env ファイルにキーを追加します。
      GEMINI_API_KEY=TU_CLAVE_API_AQUI
      
  3. 実行:
    • mcp_gemini_client.py と weather_tool_server.py が同じディレクトリにあることを確認します。
    • サーバーのスクリプトの場所を指定して、クライアントを実行します。
      python mcp_gemini_client.py weather_tool_server.py
      
    • 入力を求められたら、ターミナルにクエリを入力します。

ログファイル(mcp_log.txt)

  • 統合された詳細なログ: このファイルには、クライアント(mcp_gemini_client.py)とサーバー(weather_tool_server.py)の両方のログが統合されて記録されています。
  • 処理フローの可視化: データの流れ全体を示すため、ログは意図的に詳細に記録されています。
    • Gemini API に送信・受信されたメッセージ(プロンプトを含む)。
    • クライアントとサーバー間で、MCP プロトコルを介して送信・受信されたツールのリクエストとレスポンス。
  • 識別: 各ログエントリーにはモジュール名(mcp_gemini_client または weather_tool_server)が含まれるため、どのコンポーネントがメッセージを生成したかを識別できます。
  • デバッグ: 問題のデバッグや、すべてのコンポーネント間のやり取りの把握に役立つ主要な情報源です。
ログのサンプルフロー(mcp_log.txt)

完全なやり取りのログがどのように見えるかを示す、主要な通信を含む簡略化された例を以下に示します。

  1. クライアントが初期プロンプトをGeminiに送信する(ツールの説明を含む):

    2025-04-21 12:31:54,519 - __main__ - INFO - === Prompt Sent to Gemini (Initial) ===
    You are an assistant that helps users with weather information.
    You have access to the following tools:
    ...
    Tool: get_forecast
    Description: Get weather forecast for a location...
    Schema: {...}
    ...
    When you need to use a tool, format your response like this:
    TOOL_NAME: {the tool name}
    TOOL_ARGS: {JSON formatted arguments for the tool}
    ...
    The user message is: cual es el tiempo en nyc ?
    ======================================
    
  2. Geminiがツールを要求する応答を返す:

    2025-04-21 12:31:56,049 - __main__ - INFO - === Raw Response Received from Gemini (Initial) ===
    TOOL_NAME: get_forecast
    TOOL_ARGS: {"latitude": 40.7128, "longitude": -74.0060}
    ===============================================
    
  3. クライアントが応答を解析し、MCPツールのリクエストをサーバーに送信する:

    2025-04-21 12:31:56,050 - __main__ - INFO - Executing MCP tool: get_forecast with args: {'latitude': 40.7128, 'longitude': -74.006}
    
  4. サーバーがMCPツールのリクエストを受信する:

    2025-04-21 12:31:56,052 - INFO - mcp.server.lowlevel.server - Processing request of type CallToolRequest
    2025-04-21 12:31:56,052 - INFO - __main__ - MCP Request Received: get_forecast with latitude: 40.7128, longitude: -74.006
    
  5. サーバーがツールを実行し、MCP応答をクライアントに送信する:

    2025-04-21 12:31:57,180 - INFO - __main__ - === MCP Response Sent (get_forecast) ===
    
                        Today:
                        Temperature: 56F
                        ...
                        Forecast: Cloudy. High near 56...
                        
    ---...
    =======================================
    
  6. クライアントがMCPツールの応答を受信する:

    2025-04-21 12:31:57,182 - __main__ - INFO - Raw MCP Tool Result Object Received: meta=None content=[TextContent(type='text', text='\n                    Today:\n...)] isError=False
    2025-04-21 12:31:57,182 - __main__ - INFO - MCP tool get_forecast executed. Extracted Result Content: [TextContent(type='text', text='\n       Today:\n...)]...
    
  7. クライアントが最終プロンプトをGeminiに送信する(ツールの結果を含む):

    2025-04-21 12:31:57,182 - __main__ - INFO - === Prompt Sent to Gemini (Final) ===
    I asked for information about the weather in response to: "cual es el tiempo en nyc ?"
                        
    I used the get_forecast tool with these arguments: {"latitude": 40.7128, "longitude": -74.006}
    The tool returned this result: [TextContent(type='text', text='\n     Today:\n...')]
    
    Please provide a helpful, user-friendly response based on this information.
    =======================================
    
  8. Geminiがユーザー向けに整形された最終回答を返す:

    2025-04-21 12:31:59,000 - __main__ - INFO - === Raw Response Received from Gemini (Final) ===
    The weather in NYC looks like this:
    
    **Today:** Cloudy with a high of 56F...
    ...
    ===============================================
    

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。