Gemini Grounding Remote
Obtiene datos de usuario e información de eventos de la plataforma Connpass utilizando las APIs de Connpass y Gemini.
Documentación
https://github.com/rinerebox1/deno-gemini-grounding-mcp-server
使用方法
用 Docker 进行清理、构建和启动。MCP 服务器启动后会在此处停止。不过,仅有这些功能的话,用途并不太明确。
./start.sh
结束后执行 docker compose down 。
不使用 Docker 简单启动 MCP 服务器的方法: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 调用的文件应为 .ts 而非 .js。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 的 grounding MCP 服务器。不支持 Cloudflare Workers(stdio)
通过 Google 搜索进行 grounding 的费用
https://cloud.google.com/vertex-ai/generative-ai/pricing?hl=ja
Gemini Flash 2.5 每天可免费搜索 1500 次。Lite 也一样。大约每次搜索会消耗 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 与 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 的 Logo 由 GPT-4o Image Generation 制作,实现由 Claude 3.7 Sonnet 完成,并提出了文档示例。在此深表感谢。