1分で読了連携

Gemini URL短縮: ツール呼び出しが実際に機能する場所

Geminiは実際の短縮リンクを作成できますが、アプリ内ではできません。Gemsから自分のAPIを呼び出せない理由と、CLIおよびAPIをつないでリンクを解決可能にする方法を解説します。

Marius Voß
DevRel · edge infra
GeminiのURL短縮はMCP経由のCLIとAPIのfunction callingで動作しますが、一般向けのGeminiアプリには外部APIを呼び出す経路がありません

Geminiは動作する短縮リンクを作成できます。ただし、多くの人が最初に試す場所ではできません。

他のアシスタントよりもこの違いは明確で、Googleが下した一つのアーキテクチャ上の決定に行き着きます。一般向けのGeminiアプリには、自分が所有するAPIを呼び出す仕組みがありません。 URLの短縮を頼むと、形だけは正しいものの、その先に何もないスラッグが返されます。Gemini CLIは別の製品で、答えも異なります。ツール呼び出しが存在するのはそちらであり、二つのGoogleの画面のどちらを選ぶかという、一見好みの問題に見える判断が、チームでこれを利用できるかどうかを決める理由はそこにあります。

この記事では、三つの画面と、それぞれで実際にできることを説明します。MCP経由のCLI、Gemini APIのfunction calling、そして入力済みのチャットです。ChatGPTについての関連記事では異なる結論に達しています。画面を選ぶ前に、その理由を理解しておく価値があります。

Geminiアプリで短縮リンクを作成できない理由

GemsはGeminiのカスタムアシスタント機能で、表面的にはカスタムGPTに相当するものに見えます。しかし、ここで重要な点では同じではありません。GemsにはActionsに相当する機能がありません。OpenAPIスキーマのフィールドもありません。認証設定もありません。自分のエンドポイントを指定する方法もありません。

GemsではGoogle独自の拡張機能を使えます。Workspace、Maps、YouTubeです。これらはGoogleが構築したものであり、自分で設定するものではありません。つまり、この機能差は設定一つで解消できる成熟度の差ではありません。Gemの指示に何を書いても、自分のAPIへのネットワークアクセスは与えられません。

そのため、アプリはツールを持たないアシスタントが短縮リンクを求められたときにすることをします。もっともらしい文字列を生成するのです。この点は、これを相手に午後いっぱいプロンプトを試す前に知っておく価値があります。

URL短縮についてGeminiの三つの画面を比較した図:アプリとGemsにはサードパーティAPIへの経路がなく、CLIはMCP経由でAPIに到達し、APIはfunction calling経由でAPIに到達する

ルート1: MCP経由のGemini CLI

Gemini CLIはModel Context Protocolをサポートしています。つまり、Claude DesktopやCursorに提供しているものと同じ@elido/mcp-serverが、Gemini専用のコードなしでここでも動作します。一度設定すれば、create_linklist_linksquery_analyticsgenerate_qrlist_workspacesが呼び出し可能なツールとして表示されます。

サーバーを追加する

最も簡単なのは組み込みコマンドです。

gemini mcp add -s user -e ELIDO_API_KEY=$ELIDO_API_KEY elido npx -y @elido/mcp-server

または、設定ファイルを直接編集します。ユーザースコープは~/.gemini/settings.json、プロジェクトスコープは.gemini/settings.jsonにあり、ブロックはmcpServersの下に置きます。

{
  "mcpServers": {
    "elido": {
      "command": "npx",
      "args": ["-y", "@elido/mcp-server"],
      "env": {
        "ELIDO_API_KEY": "$ELIDO_API_KEY",
        "ELIDO_WORKSPACE_ID": "$ELIDO_WORKSPACE_ID"
      },
      "timeout": 30000
    }
  }
}

envの展開でつまずく細部

Gemini CLIは$VAR${VAR}envブロック内で展開します。そのため、上のキーは貼り付けた秘密情報ではなく参照になっています。これを使ってください。有効なキーを含むプロジェクトスコープの.gemini/settings.jsonをコミットするのは、簡単に起こり、しかも気づきにくいミスです。

