Gemini API ＆ SDK が MCP 対応したので試す（Node.js を利用）【Google I/O 2025】


以下の公式のポストなどなど、情報が出ていた件です。

https://x.com/Google/status/1924876712749203804
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/a4f6df33-11d0-4a5c-8957-af060606a3ee.png)

Google I/O 2025 で発表された内容の 1つ、「Gemini API ＆ SDK の MCP 対応」を試します。


## 試していく

Node.js を使ってお試しをやってみます。


### 公式ドキュメントを見てみる

公式ドキュメントで、詳細を確認してみます。


[「Gemini API を使用した関数呼び出し」のページの「Model Context Protocol（MCP）」という部分](https://ai.google.dev/gemini-api/docs/function-calling?hl=ja&example=weather#use_model_context_protocol_mcp)を見ると、サンプルコードなどを確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/e26ec6d8-e01a-4262-aba9-9c452b1b7502.png)


#### サンプルコード

コードは Python か JavaScript のサンプルを見ることができ、自分は JavaScript のほうを見てみます。

掲載されているコードは、以下のとおりです。

```javascript
import { GoogleGenAI, FunctionCallingConfigMode , mcpToTool} from '@google/genai';
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

// Create server parameters for stdio connection
const serverParams = new StdioClientTransport({
  command: "npx", // Executable
  args: ["-y", "@philschmid/weather-mcp"] // MCP Server
});

const client = new Client(
  {
    name: "example-client",
    version: "1.0.0"
  }
);

// Configure the client
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

// Initialize the connection between client and server
await client.connect(serverParams);

// Send request to the model with MCP tools
const response = await ai.models.generateContent({
  model: "gemini-2.0-flash",
  contents: `What is the weather in London in ${new Date().toLocaleDateString()}?`,
  config: {
    tools: [mcpToTool(client)],  // uses the session, will automatically call the tool
    // Uncomment if you **don't** want the sdk to automatically call the tool
    // automaticFunctionCalling: {
    //   disable: true,
    // },
  },
});
console.log(response.text)

// Close the connection
await client.close();
```


### 下準備とコードの実行

#### 下準備

また、先ほどのサンプルコードの冒頭を見ると、2つのパッケージをインストールすれば良さそうです（具体的には以下のとおり）。

```zsh
npm install @google/genai @modelcontextprotocol/sdk
```

それと合わせて、下準備として Gemini の APIキーを、環境変数 GEMINI_API_KEY という名前で設定しておきます。


#### MCPサーバーを使った処理の実行

先ほどのサンプルコードを書きかえて、MCPサーバーを使った処理の実装などを行います。

MCPサーバーは [Filesystem MCP Server](https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem) を使う形に変えてみて、そして他の部分も少し書きかえています。コードは以下のとおりです。

```javascript
import { GoogleGenAI, mcpToTool } from "@google/genai";
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

async function main() {
  const serverParams = new StdioClientTransport({
    command: "npx",
    args: [
      "-y",
      "@modelcontextprotocol/server-filesystem",
      "【処理を許可するフォルダへのフルパス】",
    ],
  });

  const client = new Client({ name: "test-client", version: "1.0.0" });
  const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
  await client.connect(serverParams);

  const tool = mcpToTool(client);

  const listResp = await ai.models.generateContent({
    model: "gemini-2.0-flash",
    contents: "利用許可されているディレクトリのパスを教えてください。",
    config: {
      tools: [tool],
    },
  });
  console.log(JSON.stringify(listResp, null, 2));

  await client.close();
}

main().catch((err) => {
  console.error(err);
  process.exit(1);
});
```

上記を実行したところ、MCPサーバーに関する記載をした部分の「【処理を許可するフォルダへのフルパス】」に該当するパスの情報が、Gemini からのレスポンスとして返ってきたのを確認できました。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/2aa4314e-1d74-4805-b8be-ac948b3d9238.png)


## 余談

今回の内容をやっていく中で、公式ドキュメント左メニューで実験的なマークがついてたこれらも気になりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/531fb98b-4c4b-4a86-88f8-98861b6137ed.png)

- [音楽生成  |  Gemini API](https://ai.google.dev/gemini-api/docs/music-generation?hl=ja)
- [Live API  |  Gemini API](https://ai.google.dev/gemini-api/docs/live?hl=ja)
- [URL context  |  Gemini API](https://ai.google.dev/gemini-api/docs/url-context?hl=ja)


他、新しく出た以下のモデルも軽く API から試してみたいところです（以下は [Google AI Studio](https://aistudio.google.com/prompts/new_chat) の画面）。



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/c48a7ee1-c1b3-4355-8e9c-de0a7aab4a5b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/cc2dc5b9-69ce-4109-9d33-ceb19068af7c.png)