Skip to main content
Glama
Rybbit MCP Server

Rybbit MCP Server

by daikazu

Rybbit MCP Server

NOTE

Rybbit now ships anofficial MCP server — a hosted, remote endpoint built into Rybbit itself with OAuth and scoped API-key support. This package offers full feature parity with it, plus extra tools it doesn't have (composite summaries, period comparison, batch event ingestion, ~20 additional read endpoints) and a local stdio transport for clients without remote MCP/OAuth support. See How this compares to the official Rybbit MCP.

An MCP (Model Context Protocol) server for the Rybbit Analytics API. It gives MCP-compatible AI assistants access to your Rybbit Analytics data and management capabilities, allowing you to query traffic, sessions, events, users, goals, funnels, performance, errors, and more using natural language. Ask questions like, "How many people visited last week, and what pages did they view?" and get detailed answers.

Installation

No installation required! Use npx to run directly.

Or install globally:

npm install -g rybbit-mcp-server

Related MCP server: Google Analytics MCP Server

Configuration

Environment Variables

Variable

Required

Default

Description

RYBBIT_API_KEY

Yes

—

Your Rybbit API key

RYBBIT_URL

No

https://app.rybbit.io

Base URL for the Rybbit API (for self-hosted instances)

RYBBIT_CACHE_TTL

No

60

Seconds to cache GET responses in memory (0 disables; live visitor counts are never cached)

RYBBIT_READ_ONLY

No

off

Set to 1 or true to run read-only: all 18 write tools (goal/funnel/site/team create-update-delete, member management, user identify/traits/delete, event tracking) are hidden from the tool list and rejected if called

Getting an API Key

  1. Navigate to Settings → Account in your Rybbit dashboard

  2. Go to the API Keys section

  3. Create a key with a custom name

  4. Copy it immediately (it won't be shown again)

How this compares to the official Rybbit MCP

Compared against the official MCP v0.3.0 (Rybbit v2.7.0, July 2026).

Capability

Official MCP

This package

Analytics reads (overview, timeseries, breakdowns, live, retention, journeys, web vitals, errors)

✅

✅

Sessions, events, users (raw data reads)

✅

✅

Goals & funnels (read, analyze, CRUD)

✅

✅

Sites & organizations (CRUD, members)

✅

✅

Raw read-only ClickHouse SQL (run_query + schema)

✅

✅

User identify / traits / GDPR delete

✅

✅

Teams & member site-access management

✅

✅

Extra read tools (goal sessions, funnel step sessions, performance timeseries & by-dimension, error events & timeseries, session locations, user session counts, event properties, outbound links)

❌

✅

Event ingestion (rybbit_track_event)

❌

✅

Batch event ingestion (rybbit_track_events, 1–50 per call)

❌

✅

Composite digest (rybbit_get_site_summary)

❌

✅

Period-over-period comparison (rybbit_compare_periods)

❌

✅

Response caching + rate-limit awareness

❌

✅

Read-only mode via env flag

❌

✅

Local stdio transport (no remote MCP/OAuth support needed)

❌

✅

Hosted remote endpoint (nothing to run locally)

✅

❌

OAuth authorization flow

✅

❌

Both authenticate with the same Rybbit API keys and hit the same public REST API, so scoped keys (resource:action permissions) work identically: reads need the matching :read scope, writes need :write (write implies read), and destructive operations additionally require org admin/owner role. rybbit_run_query needs sql:read; server-side event ingestion is marked trusted with ingest:write. The official server can approximate read-only operation with a scoped API key; this package's RYBBIT_READ_ONLY flag works with any key and composes with scoped keys.

Usage

With Claude Desktop

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "rybbit": {
      "command": "npx",
      "args": ["rybbit-mcp-server"],
      "env": {
        "RYBBIT_API_KEY": "your_api_key_here"
      }
    }
  }
}

For self-hosted Rybbit instances, add the RYBBIT_URL environment variable:

{
  "mcpServers": {
    "rybbit": {
      "command": "npx",
      "args": ["rybbit-mcp-server"],
      "env": {
        "RYBBIT_API_KEY": "your_api_key_here",
        "RYBBIT_URL": "https://your-rybbit-instance.com"
      }
    }
  }
}

With Claude Code

Add to your Claude Code MCP settings (~/.claude/settings.json):

