Gemini API + MCP: Testing Tool Calling with a Read-Only Tarot Dataset

Hi everyone,

I wanted a small and inspectable dataset for testing Gemini’s built-in MCP support without giving the model access to tools that modify external systems.

Most function calling examples use weather services, calendars, or databases. Those are useful, but their changing state can make evaluation harder. For this test, I used a fixed dataset containing all 78 tarot cards.

Tarot is only the test domain here. The same pattern could be applied to a product catalog, glossary, ruleset, reference collection, or another bounded knowledge source.

The MCP server is open source:

Tarot MCP Server on GitHub

The underlying dataset, archived versions, packages, and citation information are available through [Deckaura’s open 78-card tarot dataset and developer resources]( deckaura. com/pages/ai-data-sources).

Tool surface

The server exposes five tools:

  • get_card_meaning
  • list_all_cards
  • draw_random_card
  • three_card_spread
  • yes_no_reading

It runs locally over stdio, reads a local dataset, and does not require a database or external API key.

For the first test, I focused on get_card_meaning because it produces deterministic results.

Minimal JavaScript example

Install the Google Gen AI and MCP SDKs:

npm install @google/genai @modelcontextprotocol/sdk

Then connect Gemini to the MCP server:

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

const ai = new GoogleGenAI({
  apiKey: process.env.GEMINI_API_KEY,
});

const transport = new StdioClientTransport({
  command: "npx",
  args: ["-y", "@deckaura/tarot-mcp-server"],
});

const mcpClient = new Client({
  name: "gemini-tarot-test",
  version: "1.0.0",
});