GoogleのMCPサーバーのドキュメントにある注意点として、未定義の変数は例外を投げず空文字列に解決されます。そのため、変数名の打ち間違いが起動時に明確なエラーになることはありません。後になって、最初のツール呼び出しで認証エラーとして失敗します。持っているはずの変数名ではなく認証情報を示すエラーだったため、私はexportの抜けに20分を費やし、その間ずっと違うファイルを読み直していました。サーバーには接続できるのにすべての呼び出しがunauthorisedで返る場合は、まず変数を確認してください。

キーを設定すれば、次にターミナルで書くキャンペーン概要から、それ自体のリンクを作成できます。ワークスペースを始めると、この統合専用のスコープ付きキーを生成してください。

ルート2: Gemini APIのfunction calling

対話的に作業するのではなく何かを構築するなら、function callingがAPIレイヤーにおける同等の仕組みです。関数を宣言し、モデルが必要だと判断したときに構造化された呼び出しを返し、コードでリクエストを実行して、結果をモデルに返します。

形は他のツール統合と同じです。create_linkを説明し、自分でHTTPリクエストを実行し、レスポンスを返します。MCPよりも得られるのは制御性です。モデルが設定できるパラメーターを正確に決められ、リクエストがプロセスから出る前に命名規則外のものを拒否できます。失うのは移植性です。この接続は自分で保守する必要があり、他の場所には付いてきません。

多くのチームにとって、このルートが適しているのは、短縮がより大きな自動化フローの一つのステップになる場合だけです。作業中にリンクが欲しいだけなら、CLIの方がコードも少なく、稼働させ続けるものも少なくて済みます。

ルート3: 入力済みチャット

設定不要の選択肢は、プロンプトがあらかじめ入力された状態でGeminiを開くリンクです。

https://gemini.google.com/app?q=<url-encoded%20prompt>

これがLLM統合ページのボタンの仕組みで、2026年4月に実際の画面で確認しました。AI製品のクエリパラメーターの挙動は変わるため、ボタンが以前のように動かなくなったら再テストしてください。

最初のセクションを踏まえて、これで何が得られるのかを冷静に見ておきましょう。アシスタントにはツールがないため、下書きを作るところまでで、実行するのは自分です。それでも役には立ちます。一貫した命名規則で8種類のUTMを必要とするローンチは、手作業では面倒ですが、モデルなら正しく作成しやすい作業です。ただし、リンクが完成するわけではありません。

Gemini CLIのツール呼び出しの流れ:settings.jsonがElido MCPサーバーを宣言し、CLIがstdio経由で起動し、サーバーがモデルに届かないキーでElido APIを呼び出し、解決された短縮リンクが会話に戻る

どのルートが適しているか

画面自分のAPIを呼び出せるか設定最適な用途
GeminiアプリとGemsいいえ利用可能な設定なしスラッグとUTM一式の下書き
Gemini CLIはい、MCP経由設定ブロック1つ日常的な対話利用
Gemini APIはい、function calling経由自分で保守するコード自動化フロー内のリンク

この表をChatGPTの表と並べて読むと、この非対称性が要点だとわかります。ChatGPTでは共有可能な画面が接続済みのアクションを保持できるため、マーケティングチームに動作するカスタムGPTを渡せます。Geminiで接続された画面はターミナルです。ユーザーがマーケターなら、この違いが機能比較より先にプラットフォームを決めます。

キーのスコープを維持する

MCPサーバーが認証情報を保持し、モデルには見えないという形は適切です。それでも、その認証情報で何ができるかは自分で決める必要があります。

ツール間で一つのキーを使い回すのではなく、統合ごとにキーを発行してください。対話的なリンク作成用のキーには、リンクの作成とアナリティクスの読み取りが必要ですが、リンクの削除やカスタムドメインへのアクセスは必要ありません。監査ログに予期しないものが現れたとき、統合ごとのキーならどの画面が生成したかがわかり、そのキーを取り消しても他のものには影響しません。