{
  "mcpServers": {
    "rybbit": {
      "command": "npx",
      "args": ["rybbit-mcp-server"],
      "env": {
        "RYBBIT_API_KEY": "your_api_key_here",
        "RYBBIT_URL": "https://your-rybbit-instance.com"
      }
    }
  }
}

Standalone

npx rybbit-mcp-server

# Or if installed globally:
rybbit-mcp-server

Example Questions

You ask...

Tools used

"How many people visited last week, and what pages did they view?"

rybbit_get_site_summary

"Show the daily traffic trend this month"

rybbit_get_overview_timeseries

"Where is my traffic coming from?"

rybbit_get_metric (referrer, country, utm_source)

"Who are my most active users, and what did they do?"

rybbit_get_users → rybbit_get_user_sessions

"Trace one visitor's journey"

rybbit_get_user_sessions → rybbit_get_session_details

"How many people are on the site right now?"

rybbit_get_live_visitors

"Is the site healthy?"

rybbit_get_performance_overview + rybbit_get_error_names

"How is my signup funnel converting?"

rybbit_get_funnels → rybbit_analyze_funnel

"What are the most common paths through my site?"

rybbit_get_journeys

"Are users coming back?"

rybbit_get_retention

Available Tools

Overview & Metrics

  • rybbit_get_overview - Get high-level analytics (sessions, pageviews, users, bounce rate)

  • rybbit_get_overview_timeseries - Get time-series analytics data

  • rybbit_get_metric - Get dimensional breakdown by parameter (browser, country, etc.)

  • rybbit_get_live_visitors - Get count of currently active visitors

Sessions

  • rybbit_get_sessions - Get paginated list of sessions

  • rybbit_get_session_details - Get detailed session info with events

  • rybbit_get_session_locations - Get session locations for map visualization

Events

  • rybbit_get_events - Get paginated list of events (supports sinceTimestamp/beforeTimestamp cursors)

  • rybbit_get_event_names - Get unique event names with counts

  • rybbit_get_event_properties - Get properties for a specific event

  • rybbit_get_outbound_links - Get outbound link clicks

Users

  • rybbit_get_users - Get paginated list of users

  • rybbit_get_user_sessions - Get sessions for a specific user

  • rybbit_get_user_session_count - Get daily session count for a user

  • rybbit_get_user_info - Get detailed user profile

SQL (Raw Data)

  • rybbit_run_query - Run read-only ClickHouse SQL against your events (SELECT-only, max 1,000 rows, 10s cap)

  • rybbit_get_query_schema - Get the events-table column schema for writing queries

Users (management)

  • rybbit_identify_user - Link an anonymous visitor to a user ID and merge traits

  • rybbit_update_user_traits - Replace a user's profile traits (wholesale replacement)

  • rybbit_delete_user - Permanently erase a user and all their data (GDPR, irreversible)

Goals

  • rybbit_get_goals - Get goals with conversion metrics

  • rybbit_get_goal_sessions - Get sessions that completed a goal

  • rybbit_create_goal - Create a new goal (path or event-based)

  • rybbit_update_goal - Update goal configuration

  • rybbit_delete_goal - Delete a goal

Funnels

  • rybbit_get_funnels - Get saved funnels

  • rybbit_analyze_funnel - Analyze step-by-step conversion

  • rybbit_get_funnel_step_sessions - Get sessions at a funnel step

  • rybbit_create_funnel - Create a new funnel

  • rybbit_delete_funnel - Delete a funnel

Performance (Core Web Vitals)

  • rybbit_get_performance_overview - Get LCP, CLS, INP, FCP, TTFB metrics

  • rybbit_get_performance_timeseries - Get performance trends over time

  • rybbit_get_performance_by_dimension - Get performance by pathname, country, etc.

Error Tracking

  • rybbit_get_error_names - Get unique errors with counts

  • rybbit_get_error_events - Get error occurrences with stack traces

  • rybbit_get_error_timeseries - Get error trends over time

Retention & Journeys

  • rybbit_get_retention - Get cohort-based retention analysis

  • rybbit_get_journeys - Get common user navigation paths

Organizations & Sites

  • rybbit_get_organizations - Get your organizations

  • rybbit_get_organization_members - Get organization members

  • rybbit_add_organization_member - Add a member to an organization

  • rybbit_create_site - Create a new site

  • rybbit_get_site - Get site details

  • rybbit_update_site - Update site configuration

  • rybbit_delete_site - Delete a site

  • rybbit_get_excluded_ips - Get IPs excluded from tracking

  • rybbit_get_excluded_countries - Get country codes excluded from tracking

  • rybbit_get_private_link_config - Get private-link sharing config (org admin only)

