0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Gemini CLIと外部MCPサーバー連携の落とし穴

0
Last updated at Posted at 2025-09-29

はじめに

GoogleのGemini CLIは、MCP (Model Context Protocol) を通じて外部のAIエージェントやツールと連携できる強力な機能を備えています。


今回は、人気のノーコードAIアプリ開発プラットフォームであるDifyをMCPサーバーとしてGemini CLIに接続しようとした際に直面した、問題とその解決に至るまでの道のりをまとめます。

問題:ドキュメント通りなのにMCPサーバーが「認識しない」

最初に、Difyの公式ドキュメントに従い、発行されたMCPサーバーのURLをGemini CLIの設定ファイル .gemini/settings.json に記述しました。


当初の設定 (.gemini/settings.json)

{
    "mcpServers": {
        "dify_mcp": {
            "url": "https://api.dify.ai/mcp/server/{あなたのMCP固有のパス}/mcp"
        }
    }
}

しかし、この設定ではGemini CLIが `dify_mcp` をサーバーとして認識せず、接続することができませんでした。(この赤い丸ほんと見たくない)

Screenshot 2025-09-29 at 17.11.30.png

原因の特定:2種類のURLキー

curlでの疎通確認やバージョンチェックなど、様々な調査を行いましたが、解決には至りませんでした。


最終的な答えは、ユーザーコミュニティの情報とGemini CLIの公式ドキュメントにありました。


Gemini CLIには、MCPサーバーを指定するためのURLキーが2種類存在したのです...

  • url: SSE (Server-Sent Events) 方式で通信するサーバーを指定するためのキー
  • httpUrl: 一般的なHTTPストリーミング方式で通信するサーバーを指定するためのキー

DifyのMCPサーバーは後者の「HTTPストリーミング」方式で動作していたため、正しいキーは `httpUrl` でした。

最初に url を使って失敗したのは、Gemini CLIがDifyサーバーとSSE方式で通信しようとして、うまくいかなかったためです。

解決策

キーを "url" から "httpUrl" に変更したところ、無事にGemini CLIがDifyのMCPサーバーを認識しました。


最終的に動作した設定 (.gemini/settings.json)

{
    "mcpServers": {
        "dify_mcp": {
            // DifyはHTTPストリーミング方式のため、キーは "httpUrl" が正しい
            "httpUrl": "https://api.dify.ai/mcp/server/XXXXXXXXXXXXXXXX/mcp"
        }
    }
}

通信方式を見分けるには

1. サービスの公式ドキュメントを確認する(最も確実)

最も確実ですが、今回のようにドキュメントに記載がないケースがあります。

2. curl でレスポンスヘッダーを確認する

サービスごとに方式がどちらであるかを見分ける方法としてはcurlコマンドを打ってみるとわかることがあります。

// 例でcontext7のMCPサーバーに接続(SSE方式)
curl GET https://mcp.context7.com/mcp

Content-Type: text/event-streamという行が含まれていれば、そのサーバーはSSE方式である可能性が非常に高いです。

そうでなければ、一般的な「HTTPストリーミング」方式の可能性を考えます。

まとめ:MCPサーバー連携の勘所

今回の経験から、Gemini CLIと外部MCPサーバーを連携させる際の重要なポイントが2つ明らかになりました。


1. 通信方式に合った正しいURLキーを使う

MCPサーバーがどちらの方式で通信するかを確認し、url (SSE) と httpUrl (HTTPストリーミング) を正しく使い分ける必要があります。


2. 認証方式もサーバーによる

更に、MCPサーバー(AIエージェント)の実装によって、認証情報の渡し方も異なります。
* URLに認証情報を含むタイプ (Difyなど): "httpUrl" のみでOK。
* HTTPヘッダーで認証を要求するタイプ (公式ドキュメントのOpenAPIの例など): "httpUrl""headers" の両方が必要。

同じ問題に直面した開発者の一助となれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?