local-only server
The server can only run on the client’s local machine because it depends on local resources.
Integrations
Provides access to Google's Gemini AI models via the Google AI SDK, enabling text generation, function calling, chat sessions, file handling, and content caching capabilities.
Provides a JavaScript interface to Gemini AI capabilities through the compiled server.
Implements a server that runs on Node.js to interface with Google's Gemini models, providing a consistent tool-based interface for AI interactions.
MCP ジェミニ サーバー
概要
このプロジェクトは@google/genai
SDKをラップする専用のMCP(Model Context Protocol)サーバーを提供します。Google Geminiのモデル機能を標準のMCPツールとして公開することで、他のLLM(Clineなど)やMCP互換システムがGeminiの機能をバックエンドの主力として活用できるようになります。
このサーバーは、MCP 標準を介して管理される一貫性のあるツールベースのインターフェースを提供することにより、Gemini モデルとの統合を簡素化することを目的としています。
特徴
- **コア生成:**標準 (
gemini_generateContent
) およびストリーミング (gemini_generateContentStream
) テキスト生成。 - 関数呼び出し: Gemini モデルがクライアント定義関数 (
gemini_functionCall
) の実行を要求できるようにします。 - **ステートフル チャット:**複数のターンにわたる会話のコンテキストを管理します (
gemini_startChat
、gemini_sendMessage
、gemini_sendFunctionResult
)。 - ファイル処理: Gemini API を使用してファイルをアップロード、一覧表示、取得、削除します。
- **キャッシュ:**プロンプトを最適化するために、キャッシュされたコンテンツを作成、一覧表示、取得、更新、および削除します。
前提条件
- Node.js (v18以降)
- Google AI Studioからの API キー ( https://aistudio.google.com/app/apikey )。
- 重要:ファイル処理およびキャッシュAPIはGoogle AI Studio APIキーとのみ互換性があり、Vertex AI認証情報を使用する場合はサポートされません。このサーバーは現在、Vertex AI認証をサポートしていません。
インストールとセットアップ
Smithery経由でインストール
Smithery経由で Claude Desktop 用の Gemini Server を自動的にインストールするには:
手動でインストールする
- **プロジェクトの複製/配置:**システム上で
mcp-gemini-server
プロジェクト ディレクトリにアクセスできることを確認します。 - **依存関係のインストール:**ターミナルでプロジェクト ディレクトリに移動し、次のコマンドを実行します。Copy
- プロジェクトのビルド: TypeScript ソースコードをコンパイルします。このコマンドはTypeScriptコンパイラ(Copy
tsc
)を使用し、JavaScriptファイルを./dist
ディレクトリ(tsconfig.json
のoutDir
で指定)に出力します。サーバーのメインエントリポイントはdist/server.js
になります。 - MCPクライアントの設定: MCPクライアントの設定ファイル(例:Cline/VSCodeの場合は
cline_mcp_settings.json
、Claudeデスクトップアプリの場合はclaude_desktop_config.json
)にサーバー設定を追加します。/path/to/mcp-gemini-server/path/to/mcp-gemini-server
システム上の実際のパスに、YOUR_API_KEY
をGoogle AI Studioのキーに置き換えてください。Copy - MCPクライアントの再起動: MCPクライアントアプリケーション(例:Cline拡張機能付きのVS Code、Claudeデスクトップアプリ)を再起動して、新しいサーバー構成を読み込みます。MCPクライアントがサーバープロセスの起動と停止を管理します。
構成
サーバーは、MCP 設定のenv
オブジェクトを介して渡される環境変数を構成に使用します。
GOOGLE_GEMINI_API_KEY
(必須): Google AI Studio から取得した API キー。GOOGLE_GEMINI_MODEL
(オプション): デフォルトのGeminiモデル名を指定します(例:gemini-1.5-flash
、gemini-1.0-pro
)。設定されている場合、モデル名を必要とするツール(gemini_generateContent
、gemini_startChat
など)は、ツール呼び出しでmodelName
パラメータが省略されたときに、このデフォルトを使用します。これにより、主に1つのモデルを使用する場合のクライアント呼び出しが簡素化されます。この環境変数が設定されていない場合、これらのツールではmodelName
パラメータが必須になります。使用可能なモデル名については、Google AIのドキュメントをご覧ください。
利用可能なツール
このサーバーは以下のMCPツールを提供します。パラメータスキーマは検証と記述のためにZodを使用して定義されています。
**オプションパラメータに関する注意:**多くのツールは、複雑なオプションパラメータ(例: generationConfig
、 safetySettings
、 toolConfig
、 history
、 functionDeclarations
、 contents
)を受け入れます。これらのパラメータは通常、基盤となる@google/genai
SDK で定義された型を反映した構造を持つオブジェクトまたは配列です。これらの複雑なパラメータの正確な構造と利用可能なフィールドについては、以下を参照してください。1. このプロジェクトの対応するsrc/tools/*Params.ts
ファイル。2. 公式のGoogle AI JS SDK ドキュメント。
コア世代
gemini_generateContent
- *説明:*プロンプトから非ストリーミング テキスト コンテンツを生成します。
- 必須パラメータ:
prompt
(文字列) - オプションパラメータ:
modelName
(文字列)、generationConfig
(オブジェクト)、safetySettings
(配列)
gemini_generateContentStream
- *説明:*ストリーミングを介してテキスト コンテンツを生成します。(注: 現在の実装では回避策が使用され、完全なテキストを返す前にすべてのチャンクが収集されます)。
- 必須パラメータ:
prompt
(文字列) - オプションパラメータ:
modelName
(文字列)、generationConfig
(オブジェクト)、safetySettings
(配列)
関数呼び出し
gemini_functionCall
- *説明:*プロンプトと関数宣言をモデルに送信し、テキスト応答または要求された関数呼び出しオブジェクト (JSON 文字列として) を返します。
- 必須パラメータ:
prompt
(文字列)、functionDeclarations
(配列) - オプションパラメータ:
modelName
(文字列)、generationConfig
(オブジェクト)、safetySettings
(配列)、toolConfig
(オブジェクト)
ステートフルチャット
gemini_startChat
- *説明:新しいステートフルチャットセッションを開始し、一意の
sessionId
を返します。\n *必須パラメータ:*なし - オプションパラメータ:
modelName
(文字列)、history
(配列)、tools
(配列)、generationConfig
(オブジェクト)、safetySettings
(配列)
- *説明:新しいステートフルチャットセッションを開始し、一意の
gemini_sendMessage
- 説明:既存のチャットセッション内でメッセージを送信します。\n *必須パラメータ:
sessionId
(文字列)、message
(文字列) - オプションパラメータ:
generationConfig
(オブジェクト)、safetySettings
(配列)、tools
(配列)、toolConfig
(オブジェクト)
- 説明:既存のチャットセッション内でメッセージを送信します。\n *必須パラメータ:
gemini_sendFunctionResult
- 説明:関数実行の結果をチャットセッションに送り返します。\n *必須パラメータ:
sessionId
(文字列)、functionResponses
(配列) - オプションパラメータ:
generationConfig
(オブジェクト)、safetySettings
(配列)
- 説明:関数実行の結果をチャットセッションに送り返します。\n *必須パラメータ:
ファイル処理(Google AI Studio キーが必要)
gemini_uploadFile
- 説明:ローカルパスからファイルをアップロードします。\n**必須パラメータ:
filePath
(文字列 -絶対パスである必要があります)\n オプションパラメータ:displayName
(文字列)、mimeType
(文字列)
- 説明:ローカルパスからファイルをアップロードします。\n**必須パラメータ:
gemini_listFiles
- *説明:以前にアップロードされたファイルを一覧表示します。\n *必須パラメータ:*なし
- オプション パラメータ:
pageSize
(数値)、pageToken
(文字列 - 注: 現在、pageToken
が確実に返されない可能性があります)。
gemini_getFile
- 説明:特定のアップロードされたファイルのメタデータを取得します。\n *必須パラメータ:
fileName
(文字列 - 例:files/abc123xyz
)
- 説明:特定のアップロードされたファイルのメタデータを取得します。\n *必須パラメータ:
gemini_deleteFile
- 説明:アップロードされたファイルを削除します。\n *必須パラメータ:
fileName
(文字列 - 例:files/abc123xyz
)
- 説明:アップロードされたファイルを削除します。\n *必須パラメータ:
キャッシュ(Google AI Studio キーが必要)
gemini_createCache
- 説明:互換性のあるモデル (例:
gemini-1.5-flash
) のキャッシュされたコンテンツを作成します。\n *必須パラメータ:contents
(配列) - オプションパラメータ:
modelName
(文字列)、displayName
(文字列)、systemInstruction
(オブジェクト)、ttl
(文字列 - 例: '3600s')
- 説明:互換性のあるモデル (例:
gemini_listCaches
- *説明:既存のキャッシュされたコンテンツを一覧表示します。\n *必須パラメータ:*なし
- オプション パラメータ:
pageSize
(数値)、pageToken
(文字列 - 注: 現在、pageToken
が確実に返されない可能性があります)。
gemini_getCache
- 説明:特定のキャッシュされたコンテンツのメタデータを取得します。\n *必須パラメータ:
cacheName
(文字列 - 例:cachedContents/abc123xyz
)
- 説明:特定のキャッシュされたコンテンツのメタデータを取得します。\n *必須パラメータ:
gemini_updateCache
- 説明:キャッシュされたコンテンツのメタデータ (TTL、displayName) を更新します。\n *必須パラメータ:
cacheName
(文字列) - オプションパラメータ:
ttl
(文字列)、displayName
(文字列)
- 説明:キャッシュされたコンテンツのメタデータ (TTL、displayName) を更新します。\n *必須パラメータ:
gemini_deleteCache
- 説明:キャッシュされたコンテンツを削除します。\n *必須パラメータ:
cacheName
(文字列 - 例:cachedContents/abc123xyz
)
- 説明:キャッシュされたコンテンツを削除します。\n *必須パラメータ:
使用例
MCP クライアント (Cline など) がuse_mcp_tool
形式を使用してこれらのツールを呼び出す方法の例を次に示します。
例1: シンプルなコンテンツ生成(デフォルトモデルを使用)
例2: コンテンツ生成(モデルと設定の指定)
例3: チャットの開始と継続
チャットを開始:
(応答にsessionId: "some-uuid-123"
が含まれていると仮定)
メッセージを送信:
例4: ファイルのアップロード
エラー処理
サーバーは、ツールの実行が失敗した場合に、MCP標準のMcpError
型を使用して構造化されたエラーを返すことを目的としています。このオブジェクトには通常、以下の情報が含まれます。
code
: エラーの種類を示すErrorCode
列挙値 (例:InvalidParams
、InternalError
、PermissionDenied
、NotFound
)。message
: 人間が読める形式のエラーの説明。details
: (オプション) トラブルシューティングのために、基礎となる Gemini SDK エラーのより具体的な情報 (安全性ブロックの理由や API エラー メッセージなど) を含む可能性のあるオブジェクト。
一般的なエラーのシナリオ:
- **無効な API キー:**多くの場合、認証の失敗を示す詳細を含む
InternalError
が発生します。 - 無効なパラメータ:
InvalidParams
になります (例: 必須フィールドが欠落している、データ型が間違っている)。 - **安全ブロック:**ブロック理由または終了理由として
SAFETY
を示す詳細を含むInternalError
が発生する可能性があります。 - ファイル/キャッシュが見つかりません: SDK がエラーを表示する方法に応じて、
NotFound
またはInternalError
が発生する可能性があります。 - レート制限:
ResourceExhausted
またはInternalError
が発生する可能性があります。
トラブルシューティングを行うときは、返されたMcpError
のmessage
とdetails
フィールドで具体的な手がかりを確認してください。
発達
このサーバーは、プロジェクトの.clinerules
および内部ドキュメントに記載されている標準的なMCPサーバー構造に準拠しています。主なパターンは次のとおりです。
- サービス レイヤー (
src/services
):@google/genai
SDK とのやり取りをカプセル化し、MCP の詳細から切り離します。 - **ツール レイヤー (
src/tools
):**サービス レイヤー機能を MCP ツールに適合させ、パラメーター マッピングとエラー変換を処理します。 - **Zod スキーマ (
src/tools/*Params.ts
):**ツール パラメータの定義、検証の提供、LLM の相互作用に重要な詳細な説明の生成に広く使用されます。 - 構成 (
src/config
):ConfigurationManager
による集中管理。 - **型 (
src/types
):**明確な TypeScript 定義。
既知の問題
gemini_generateContentStream
回避策として、すべてのチャンクを収集してからフルテキストを返します。MCPクライアントへの真のストリーミングはまだ実装されていません。gemini_listFiles
とgemini_listCaches
、SDK の Pager オブジェクトの反復処理の制限により、nextPageToken
確実に返さない可能性があります。gemini_uploadFile
、サーバー環境から実行する場合、絶対ファイル パスを必要とします。- Vertex AI ではファイル処理とキャッシュ API はサポートされておらず、Google AI Studio API キーのみがサポートされています。
You must be authenticated.
Tools
Google の Gemini AI モデルをモデル コンテキスト プロトコル (MCP) インターフェースにラップする専用サーバー。これにより、他の LLM や MCP 互換システムが、標準化されたツールを通じてコンテンツ生成、関数呼び出し、チャット、ファイル処理などの Gemini の機能にアクセスできるようになります。
- Overview
- Features
- Prerequisites
- Installation & Setup
- Configuration
- Available Tools
- Usage Examples
- Error Handling
- Development
- Known Issues