Teams

  • rybbit_get_teams - List teams with members and site assignments

  • rybbit_create_team - Create a team with optional members and sites

  • rybbit_update_team - Update a team (member/site lists replaced wholesale)

  • rybbit_delete_team - Delete a team

  • rybbit_update_member_site_access - Restrict a member to specific sites

Event Tracking

  • rybbit_track_event - Send tracking events (pageview, custom, performance, error, outbound)

Composite & Batch

  • rybbit_get_site_summary - One-call digest: overview + top pages/referrers/countries/devices/events + live count (~7 API requests)

  • rybbit_compare_periods - Compare overview metrics vs the equal-length preceding period with deltas

  • rybbit_track_events - Send 1-50 tracking events in one call with per-event results

Common Parameters

Time Parameters

Most analytics tools accept time parameters:

  • startDate / endDate - Date range in YYYY-MM-DD format

  • timeZone - IANA timezone (e.g., "America/New_York")

  • pastMinutesStart / pastMinutesEnd - Relative time range in minutes

Filters

Filter data using JSON array format:

[
  {
    "parameter": "country",
    "type": "equals",
    "value": ["US"]
  }
]

Filter types: equals, not_equals, contains, not_contains, regex, not_regex, greater_than, less_than

Available parameters: browser, operating_system, device_type, country, region, city, pathname, page_title, hostname, querystring, referrer, utm_source, utm_medium, utm_campaign, user_id, event_name

Rate Limits

The Rybbit API has a rate limit of 500 requests per 10 minutes per API key.

License

MIT

Available Tools

57 tools
rybbit_add_organization_memberC

Add a member to an organization

Inputs: role (required), email (required), organizationId (required).

rybbit_analyze_funnelC

Analyze a funnel and get step-by-step conversion data

Inputs: steps (required), siteId (required), endDate, filters, +4 more.

rybbit_compare_periodsA

Compare site overview metrics between a date range and the equal-length preceding period. Returns current values, previous values, and per-metric absolute and percent changes (percentChange is null when the previous value was 0).

Inputs: siteId (required), endDate (required), startDate (required), filters, +1 more.

rybbit_create_funnelB

Create or update a saved funnel

Inputs: name (required), steps (required), siteId (required), reportId.

rybbit_create_goalA

Create a new goal for tracking conversions (path-based or event-based)

Inputs: name (required), siteId (required), goalType (required), eventName, +3 more.

rybbit_create_siteA

Create a new site in an organization

Inputs: name (required), domain (required), organizationId (required), public, +5 more.

rybbit_create_teamA

Create a team in an organization, optionally assigning members and sites. Requires org admin/owner role and the org:write scope.

Inputs: name (required), organizationId (required), siteIds, memberUserIds.

rybbit_delete_funnelA

Delete a saved funnel permanently

Inputs: siteId (required), funnelId (required).

rybbit_delete_goalA

Delete a goal permanently

Inputs: goalId (required), siteId (required).

rybbit_delete_siteB

Delete a site permanently

Inputs: siteId (required).

rybbit_delete_teamA

Delete a team permanently. Requires org admin/owner role and the org:write scope.

Inputs: teamId (required), organizationId (required).

rybbit_delete_userA

Permanently delete a user and all their data (events, session replays, profile, aliases) — GDPR erasure. DESTRUCTIVE and IRREVERSIBLE; deletion runs asynchronously. Requires org admin/owner role and the users:write scope.

Inputs: siteId (required), userId (required).

rybbit_get_error_eventsA

Get individual error occurrences with full context including stack traces

Inputs: siteId (required), errorMessage (required), page, limit, +6 more.

rybbit_get_error_namesA

Get unique error messages with occurrence and session counts

Inputs: siteId (required), page, limit, endDate, +5 more.

rybbit_get_error_timeseriesC

Get error occurrence trends over time

Inputs: siteId (required), errorMessage (required), bucket, endDate, +5 more.

rybbit_get_event_namesA

Get a list of unique custom event names with their occurrence counts

Inputs: siteId (required), endDate, filters, timeZone, +3 more.

