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

设置

  1. (如果已获取 Connpass API 密钥则跳过)请申请发行 Connpass API 密钥。详细信息请参阅 connpass 的 API 使用说明。
  2. 克隆此仓库。
  3. 设置所需的环境变量。将 .env.example 复制到 .env,并设置 Connpass API 密钥。
cp .env.example .env
# .envファイルを編集してCONNPASS_API_KEYを設定
  1. 启动服务器。

使用 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 启动

  1. 安装启动 MCP 服务器所需的依赖项。
npm ci
  1. 构建 TypeScript。
npm run build
  1. 在 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(推荐)

  1. 创建环境变量文件。
# .envファイルを作成し、以下の内容を設定
echo "GEMINI_API_KEY=your_gemini_api_key_here" >> .env
  1. 根据用途启动服务。

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 启动服务器。

  1. 构建 Docker 镜像。
docker build -t deno-gemini-grounding-mcp-server .
  1. 启动容器。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 完成,并提出了文档示例。在此深表感谢。

许可证

MIT License