protogrid

Search / com.bitmovin.mcp.analytics/analytics-mcp

Bitmovin Observability MCP

R0· no sign-in

Query and analyse your data from Bitmovin Observability

v0.0.1 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality82good
Trust80of 100
Uptime, 30 days100%
Latency p50358 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "analytics-mcp": {
      "type": "http",
      "url": "https://analytics.mcp.bitmovin.com",
      "headers": {
        "x-api-key": "${X_API_KEY}"
      }
    }
  }
}
claude mcp add --transport http analytics-mcp https://analytics.mcp.bitmovin.com --header "x-api-key: ${X_API_KEY}"
[mcp_servers.analytics-mcp]
url = "https://analytics.mcp.bitmovin.com"
env_http_headers = { "x-api-key" = "X_API_KEY" }
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "analytics-mcp": {
      "type": "remote",
      "url": "https://analytics.mcp.bitmovin.com",
      "enabled": true,
      "headers": {
        "x-api-key": "{env:X_API_KEY}"
      }
    }
  }
}
{
  "mcpServers": {
    "analytics-mcp": {
      "type": "http",
      "url": "https://analytics.mcp.bitmovin.com",
      "headers": {
        "x-api-key": "${X_API_KEY}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=analytics-mcp&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vYW5hbHl0aWNzLm1jcC5iaXRtb3Zpbi5jb20iLCJoZWFkZXJzIjp7IngtYXBpLWtleSI6IiR7WF9BUElfS0VZfSJ9fQ%3D%3D"
}
{
  "servers": {
    "analytics-mcp": {
      "type": "http",
      "url": "https://analytics.mcp.bitmovin.com",
      "headers": {
        "x-api-key": "${X_API_KEY}"
      }
    }
  }
}
{
  "mcpServers": {
    "analytics-mcp": {
      "httpUrl": "https://analytics.mcp.bitmovin.com",
      "headers": {
        "x-api-key": "${X_API_KEY}"
      }
    }
  }
}
extensions:
  "analytics-mcp":
    enabled: true
    name: "analytics-mcp"
    type: streamable_http
    uri: "https://analytics.mcp.bitmovin.com"
    headers:
      "x-api-key": "${X_API_KEY}"
    timeout: 300

Quality 82 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene79 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length3 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations11 of 11 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: queryTotal (idempotentHint); analyzeImpression (idempotentHint); getAvailableMetrics (idempotentHint); …
  • pass
    tools.token_costabout 4,435 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

11 tools, about 4,435 tokens to load them all · tool set 7cddb3d7e5e9 · checked 2026-10-20 18:06 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 80 / 100

no-repository
provenance55
liveness100
freshness85
hygiene80

+dns-namespace +website +reachable +uptime-100% ~updated-75d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://analytics.mcp.bitmovin.com streamable-httpnoneyes100%358 ms2025-11-252026-10-20

Tools (11)

analyzeImpressionread-onlyDeep-dive analysis of a SINGLE playback session identified by a specific impressionId: static properties, aggregated metrics, state-transition timeline, and an AI-powered interpretation of session quality. Use for detailed single-session troubleshooting. REQUIRES an impressionId. Do NOT use this for license-wide metrics, totals, trends, or any time-range ('last week', start/end) analysis — this tool does not accept start/end. For metrics over a time period use the 'query' tool; for breakdowns by category use 'queryGroupBy'.
fetchImpressionsread-onlyList the impression ids (individual playback session ids) for a license over a time range, optionally narrowed by filters. Returns the ids themselves — NOT counts, totals, or trends. Use this to enumerate sessions before drilling into specific ones with `getImpressionOverview` or `analyzeImpression`. Typical uses: 'give me impression ids from yesterday', 'list sessions on Safari that errored last week', 'sample sessions from country US'. Every matching session is eligible (including failed/setup sessions), not only successful plays. Results are capped (default 100, max 200); if truncated, narrow the timeframe/filters or raise `limit`. A licenseKey is required, and `peekAllLicenses` lists the available ones; `searchFilters` resolves the filter attributes and operators used by the optional `filters` input. For metric counts/trends over a period use `query` / `queryTotal`; for category breakdowns use `queryGroupBy`.
getAvailableFiltersread-onlyList the full catalog of filter attributes with their supported operators. Prefer searchFilters to resolve a single attribute; use this only when you need every filter.
getAvailableMetricsread-onlyList the full catalog of metrics with their supported aggregation methods. Prefer searchMetrics to resolve a single keyword; use this only when you need every metric.
getImpressionOverviewread-onlyInspect a SINGLE playback session identified by a specific impressionId. Returns that one session's static properties (device, location, player) and its aggregated metrics (total played time, buffering, video quality). REQUIRES an impressionId. Do NOT use this for license-wide metrics, totals, trends, or any time-range ('last week', start/end) analysis — this tool does not accept start/end. For metrics over a time period use the 'query' tool; for breakdowns by category use 'queryGroupBy'.
peekAllLicensesread-onlyView a summary of all available licenses with their recent play counts and percentage distribution. Use this to understand what licenses exist and their relative usage. When a user asks about licenses by ranking (e.g., 'biggest', 'most active', 'first'), use this to identify which license matches that criteria before querying.
queryread-onlyQuery a metric over a time range (start/end) for a license as a TIME SERIES — always renders a chart. Use this for trends and license-wide analytics over a period (e.g. 'last week', 'last 30 days', 'yesterday'). Bucket size is chosen automatically from start/end; there is no interval field to set. For a single aggregated number (one total/average over the whole period, NO chart), use the separate `queryTotal` tool instead. Queries resolve against API metric keywords, which can differ from a metric's common name — 'plays', for example, is 'impression_id'. The 'searchMetrics' tool resolves a keyword cheaply; 'getAvailableMetrics' returns the full catalog. Every query needs a licenseKey; `peekAllLicenses` lists the ones available. AD ANALYTICS: ad metrics use 'ad_'-prefixed keywords and are queried against a separate ads dataset. The ad completion funnel is: 'ad_quartile_1' (first quartile / 25%) -> 'ad_midpoint' (50%) -> 'ad_quartile_3' (third quartile / 75%) -> 'ad_completions'. Other ad metrics: 'ad_impressions', 'ad_starts', 'ad_clicks', 'ad_skips', 'ad_startup_time', 'ad_error_percentage', 'ad_error_sessions', 'ad_time_played', 'ad_play_percentage', 'ad_unique_users'. Ad data is present on some licenses and not others; `peekAllLicenses` output shows which. A query covers a single license, so an ad question resolves against one license at a time. With an ad metric, filters and groupBy take the AD-specific attributes from 'searchFilters' / 'getAvailableFilters' (e.g. 'AD_SYSTEM', 'AD_POSITION', 'ADVERTISER_NAME'); playback attributes and ad attributes are not interchangeable. OPTIONAL 3) Use the 'searchFilters' tool to find filter attributes/operators (or 'getAvailableFilters' for the full list).
queryGroupByread-onlyquery metric grouped by categories. Queries resolve against API metric keywords, which can differ from a metric's common name — 'plays', for example, is 'impression_id'. The 'searchMetrics' tool resolves a keyword cheaply; 'getAvailableMetrics' returns the full catalog. Every query needs a licenseKey; `peekAllLicenses` lists the ones available. AD ANALYTICS: ad metrics use 'ad_'-prefixed keywords and are queried against a separate ads dataset. The ad completion funnel is: 'ad_quartile_1' (first quartile / 25%) -> 'ad_midpoint' (50%) -> 'ad_quartile_3' (third quartile / 75%) -> 'ad_completions'. Other ad metrics: 'ad_impressions', 'ad_starts', 'ad_clicks', 'ad_skips', 'ad_startup_time', 'ad_error_percentage', 'ad_error_sessions', 'ad_time_played', 'ad_play_percentage', 'ad_unique_users'. Ad data is present on some licenses and not others; `peekAllLicenses` output shows which. A query covers a single license, so an ad question resolves against one license at a time. With an ad metric, filters and groupBy take the AD-specific attributes from 'searchFilters' / 'getAvailableFilters' (e.g. 'AD_SYSTEM', 'AD_POSITION', 'ADVERTISER_NAME'); playback attributes and ad attributes are not interchangeable. The groupBy attribute is an exact API attribute name, and common guesses are often wrong: 'OPERATING_SYSTEM' is invalid where 'OPERATINGSYSTEM' is correct, and an unrecognised attribute fails with a validation error. The 'searchFilters' tool resolves an attribute name; 'getAvailableFilters' returns the full catalog. Results grouped by ERROR_CODE carry occurrence counts but not error semantics, which are Bitmovin-specific and documented in the live Bitmovin documentation served by the docs MCP tool (typically `general_docs_ask_bitmovin_docs`). That tool resolves one numeric error code per call and returns nothing usable for a question naming several codes at once.
queryTotalread-onlyGet an aggregated value (one number) for a metric over a time range — no chart, no time bucketing. Can fetch SEVERAL metrics in one call: pass an array to `metric` to get one value per metric (e.g. the ad completion funnel), instead of calling this tool repeatedly. Use ONLY when the user asks for totals/averages/median/p95 over a whole period (e.g. 'total plays last month', 'average startup time yesterday', 'p95 rebuffer last week', 'the ad funnel counts last week'). For trends or any 'how did X change over time' / 'show last week' question, use the `query` tool instead — it always renders a chart. Queries resolve against API metric keywords, which can differ from a metric's common name — 'plays', for example, is 'impression_id'. The 'searchMetrics' tool resolves a keyword cheaply; 'getAvailableMetrics' returns the full catalog. Every query needs a licenseKey; `peekAllLicenses` lists the ones available. AD ANALYTICS: ad metrics use 'ad_'-prefixed keywords and are queried against a separate ads dataset. The ad completion funnel is: 'ad_quartile_1' (first quartile / 25%) -> 'ad_midpoint' (50%) -> 'ad_quartile_3' (third quartile / 75%) -> 'ad_completions'. Other ad metrics: 'ad_impressions', 'ad_starts', 'ad_clicks', 'ad_skips', 'ad_startup_time', 'ad_error_percentage', 'ad_error_sessions', 'ad_time_played', 'ad_play_percentage', 'ad_unique_users'. Ad data is present on some licenses and not others; `peekAllLicenses` output shows which. A query covers a single license, so an ad question resolves against one license at a time. With an ad metric, filters and groupBy take the AD-specific attributes from 'searchFilters' / 'getAvailableFilters' (e.g. 'AD_SYSTEM', 'AD_POSITION', 'ADVERTISER_NAME'); playback attributes and ad attributes are not interchangeable.
searchFiltersread-onlyFind the exact filter/group-by attribute keyword for a topic or question (e.g. 'browser', 'device type', 'content tier'). Preferred way to resolve an attribute; use 'licenseKey' to resolve custom namings of attributes; use getAvailableFilters only to list the full static catalog.
searchMetricsread-onlyFind the exact metric keyword for a topic or question (e.g. 'buffering', 'how many errors'). Preferred way to resolve a metric keyword; use getAvailableMetrics only to list the full catalog.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.bitmovin.mcp.analytics/analytics-mcp",
  "title": "Bitmovin Observability MCP",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://analytics.mcp.bitmovin.com",
      "type": "streamable-http",
      "headers": [
        {
          "name": "x-api-key",
          "isRequired": true,
          "description": "authentication key. Found in Account Setting in the Bitmovin Dashboard"
        }
      ]
    },
    {
      "url": "https://analytics.mcp.bitmovin.com",
      "type": "sse",
      "headers": [
        {
          "name": "x-api-key",
          "isRequired": true,
          "description": "authentication key. Found in Account Setting in the Bitmovin Dashboard"
        }
      ]
    }
  ],
  "version": "0.0.1",
  "websiteUrl": "https://bitmovin.com",
  "description": "Query and analyse your data from Bitmovin Observability"
}