rybbit_get_event_propertiesA

Get property key-value pairs for a specific event name with occurrence counts

Inputs: siteId (required), eventName (required), endDate, filters, +4 more.

rybbit_get_eventsB

Get a paginated list of events (pageviews, custom events, and outbound clicks)

Inputs: siteId (required), page, endDate, filters, +7 more.

rybbit_get_excluded_countriesA

Get the list of country codes excluded from tracking for a site. Requires the sites:read scope.

Inputs: siteId (required).

rybbit_get_excluded_ipsA

Get the list of IP addresses excluded from tracking for a site. Requires the sites:read scope.

Inputs: siteId (required).

rybbit_get_funnelsB

Get all saved funnels for a site

Inputs: siteId (required).

rybbit_get_funnel_step_sessionsC

Get sessions that reached or dropped off at a specific funnel step

Inputs: mode (required), steps (required), siteId (required), stepNumber (required), +8 more.

rybbit_get_goalsA

Get a paginated list of goals with their conversion metrics

Inputs: siteId (required), page, sort, limit, +7 more.

rybbit_get_goal_sessionsB

Get sessions that completed a specific goal

Inputs: goalId (required), siteId (required), page, limit.

rybbit_get_journeysC

Get the most common page navigation paths (user journeys) within sessions

Inputs: siteId (required), limit, steps, endDate, +6 more.

rybbit_get_live_visitorsC

Get the count of currently active visitors on the site

Inputs: siteId (required), minutes.

rybbit_get_metricB

Get dimensional breakdown of metrics by a specific parameter (browser, country, pathname, etc.)

Inputs: siteId (required), parameter (required), page, limit, +6 more.

rybbit_get_organization_membersC

Get members of a specific organization

Inputs: organizationId (required).

rybbit_get_organizationsA

Get all organizations the authenticated user is a member of

Inputs: no named parameters.

rybbit_get_overviewB

Get high-level analytics metrics for a site including sessions, pageviews, users, bounce rate, and session duration

Inputs: siteId (required), endDate, filters, timeZone, +3 more.

rybbit_get_overview_timeseriesB

Get time-series analytics data broken into configurable time buckets for trend analysis

Inputs: siteId (required), bucket, endDate, filters, +4 more.

rybbit_get_performance_by_dimensionA

Get performance metrics broken down by a specific dimension (pathname, country, browser, etc.)

Inputs: siteId (required), dimension (required), page, limit, +8 more.

rybbit_get_performance_overviewB

Get Core Web Vitals and performance metrics overview (LCP, CLS, INP, FCP, TTFB percentiles)

Inputs: siteId (required), endDate, filters, timeZone, +3 more.

rybbit_get_performance_timeseriesC

Get performance metrics over time for trend analysis

Inputs: siteId (required), bucket, endDate, filters, +4 more.

rybbit_get_query_schemaA

Get the ClickHouse column schema of the scoped_events table for use with rybbit_run_query. Returns column names, types, and usage notes. No API request is made.

Inputs: no named parameters.

rybbit_get_retentionC

Get cohort-based retention analysis data

Inputs: siteId (required), mode, range.

rybbit_get_session_detailsA

Get detailed information about a specific session including all events and pageviews

Inputs: siteId (required), sessionId (required), page, limit, +2 more.

rybbit_get_session_locationsA

Get aggregated session locations with coordinates for map visualization

Inputs: siteId (required), endDate, filters, timeZone, +3 more.

rybbit_get_sessionsC

Get a paginated list of sessions with analytics data

Inputs: siteId (required), page, limit, userId, +7 more.

rybbit_get_siteB

Get site details and configuration

Inputs: siteId (required).

rybbit_get_site_summaryA

Get a one-call analytics digest for a site: overview metrics plus top pages, referrers, countries, device types, custom events, and current live visitor count. Fans out to ~7 API requests internally — prefer this over calling each tool separately.

Inputs: siteId (required), limit, endDate, filters, +4 more.

rybbit_get_teamsA

List teams in an organization, including their members and site assignments. Requires the org:read scope.

Inputs: organizationId (required).

rybbit_get_user_infoB

Get detailed user information including profile traits and linked devices

Inputs: siteId (required), userId (required).

rybbit_get_usersC

Get a paginated list of users with analytics data

Inputs: siteId (required), page, sortBy, endDate, +8 more.

