rinerebox1/deno-gemini-grounding-mcp-server
If you are the rightful owner of deno-gemini-grounding-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The Deno Gemini Grounding MCP Server is a versatile server implementation designed to facilitate the use of Model Context Protocol (MCP) with various tools and platforms, leveraging Deno and Docker for efficient deployment.
get_connpass_user_list
Retrieves basic information about Connpass users.
get_connpass_user_group_list
Fetches the list of groups a Connpass user belongs to.
get_connpass_user_events
Obtains information about events a Connpass user has participated in.
get_connpass_user_presenter_events
Gets details of events where the user was a presenter.
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によって実装、ドキュメントのサンプルを提案いただきました。感謝申し上げます。