Skip to main content
Glama
Shin-sibainu

GA4 MCP Server

by Shin-sibainu

get_traffic_summary

Retrieve Google Analytics 4 traffic summaries including page views, users, sessions, and bounce rates for specified periods to monitor website performance.

Instructions

指定期間のトラフィック概要(PV数、ユーザー数、セッション数、直帰率など)を取得します。ダッシュボード的な使い方に最適です。

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
propertyIdNoGA4プロパティID
periodYes集計期間

Implementation Reference

  • The main handler function that executes the get_traffic_summary tool. It queries GA4 for key traffic metrics using executeReport and formats them into a summary output including page views, users, sessions, bounce rate, etc.
    export async function getTrafficSummary(
      input: GetTrafficSummaryInput
    ): Promise<TrafficSummaryOutput> {
      const propertyId = getPropertyId(input.propertyId);
      const property = formatPropertyPath(propertyId);
      const dateRange = periodToDateRange(input.period);
    
      const response = await executeReport({
        property,
        dateRanges: [dateRange],
        metrics: [
          { name: "screenPageViews" },
          { name: "totalUsers" },
          { name: "sessions" },
          { name: "newUsers" },
          { name: "averageSessionDuration" },
          { name: "bounceRate" },
          { name: "engagementRate" },
          { name: "screenPageViewsPerSession" },
        ],
      });
    
      // 結果からメトリクス値を取得
      const metricValues = response.totals?.[0]?.metricValues || [];
      const getValue = (index: number): number => {
        const value = metricValues[index]?.value;
        return value ? parseFloat(value) : 0;
      };
    
      return {
        totalPageViews: Math.round(getValue(0)),
        totalUsers: Math.round(getValue(1)),
        totalSessions: Math.round(getValue(2)),
        newUsers: Math.round(getValue(3)),
        avgSessionDuration: formatDuration(getValue(4)),
        bounceRate: formatPercentageFromDecimal(getValue(5)),
        engagementRate: formatPercentageFromDecimal(getValue(6)),
        pagesPerSession: roundToDecimal(getValue(7)),
        period: dateRange,
      };
    }
  • Type definitions for the tool's input (GetTrafficSummaryInput: propertyId optional, period required) and output (TrafficSummaryOutput: structured traffic metrics).
    // get_traffic_summary
    export interface GetTrafficSummaryInput extends PropertyId {
      period: Period;
    }
    
    export interface TrafficSummaryOutput {
      totalPageViews: number;
      totalUsers: number;
      totalSessions: number;
      newUsers: number;
      avgSessionDuration: string;
      bounceRate: string;
      engagementRate: string;
      pagesPerSession: number;
      period: {
        startDate: string;
        endDate: string;
      };
    }
  • src/server.ts:204-220 (registration)
    Registers the tool in the MCP server's tools array with name, description, and input schema definition.
    {
      name: "get_traffic_summary",
      description:
        "指定期間のトラフィック概要(PV数、ユーザー数、セッション数、直帰率など)を取得します。ダッシュボード的な使い方に最適です。",
      inputSchema: {
        type: "object" as const,
        properties: {
          propertyId: { type: "string", description: "GA4プロパティID" },
          period: {
            type: "string",
            enum: ["today", "yesterday", "7days", "28days", "30days", "90days"],
            description: "集計期間",
          },
        },
        required: ["period"],
      },
    },
  • src/server.ts:620-631 (registration)
    In the handleToolCall function's switch statement, dispatches calls to the getTrafficSummary handler with parsed arguments.
    case "get_traffic_summary":
      return await getTrafficSummary({
        propertyId: args.propertyId as string | undefined,
        period: args.period as
          | "today"
          | "yesterday"
          | "7days"
          | "28days"
          | "30days"
          | "90days",
      });
  • Re-exports the getTrafficSummary handler from its module for convenient import in server.ts.
    export { getTrafficSummary } from "./getTrafficSummary.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