rybbit_get_user_session_countB

Get the number of sessions per day for a specific user

Inputs: siteId (required), userId (required), timeZone.

rybbit_get_user_sessionsB

Get session data for a specific user

Inputs: siteId (required), userId (required).

rybbit_identify_userA

Link an anonymous visitor to a known user ID and optionally merge profile traits. Requires the users:write scope.

Inputs: siteId (required), userId (required), anonymousId (required), traits.

rybbit_run_queryA

Run a read-only ClickHouse SQL query against your analytics events. Query the scoped_events table only (pre-filtered to sites your API key can access). Server-enforced limits: SELECT/WITH-SELECT statements only; max 1,000 result rows; 10-second execution cap; query length up to 20,000 chars; no semicolons; no quoted identifiers; DDL/DML keywords and remote table functions are blocked. Requires the sql:read scope. Call rybbit_get_query_schema first to see available columns. Omit siteId to query across all accessible sites in the organization.

Inputs: query (required), organizationId (required), siteId.

rybbit_track_eventB

Send a tracking event (pageview, custom event, performance, error, or outbound link)

Inputs: type (required), siteId (required), cls, fcp, +10 more.

rybbit_track_eventsA

Send a batch of 1-50 tracking events in one call. Each event has the same shape as rybbit_track_event. Events are sent sequentially; the result reports per-event success/failure. Note: siteId is the tracking site ID from your Rybbit tracking snippet. An API key with the ingest:write scope marks events as trusted server-side ingestion.

Inputs: events (required).

rybbit_update_goalC

Update an existing goal configuration

Inputs: name (required), goalId (required), siteId (required), goalType (required), +4 more.

rybbit_update_member_site_accessA

Restrict or unrestrict which sites an organization member can access. memberId is the membership record ID from rybbit_get_organization_members (not the user ID). Requires org admin/owner role and the org:write scope.

Inputs: memberId (required), organizationId (required), hasRestrictedSiteAccess (required), siteIds.

rybbit_update_siteC

Update site configuration

Inputs: siteId (required), domain, public, blockBots, +6 more.

rybbit_update_teamA

Update a team. WARNING: memberUserIds and siteIds are replaced wholesale when provided — include the full desired lists. Requires org admin/owner role and the org:write scope.

Inputs: name (required), teamId (required), organizationId (required), siteIds, +1 more.

rybbit_update_user_traitsA

Replace the profile traits of an identified user. WARNING: this is a wholesale replacement, not a merge — include every trait you want to keep. Max 2KB serialized. Requires the users:write scope.

Inputs: siteId (required), traits (required), userId (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 57 tools

    Disambiguation4/5

    Most tools target distinct resources and actions, but the analytics cluster (overview, overview_timeseries, metric, site_summary, compare_periods) has overlapping purposes that require careful reading of descriptions. The rest are clearly separated by resource type.

    Naming Consistency5/5

    All tools follow a consistent rybbit_<verb>_<noun> snake_case pattern, with clear verbs like get, create, update, delete, track, analyze. This makes the tool set predictable and easy to navigate.

    Tool Count2/5

    At 57 tools, this is far beyond the typical well-scoped MCP server. While each tool has a defined role, the sheer number creates cognitive overhead and increases the likelihood of misselection.

    Completeness4/5

    The tool set covers the full analytics lifecycle: data ingestion (track), querying (run_query), dashboards (overview, funnels, retention), user management, and site/team administration. Minor gaps exist (e.g., no remove_organization_member), but the surface is largely comprehensive.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      A Model Context Protocol server that provides tools to interact with Matomo Analytics API, enabling management of sites, users, goals, segments, and access to analytics reports through a MCP interface.
      11
      15 npm
      ISC
    • A
      license
      Not graded
      quality
      Not graded
      maintenance
      An experimental MCP server that enables interaction with Google Analytics APIs, allowing users to retrieve account information, run core reports, and access realtime analytics data through natural language queries.
      Apache 2.0
    • F
      license
      A
      quality
      D
      maintenance
      MCP server for the WhatsMyBudget Analytics API, providing tools to query budget periods, categories, accounts, and summaries.
      26
      -
    • A
      license
      A
      quality
      D
      maintenance
      Exposes Rybbit Analytics as MCP tools for querying site traffic, page views, visitor sessions, and live visitor counts through natural language.
      9
      78 npm
      MIT