Skip to main content
Glama

run_realtime_report

Execute real-time reports to retrieve current active user counts and other immediate metrics from Google Analytics 4 properties for instant performance monitoring.

Instructions

リアルタイムレポートを実行し、現在のアクティブユーザー数などを取得します。

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
propertyIdNoGA4プロパティID(省略時は環境変数を使用)
dimensionsNoディメンション(デフォルト: ["country", "deviceCategory"])
metricsNoメトリクス(デフォルト: ["activeUsers"])

Implementation Reference

  • The main handler function that implements the run_realtime_report tool logic. It executes a GA4 realtime report using the provided dimensions and metrics, processes the response into rows and totals.
    export async function runRealtimeReport( input: RunRealtimeReportInput ): Promise<RealtimeReportOutput> { const propertyId = getPropertyId(input.propertyId); const property = formatPropertyPath(propertyId); // デフォルト値の設定 const dimensions = input.dimensions || ["country", "deviceCategory"]; const metrics = input.metrics || ["activeUsers"]; // レポート実行 const response = await executeRealtimeReport({ property, dimensions: dimensions.map((name) => ({ name })), metrics: metrics.map((name) => ({ name })), }); // 結果を整形 const rows: ReportRow[] = []; const dimensionHeaders = response.dimensionHeaders || []; const metricHeaders = response.metricHeaders || []; for (const row of response.rows || []) { const dimensionValues: Record<string, string> = {}; const metricValues: Record<string, number | string> = {}; // ディメンション値を取得 (row.dimensionValues || []).forEach((value, index) => { const header = dimensionHeaders[index]; if (header?.name) { dimensionValues[header.name] = value.value || ""; } }); // メトリクス値を取得 (row.metricValues || []).forEach((value, index) => { const header = metricHeaders[index]; if (header?.name) { const rawValue = value.value || "0"; const numValue = parseFloat(rawValue); metricValues[header.name] = isNaN(numValue) ? rawValue : numValue; } }); rows.push({ dimensions: dimensionValues, metrics: metricValues }); } // 合計値の取得 let totals: Record<string, number | string> | undefined; if (response.totals && response.totals.length > 0) { totals = {}; const totalRow = response.totals[0]; (totalRow.metricValues || []).forEach((value, index) => { const header = metricHeaders[index]; if (header?.name) { const rawValue = value.value || "0"; const numValue = parseFloat(rawValue); totals![header.name] = isNaN(numValue) ? rawValue : numValue; } }); } return { rows, rowCount: rows.length, totals, }; }
  • src/server.ts:162-187 (registration)
    Tool registration in the tools array, defining the name, description, and input schema for listTools response.
    { name: "run_realtime_report", description: "リアルタイムレポートを実行し、現在のアクティブユーザー数などを取得します。", inputSchema: { type: "object" as const, properties: { propertyId: { type: "string", description: "GA4プロパティID(省略時は環境変数を使用)", }, dimensions: { type: "array", items: { type: "string" }, description: 'ディメンション(デフォルト: ["country", "deviceCategory"])', }, metrics: { type: "array", items: { type: "string" }, description: 'メトリクス(デフォルト: ["activeUsers"])', }, }, required: [], }, },
  • src/server.ts:607-612 (registration)
    Tool dispatcher in handleToolCall switch statement that calls the runRealtimeReport handler with parsed arguments.
    case "run_realtime_report": return await runRealtimeReport({ propertyId: args.propertyId as string | undefined, dimensions: args.dimensions as string[] | undefined, metrics: args.metrics as string[] | undefined, });
  • TypeScript interfaces defining the input (RunRealtimeReportInput) and output (RealtimeReportOutput) types for the tool.
    // run_realtime_report export interface RunRealtimeReportInput extends PropertyId { dimensions?: string[]; metrics?: string[]; } export interface RealtimeReportOutput { rows: ReportRow[]; rowCount: number; totals?: Record<string, number | string>; }
  • Re-export of the runRealtimeReport function for convenient import in server.ts.
    export { runRealtimeReport } from "./runRealtimeReport.js";

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Shin-sibainu/ga4-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server