プロジェクトスコープについては、もう一つ考えるべきことがあります。共有リポジトリにコミットされた.gemini/settings.jsonは便利ですが、すべてのコントリビューターが引き継ぐファイルでもあります。秘密情報は環境変数に置き、設定ファイルにはプルリクエストに貼り付けたくないものを入れないようにしてください。

正直な制限

期待値を設定しておくべき点が三つあります。

ツールの種類を少なくしているのは意図的です。@elido/mcp-serverは5つのツールを備えた0.1.xで、ワークスペース管理は意図的に含まれていません。ユーザーの招待、ドメインの設定、プランの変更はダッシュボードに残り、ログインした人間がそこで行います。

大量の作業は別の場所で行うべきです。一つの会話で40個のリンクを求めると、レート制限エラーが発生し、どのスラッグがどの遷移先に対応するかをモデルが見失います。少数を超えたら、APIまたはCSVインポートを使ってください。

また、アプリの機能差は、誰かが発表した範囲では一時的なものではありません。待ち続けるのではなく、それを前提に計画してください。技術者でないチームが今日チャット画面からリンクを作成する必要があるなら、正直な答えはGemではなく、別のアシスタントかダッシュボードです。

基礎記事を読む → ElidoをMCPでClaudeとCursorに接続する

ブログの関連記事

よくある質問

GeminiでURLを短縮できますか?

ツールを呼び出せる場所でのみ可能です。Gemini CLIはMCPサーバーをサポートしているため、Elido MCPサーバーを設定すれば実際のリンクを作成できます。一般向けのGeminiアプリではできません。サードパーティAPIを呼び出す仕組みがないため、そこで頼むと、どこにも解決されない、もっともらしいスラッグが作られます。

Gemini GemsはカスタムGPTのようなカスタムアクションに対応していますか?

いいえ。GemsにはGPT Actionsに相当する機能がないため、自分のAPI、Webhook、サービスを指定することはできません。GemsではWorkspace、Maps、YouTubeなどGoogle独自の拡張機能を使えますが、これらは自分で設定する接続ではなく、Googleがあらかじめ構築したものです。これが、Geminiを基盤に構築する場合とChatGPTを基盤に構築する場合の、構造上の主な違いです。

Gemini CLIにMCPサーバーを追加するにはどうすればよいですか?

サーバー名とコマンドを指定してgemini mcp addを実行するか、settings.jsonにmcpServersブロックを直接追加します。ユーザースコープは~/.gemini/settings.json、プロジェクトスコープは.gemini/settings.jsonにあり、どちらのファイルに書き込むかはスコープフラグで決まります。

APIキーをsettings.jsonの外に置くことはできますか?

はい。Gemini CLIはenvブロック内の環境変数を展開するため、秘密情報を貼り付ける代わりに$ELIDO_API_KEYと記述できます。ただし、未定義の変数はエラーを発生させず空文字列に解決されるため、変数名の打ち間違いは最初のツール呼び出しで認証エラーのように見えます。

GeminiのWebアプリだけを使う場合はどうすればよいですか?

入力済みのチャットを使って下書きを作り、リンクは自分で作成してください。アシスタントは命名規則に合ったスラッグを提案し、複数チャネルのローンチ用にUTM一式を作成できますが、リンクは実際に書き込みを行える場所で作成する必要があります。アプリは実行環境ではなく、下書きのための画面として扱ってください。

Geminiとの統合は本番利用の準備ができていますか?

依存するMCPサーバーは0.1.xで、Gemini側の機能は当社の統合レジストリでBetaと表示されています。そのため、利用可能ではありますが初期段階の機能として扱ってください。0.1.xの範囲内ではツール入力の互換性は壊れず、ツールの種類は減るのではなく増えていく予定です。

Elidoを試す

URLを貼り付けて短縮リンクを取得

登録不要。リンクは30日間有効。永久に保存するには登録してください。

Free、登録不要 · 1日あたり2件

Elidoを試す

EUホスティングのURL短縮サービス。カスタムドメイン、詳細な分析、オープンAPI付き。無料プラン - クレジットカード不要。

タグ
gemini url shortener
gemini cli mcp
shorten links in gemini
gemini function calling
gemini gems
ai integration

続きを読む