Deno Gemini Grounding MCP Server
Provides Google search grounding capabilities for Gemini AI models through MCP, enabling AI assistants to perform web searches with Gemini's grounding API for more accurate and up-to-date responses.
README
https://github.com/rinerebox1/deno-gemini-grounding-mcp-server
使い方
Docker を使ってクリーンアップ・ビルド・起動する。MCPサーバーが起動してそこで止まる。ただ、これだけあっても用途は良く分からない。
./start.sh
終了したあとは docker compose down する。
簡単にMCPサーバーを起動する方法(Docker を使わない):deno task start
テスト: deno task test:tokyo deno task test:google_search deno task test:google_search_simple
MCPサーバーを追加する方法
- 実装するファイル
- index.ts で server.tool を追加する
- tools フォルダで Tool を定義する(get~~.ts)
- tools/helpers/formatHelpers.ts で出力フォーマットの整形
- tools/index.ts に追加
- ライブラリの追加が必要な場合
- deno.json に追加
- deno.lock のアップデート方法:
- rm -rf ~/.cache/deno && deno cache --reload index.ts
- アップデートできたかは以下で確認:
- ls -la deno.lock && head -10 deno.lock
- テストコード
- tests フォルダにテストコードを実装
- 次に deno.json の tasks にテストファイルの追加
- テストの実行方法
- deno task test:tokyo
- 注意点
- from で呼び出すファイルは .js ではなく .tx。LLM が良く .js に変えるので注意
テストが通ったら MCPサーバーが実装できたということなので 「C:\Users\kbpsh\OneDrive\development\MCP\deno-gemini-grounding-mcp-client」の方で 「.gemini/settings.json」に追記する。 Gemini CLI から MCPサーバーを利用する。 「deno-gemini-grounding-mcp-client」の方はWSLで起動しないこと。WSLとMCPクライアントの相性が悪そうなので、MCPクライアントはWindows側にする。
- v1: Connpass機能あり + 基本的なGenAI機能(stdio)
- v2: Connpass機能削除 + 東京観光特化のGenAI機能(stdio)
- v3: v2 を改良して Cloudflare Workers対応(Hono サーバーでちゃんと動いたが、Cloudflareへのデプロイはしていない)(Streamable HTTP)
- v4: v2の改良版。Gemini のグラウンディング MCPサーバーを追加。Cloudflare Workersの対応はしていない(stdio)
Google 検索によるグラウンディング の料金
https://cloud.google.com/vertex-ai/generative-ai/pricing?hl=ja
Gemini Flash 2.5 なら1日 1500 件まで無料で検索可能。Lite も一緒。だいたい1回検索で3クエリくらい消費する。
ファイル読み取りや環境変数アクセス、ネットワーク接続などは Deno のセキュリティモデル上 --allow-read、--allow-env、--allow-net などのフラグで制御されますが、これらもあくまで【ローカル実行時にのみ有効】【リモートでは使えない】です
Cursor かつ WSL 側で MCP Tool を登録するのがかなり難しい。とりあえず、Cドライブ側で Gemini CLI から MCP サーバーを認識できたので OK とする。ただ、Cドライブ側でも Cursor での MCP Tool 呼び出しはできないので、Cursor で MCP 使うのは止める。
-
問題はCursor と MCP サーバー間の接続にある
- 緑のランプがつくのに Tool 数はゼロ
-
以下でチェックできる。 echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' | deno run --env-file=.env --allow-net=generativelanguage.googleapis.com --allow-env --allow-read index.ts
セットアップ
- (Connpass APIキーをすでに取得済の場合はスキップ)Connpass APIキーの発行をしてもらいます。詳細についてはconnpassのAPI利用についてを参照してください。
- このリポジトリをクローンします。
- 必要な環境変数を設定します。
.env.exampleを.envにコピーして、Connpass APIキーを設定します。
cp .env.example .env
# .envファイルを編集してCONNPASS_API_KEYを設定
- サーバーを起動します。
Denoでの起動(推奨)
"deno-gemini-grounding-mcp-server": {
"command": "wsl.exe",
"args": [
"/home/smorce/.deno/bin/deno",
"--allow-net=generativelanguage.googleapis.com",
"--env-file=/home/smorce/MCP/deno-gemini-grounding-mcp-server/.env",
"--allow-read",
"--allow-env",
"/home/smorce/MCP/deno-gemini-grounding-mcp-server/index.ts"
]
}
Node.jsでの起動
- MCPサーバーを起動するために必要な依存関係をインストールします。
npm ci
- TypeScriptをビルドします。
npm run build
- MCPクライアントの設定ファイル側にビルドしたファイルを指定します。
"deno-gemini-grounding-mcp-server": {
"command": "wsl.exe",
"args": [
"/home/user/.local/share/mise/installs/node/22.14.0/bin/node",
"--env-file=/home/smorce/MCP/deno-gemini-grounding-mcp-server/.env",
"/home/smorce/MCP/deno-gemini-grounding-mcp-server/dist/index.js"
]
}
Dockerでの起動
docker-compose使用(推奨)
- 環境変数ファイルを作成します。
# .envファイルを作成し、以下の内容を設定
echo "GEMINI_API_KEY=your_gemini_api_key_here" >> .env
- 用途に応じてサービスを起動します。
docker compose run vs docker compose up の違い
🔍 重要な違い
docker compose up:
- サービス全体を起動し、フォアグラウンドで継続実行
- ログが表示され続け、Ctrl+Cで停止するまで動作
- 開発・テスト時のサーバー起動に適している
docker compose run:
- 一回限りのコマンド実行に使用
- コンテナを起動してコマンドを実行し、完了後に自動終了
- MCPクライアントからの呼び出しに適している
🔧 開発・テスト用(継続実行):
# 起動スクリプトを実行(クリーンアップ→ビルド→起動を自動実行)
./start.sh
または、手動でdocker composeコマンドを実行します。
docker compose up --build
⚡ MCP用(一回限りの実行): MCPクライアント経由で自動実行されます。手動テストする場合:
docker compose run --rm deno-gemini-grounding-mcp-server
MCPクライアントの設定ファイルでは、docker compose runコマンドを指定します。
MCPサーバーはstdin/stdoutでの対話的通信が必要なため、設定は以下のようになります(先にビルドが必要):
{
"mcpServers": {
"deno-gemini-grounding-mcp-server": {
"command": "docker",
"args": [
"run",
"-e",
"GEMINI_API_KEY=XXXXXXXXXXXXXXXX",
"deno-gemini-grounding-mcp-server"
]
}
}
}
直接Docker使用
Dockerfileを使用してサーバーを起動することもできます。
- Dockerイメージをビルドします。
docker build -t deno-gemini-grounding-mcp-server .
- コンテナを起動します。APIキーは環境変数として渡します。
docker run -e CONNPASS_API_KEY=XXXXXXXXXXXXXXXX -e GEMINI_API_KEY=YYYYYYYYYYYYYYYY deno-gemini-grounding-mcp-server
MCPクライアントの設定ファイルでは、dockerコマンドを指定します。
"deno-gemini-grounding-mcp-server": {
"command": "docker",
"args": [
"run",
"-e",
"GEMINI_API_KEY=YYYYYYYYYYYYYYYY",
"deno-gemini-grounding-mcp-server"
]
}
npxでの起動(非推奨)
このリポジトリをクローンしてDenoまたはNode.jsでMCPサーバーの起動が可能です。
"deno-gemini-grounding-mcp-server": {
"command": "wsl.exe",
"args": [
"/home/smorce/.deno/bin/deno",
"--allow-net=generativelanguage.googleapis.com",
"--env-file=/home/smorce/MCP/deno-gemini-grounding-mcp-server/.env",
"--allow-read",
"--allow-env",
"/home/smorce/MCP/deno-gemini-grounding-mcp-server/index.ts"
]
}
ただしnpxでMCPサーバーを起動するのはサプライチェーン攻撃などのセキュリティ的な懸念があるため非推奨としています。
機能
以下のMCPサーバーのToolsを提供しています:
Tools
-
get_connpass_user_list - Connpassユーザーの基本情報を取得します
- パラメータ:
nickname(Connpassユーザー名/ニックネームの配列) - 取得情報: 参加イベント数、管理イベント数、発表イベント数、ブックマークイベント数
- パラメータ:
-
get_connpass_user_group_list - Connpassユーザーが所属するグループ一覧を取得します
- パラメータ:
nickname(Connpassユーザー名/ニックネーム) - 取得情報: グループ名、URL、説明、参加者数など
- パラメータ:
-
get_connpass_user_events - Connpassユーザーが参加したイベント情報を取得します
- パラメータ:
nickname(Connpassユーザー名/ニックネーム) - 取得情報: イベント名、日時、場所、URL、説明
- パラメータ:
-
get_connpass_user_presenter_events - Connpassユーザーが発表者として参加したイベント情報を取得します
- パラメータ:
nickname(Connpassユーザー名/ニックネーム) - 取得情報: イベント名、日時、場所、URL、説明
- パラメータ:
プロンプト例
次のようなプロンプトをLLMへ渡すことが可能です:
- 「yamanoku, okuto_oyamaさんのConnpassユーザー情報を教えて」
- 「yamanokuさんの参加するConnpassイベント情報を教えて」
- 「yamanokuさんの発表したConnpassイベント一覧を表示して」
- 「yamanokuさんのConnpass所属グループを一覧表示して」
テスト
Denoでのテスト
東京の魅力プロンプトなど、Gemini API を使用したテストを実行します:
deno task test:tokyo
以下のようなアウトプットになっていれば成功。30秒の安全タイムアウトが作動しているのは正常な動作。
🔍 === レスポンス検証 ===
✅ キーワード検出: 5/5
- "東京" ✓
- "魅力" ✓
- "多様性" ✓
- "文化" ✓
- "食" ✓
🎉 テスト成功: 東京の魅力について適切にレスポンスしました!
📊 レスポンス統計:
- 文字数: 1541
- 行数: 15
✅ MCPサーバープロセス終了 (コード: 143)
⏰ タイムアウト: プロセスを終了します
テストの詳細については tests/README.md を参照してください。
Deno と Node.js はともに実行環境のこと。
謝辞
このOSSはGPT-4o Image Generationによってロゴを製作、Claude 3.7 Sonnetによって実装、ドキュメントのサンプルを提案いただきました。感謝申し上げます。
ライセンス
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.