Upgrade to Pro — share decks privately, control downloads, hide ads and more …

お前も Gemini CLI extensions を作らないか?

Avatar for SatohJohn SatohJohn
October 20, 2025

お前も Gemini CLI extensions を作らないか?

Jagu'e'r クラウドネイティブ分科会 クラウドネイティブ × Gemini CLI のイベントで発表した資料になります

Avatar for SatohJohn

SatohJohn

October 20, 2025
Tweet

More Decks by SatohJohn

Other Decks in Programming

Transcript

  1. 自己紹介 佐藤 慧太@SatohJohn • 2023/1 株式会社スリーシェイク入社 • Google Cloud Partner

    Top Engineer ’24、’25 選出 • お客様の労苦 <Toil>を減らす • 娘のお世話を精一杯やっています
  2. # My First Extension Instructions You are an expert developer

    assistant. When the user asks you to fetch posts, use the `fetch_posts` tool. Be concise in your responses. ※バージョン 0.9で試しています
  3. mcp-server { "name": "mcp-server-example", "version": "1.0.0", "mcpServers": { "nodeServer": {

    "command": "node", "args": ["${extensionPath}${/}dist${/}example.js"], "cwd": "${extensionPath}" } } } インストールされる extension の名前 インストールされる tool 類 複数登録可能
  4. Github へ push しているやつ gemini extensions link https://github.com/{レポジト リ} ※バージョン

    0.9で試しています バージョン の更新の検知までしてくれる
  5. 利用用途 特定の Kubernetes への作業を実施する(縛る) • gcloud mcp tool と組み合わせる •

    namespace の固定 • 既存 MCP にある使わない設定 ◦ exclude tool でも同じようなことはできる 特定のAPI に対してラップして利用、検証する • MCP 対応したくない、できない系のパターン • 認証周りとかのコード自体を埋め込む形 https://github.com/gemini-cli-extensions/gcloud
  6. 利用用途 server.registerTool( 'weather-fetcher', { description: 'Fetches weather information from a

    public API.' }, async () => { const appId = "client-id" const apiResponse = await fetch( `https://map.yahooapis.jp/weather/V1/place?appid=${appId}&coordinates=139.6500,35.6764&output=json`,{ method: "GET", } ); const data = await apiResponse.json(); return { content: [ { type: 'text', text: JSON.stringify(data), }, ], }; }, );