browser-compat-mcp-server

Browser compatibility and Baseline status for any web feature — offline, from bundled MDN data.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
100%
Qualität der Benennung
80%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
50%
Einhaltung des Protokolls
100%

Befunde (5)

  • LOWTool 'browsercompat_list_reference' suggests web access but openWorldHint=falsein browsercompat_list_reference
  • LOWTool 'browsercompat_get_feature' suggests web access but openWorldHint=falsein browsercompat_get_feature
  • LOWTool 'browsercompat_check_baseline' suggests web access but openWorldHint=falsein browsercompat_check_baseline
  • LOWTool 'browsercompat_search_features' suggests web access but openWorldHint=falsein browsercompat_search_features
  • LOWTool 'browsercompat_compare_support' suggests web access but openWorldHint=falsein browsercompat_compare_support

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~8,885Tokens (Tool-Definitionen)
~23.3 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (6.94% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "browser-compat-mcp-server": {
      "command": "node",
      "args": [
        "@cyanheads/browser-compat-mcp-server"
      ]
    }
  }
}

Ausführbare Pakete

npm@cyanheads/browser-compat-mcp-server0.2.0streamable-http

Remote-Endpunkte

https://browser-compat.caseyjhand.com/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (5)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢browsercompat_list_reference(topic)

Enumerate the reference vocabulary this server uses: BCD namespaces, BCD browser ids, browserslist agent ids and their BCD counterparts, Baseline states, web-features groups, and ECMAScript snapshots. Use it to build valid inputs for the other tools and to see which target browsers can be evaluated.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "topic": {
      "type": "string",
      "enum": [
        "bcd_namespaces",
        "bcd_browsers",
        "browserslist_agents",
        "baseline_states",
        "groups",
        "snapshots"
      ],
      "description": "Which vocabulary to list: bcd_namespaces for the 12 top-level browser-compat-data namespaces, bcd_browsers for the 17 tracked browsers, browserslist_agents for the 19 browserslist ids mapped to browser-compat-data browsers, baseline_states for the 4 Baseline states, groups for the 104 web-features groups, or snapshots for the 11 ECMAScript snapshots."
    }
  },
  "required": [
    "topic"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "topic": {
      "type": "string",
      "description": "The topic that was listed."
    },
    "entries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier callers pass to the other tools, or filter results by."
          },
          "label": {
            "type": "string",
            "description": "Human-readable name for this entry."
          },
          "detail": {
            "type": "string",
            "description": "One line explaining what the entry covers."
          },
          "count": {
            "description": "How many items the entry covers — compat keys for a namespace or Baseline state.",
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "bcd_browser": {
            "description": "browser-compat-data browser this browserslist agent maps to, or null when none exists.",
            "type": [
              "string",
              "null"
            ]
          },
          "reported": {
            "description": "True when this browser is in the reported set (desktop or mobile). Runtimes are added only by include_runtimes.",
            "type": "boolean"
          },
          "usage_percent": {
            "description": "Share of tracked global traffic attributed to this browserslist agent.",
            "type": "number"
          },
          "maps_from": {
            "description": "Raw web-features status.baseline value this reported state maps from; null for not_mapped, which has none.",
            "anyOf": [
              {
                "type": "string",
                "const": "high"
              },
              {
                "type": "string",
                "const": "low"
              },
              {
                "type": "boolean",
                "const": false
              },
              {
                "type": "null",
                "const": null
              }
            ]
          },
          "spec_url": {
            "description": "Specification URL for this ECMAScript snapshot.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "label",
          "detail"
        ],
        "additionalProperties": false,
        "description": "One vocabulary entry."
      },
      "description": "Every entry in the requested vocabulary."
    },
    "data_version": {
      "type": "object",
      "properties": {
        "bcd": {
          "type": "string",
          "description": "Version of the bundled @mdn/browser-compat-data snapshot."
        },
        "bcd_generated": {
          "type": "string",
          "description": "ISO 8601 timestamp the browser-compat-data snapshot was generated at."
        },
        "web_features": {
          "type": "string",
          "description": "Version of the bundled web-features snapshot."
        },
        "caniuse_lite": {
          "type": "string",
          "description": "Version of the bundled caniuse-lite snapshot."
        },
        "browserslist": {
          "type": "string",
          "description": "Version of the bundled browserslist query resolver."
        }
      },
      "required": [
        "bcd",
        "bcd_generated",
        "web_features",
        "caniuse_lite",
        "browserslist"
      ],
      "additionalProperties": false,
      "description": "Vintage of each bundled dataset behind this answer."
    },
    "attribution": {
      "description": "Required attribution for the caniuse-derived usage figures in this response.",
      "type": "string"
    },
    "error": {
      "description": "Present when the call failed. Absent on success.",
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "description": "Machine-readable failure mode."
            },
            "recovery": {
              "description": "Actionable next step for the caller.",
              "type": "object",
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "required": [
                "hint"
              ],
              "additionalProperties": {}
            },
            "retryable": {
              "description": "Whether retrying may succeed.",
              "type": "boolean"
            }
          },
          "additionalProperties": {}
        }
      },
      "required": [
        "code",
        "message"
      ],
      "additionalProperties": {}
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "topic",
        "entries",
        "data_version"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ]
}
🟢browsercompat_get_feature(feature, resolve, include_runtimes)

Get the compatibility record for one web feature: Baseline state and the date it crossed, deprecation and standards status, per-browser version added and removed with flags, vendor prefixes and partial-implementation notes, and the MDN and specification links. Accepts a BCD key such as css.selectors.has or a web-features id such as has; the response echoes which one it matched. An unresolved feature returns found: false with guidance rather than an error.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "feature": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "A browser-compat-data key such as css.selectors.has, or a web-features id such as has, 1 to 200 characters. An empty or longer string is rejected against this schema; a whitespace-only string returns invalid_feature_input. Call browsercompat_search_features first if you do not already know the key."
    },
    "resolve": {
      "default": false,
      "description": "When true, a string that is neither a key nor an id falls back to the search index, such as \"Container queries\" or \"Element.prototype.animate\". Its best exact matches are accepted only when they name one feature: a single key resolves to that key, several keys of one web-features feature resolve to the feature with compat_keys, and matches spanning two features are a miss. Off by default so a typo returns a miss you can correct rather than a confident answer about the wrong feature.",
      "type": "boolean"
    },
    "include_runtimes": {
      "default": false,
      "description": "Add the bun, deno, nodejs, and oculus rows to support. Leave off for browser ship decisions.",
      "type": "boolean"
    }
  },
  "required": [
    "feature"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "found": {
      "type": "boolean",
      "description": "True when the feature string resolved to a tracked entry."
    },
    "outcome": {
      "type": "string",
      "enum": [
        "found",
        "no_compat_data",
        "miss"
      ],
      "description": "found when per-feature data was returned, no_compat_data when the entry is tracked but owns no browser-compat-data keys, miss when nothing matched."
    },
    "resolved_as": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "input": {
              "type": "string",
              "description": "The feature string as the caller sent it, trimmed."
            },
            "bcd_key": {
              "description": "The single browser-compat-data key this resolved to, or null when the web-features id spans more than one key.",
              "type": [
                "string",
                "null"
              ]
            },
            "baseline_id": {
              "description": "The web-features id this resolved to, or null when no web-features entry covers the key.",
              "type": [
                "string",
                "null"
              ]
            },
            "resolved_via": {
              "type": "string",
              "enum": [
                "bcd_key",
                "web_features_id",
                "web_features_id_normalized",
                "redirect",
                "search"
              ],
              "description": "Which step of the resolution order matched: bcd_key or web_features_id for an exact match, web_features_id_normalized when it matched only after lowercasing, redirect when the input pointed to a browser-compat-data entry that has moved or split, or search when resolve was true and the best exact matches in the search index all named one feature or key — treat a search match as a best guess, not a confirmed key."
            }
          },
          "required": [
            "input",
            "bcd_key",
            "baseline_id",
            "resolved_via"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "How the feature string was matched, or null on a miss."
    },
    "name": {
      "description": "web-features display name for the feature.",
      "type": "string"
    },
    "description": {
      "description": "web-features description, or the browser-compat-data description with tags stripped.",
      "type": "string"
    },
    "baseline": {
      "description": "Baseline state for the resolved key, or the feature rollup when a web-features id resolved to more than one key.",
      "type": "object",
      "properties": {
        "state": {
          "type": "string",
          "enum": [
            "widely",
            "newly",
            "limited",
            "not_mapped"
          ],
          "description": "widely and newly are Baseline availability, limited means not yet in every core browser, not_mapped means the key sits outside the web-features mapping."
        },
        "since_date": {
          "description": "Date the feature became newly available, verbatim from web-features — may carry a ≤ prefix.",
          "type": "string"
        },
        "high_date": {
          "description": "Date the feature became widely available, verbatim from web-features — may carry a ≤ prefix.",
          "type": "string"
        },
        "date_is_upper_bound": {
          "description": "True when a date above is ≤-prefixed, so it is an upper bound rather than exact.",
          "type": "boolean"
        }
      },
      "required": [
        "state"
      ],
      "additionalProperties": false
    },
    "status": {
      "description": "Standards status for the resolved key. Absent for webextensions keys, which record none, and when the id spans more than one key.",
      "type": "object",
      "properties": {
        "deprecated": {
          "type": "boolean",
          "description": "True when browser-compat-data marks the feature deprecated."
        },
        "experimental": {
          "type": "boolean",
          "description": "True when browser-compat-data marks the feature experimental."
        },
        "standard_track": {
          "type": "boolean",
          "description": "True when the feature is part of an active specification process."
        },
        "discouraged": {
          "description": "Present when web-features records that the feature is discouraged.",
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "description": "Why the feature is discouraged, as web-features states it."
            },
            "according_to": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "URLs of the bodies that discourage the feature."
            }
          },
          "required": [
            "reason",
            "according_to"
          ],
          "additionalProperties": false
        }
      },
      "required": [
        "deprecated",
        "experimental",
        "standard_track"
      ],
      "additionalProperties": false
    },
    "limiting_browser": {
      "description": "Among the Baseline core browsers, the one requiring the newest release. Absent until every core browser has shipped a resolvable version.",
      "type": "object",
      "properties": {
        "browser_id": {
          "type": "string",
          "description": "browser-compat-data browser id."
        },
        "name": {
          "type": "string",
          "description": "Human-readable browser name."
        },
        "version": {
          "type": "string",
          "description": "Release of that browser the feature requires."
        }
      },
      "required": [
        "browser_id",
        "name",
        "version"
      ],
      "additionalProperties": false
    },
    "support": {
      "description": "One row per reported browser. Absent when the id spans more than one browser-compat-data key.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "browser_id": {
            "type": "string",
            "description": "browser-compat-data browser id."
          },
          "browser_name": {
            "type": "string",
            "description": "Human-readable browser name."
          },
          "verdict": {
            "type": "string",
            "enum": [
              "supported",
              "partial",
              "prefixed",
              "flagged",
              "removed",
              "unsupported",
              "preview_only",
              "unknown"
            ],
            "description": "supported means full support with no flags, prefix, or partial implementation; partial means the implementation does not meet the mandatory specified behavior; prefixed means it ships under a vendor prefix or an entirely different name; flagged means it only works behind a preference or runtime flag; removed means it shipped and was later removed; unsupported means it was never added; preview_only means it only works in a preview channel; unknown means the browser is absent from the data or support predates a ≤ bound — unknown never means unsupported."
          },
          "version_added": {
            "description": "Release that added support.",
            "type": "string"
          },
          "version_added_is_upper_bound": {
            "description": "True when the data says support arrived at or before version_added, not exactly at it.",
            "type": "boolean"
          },
          "version_removed": {
            "description": "Release that removed support.",
            "type": "string"
          },
          "version_last": {
            "description": "Last release that still supported the feature.",
            "type": "string"
          },
          "partial": {
            "description": "True when the implementation does not meet the mandatory specified behavior.",
            "type": "boolean"
          },
          "prefix": {
            "description": "Vendor prefix the feature ships under.",
            "type": "string"
          },
          "alternative_name": {
            "description": "Entirely different name the feature is implemented under.",
            "type": "string"
          },
          "flags": {
            "description": "Flags gating support in this browser.",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Name of the flag or preference to configure."
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "preference",
                    "runtime_flag"
                  ],
                  "description": "Whether the gate is a user preference or a runtime flag."
                },
                "value_to_set": {
                  "description": "Value the flag must be set to.",
                  "type": "string"
                }
              },
              "required": [
                "name",
                "type"
              ],
              "additionalProperties": false,
              "description": "A flag that must be configured for support."
            }
          },
          "notes": {
            "description": "Notes from browser-compat-data about this support, always an array.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "impl_url": {
            "description": "Links to bugs or issues tracking the implementation, always an array.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "browser_id",
          "browser_name",
          "verdict"
        ],
        "additionalProperties": false,
        "description": "Support for one reported browser."
      }
    },
    "mdn_url": {
      "description": "MDN reference page for the resolved key.",
      "type": "string"
    },
    "spec_urls": {
      "description": "Specification URLs for the resolved key, always an array.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "compat_keys": {
      "description": "Present when the web-features id spans more than one browser-compat-data key. Call this tool again with one of them for the per-browser fields.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "guidance": {
      "description": "What to do next on a miss or with no compat data.",
      "type": "string"
    },
    "data_version": {
      "type": "object",
      "properties": {
        "bcd": {
          "type": "string",
          "description": "Version of the bundled @mdn/browser-compat-data snapshot."
        },
        "bcd_generated": {
          "type": "string",
          "description": "ISO 8601 timestamp the browser-compat-data snapshot was generated at."
        },
        "web_features": {
          "type": "string",
          "description": "Version of the bundled web-features snapshot."
        },
        "caniuse_lite": {
          "type": "string",
          "description": "Version of the bundled caniuse-lite snapshot."
        },
        "browserslist": {
          "type": "string",
          "description": "Version of the bundled browserslist query resolver."
        }
      },
      "required": [
        "bcd",
        "bcd_generated",
        "web_features",
        "caniuse_lite",
        "browserslist"
      ],
      "additionalProperties": false,
      "description": "Vintage of each bundled dataset behind this answer."
    },
    "baselineNotMapped": {
      "description": "Explains why a resolved key carries no Baseline state.",
      "type": "string"
    },
    "runtimesExcluded": {
      "description": "Notes that the feature carries server-runtime or XR data that was left out.",
      "type": "string"
    },
    "error": {
      "description": "Present when the call failed. Absent on success.",
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "description": "Machine-readable failure mode. Declared by this tool: `invalid_feature_input`: feature is whitespace-only. An empty or over-200-character string is rejected against the input schema instead. Other values are possible when a failure originates below the handler.",
              "examples": [
                "invalid_feature_input"
              ]
            },
            "recovery": {
              "description": "Actionable next step for the caller.",
              "type": "object",
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "required": [
                "hint"
              ],
              "additionalProperties": {}
            },
            "retryable": {
              "description": "Whether retrying may succeed.",
              "type": "boolean"
            }
          },
          "additionalProperties": {}
        }
      },
      "required": [
        "code",
        "message"
      ],
      "additionalProperties": {}
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "found",
        "outcome",
        "resolved_as",
        "data_version"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ]
}
🟢browsercompat_check_baseline(features, resolve)

Check whether web features are safe to ship: Baseline state and the date it crossed, the browser and version that limits support, whether the feature is deprecated or discouraged, and the share of tracked global traffic that requiring it would exclude. Accepts up to 20 BCD keys or web-features ids in one call.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "features": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "description": "Up to 20 entries, each a browser-compat-data key such as css.selectors.has or a web-features id such as has, 1 to 200 characters. An empty or longer entry is rejected against this schema; a whitespace-only entry returns invalid_feature_input. Call browsercompat_search_features first for any entry whose key you do not already know."
    },
    "resolve": {
      "default": false,
      "description": "When true, an entry that is neither a key nor an id falls back to the search index, such as \"Container queries\" or \"Element.prototype.animate\". Its best exact matches are accepted only when they name one feature: a single key resolves to that key, several keys of one web-features feature resolve to the feature with its feature-level Baseline and compat_keys, and matches spanning two features are a miss. Off by default so a typo returns a miss you can correct.",
      "type": "boolean"
    }
  },
  "required": [
    "features"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "input": {
            "type": "string",
            "description": "The feature string as the caller sent it."
          },
          "found": {
            "type": "boolean",
            "description": "True when the feature string resolved to a tracked entry."
          },
          "outcome": {
            "type": "string",
            "enum": [
              "found",
              "no_compat_data",
              "miss"
            ],
            "description": "found when Baseline data was returned, no_compat_data when the entry owns no browser-compat-data keys, miss when nothing matched."
          },
          "resolved_as": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "input": {
                    "type": "string",
                    "description": "The feature string as the caller sent it, trimmed."
                  },
                  "bcd_key": {
                    "description": "The single browser-compat-data key this resolved to, or null when the web-features id spans more than one key.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "baseline_id": {
                    "description": "The web-features id this resolved to, or null when no web-features entry covers the key.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "resolved_via": {
                    "type": "string",
                    "enum": [
                      "bcd_key",
                      "web_features_id",
                      "web_features_id_normalized",
                      "redirect",
                      "search"
                    ],
                    "description": "Which step of the resolution order matched: bcd_key or web_features_id for an exact match, web_features_id_normalized when it matched only after lowercasing, redirect when the input pointed to a browser-compat-data entry that has moved or split, or search when resolve was true and the best exact matches in the search index all named one feature or key — treat a search match as a best guess, not a confirmed key."
                  }
                },
                "required": [
                  "input",
                  "bcd_key",
                  "baseline_id",
                  "resolved_via"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "How the feature string was matched, or null on a miss."
          },
          "name": {
            "description": "web-features display name for the feature.",
            "type": "string"
          },
          "baseline": {
            "description": "Baseline state and the dates it crossed.",
            "type": "object",
            "properties": {
              "state": {
                "type": "string",
                "enum": [
                  "widely",
                  "newly",
                  "limited",
                  "not_mapped"
                ],
                "description": "widely and newly are Baseline availability, limited means not yet in every core browser, not_mapped means the key sits outside the web-features mapping."
              },
              "since_date": {
                "description": "Date the feature became newly available, verbatim from web-features — may carry a ≤ prefix.",
                "type": "string"
              },
              "high_date": {
                "description": "Date the feature became widely available, verbatim from web-features — may carry a ≤ prefix.",
                "type": "string"
              },
              "date_is_upper_bound": {
                "description": "True when a date above is ≤-prefixed, so it is an upper bound rather than exact.",
                "type": "boolean"
              }
            },
            "required": [
              "state"
            ],
            "additionalProperties": false
          },
          "limiting_browser": {
            "description": "Among the Baseline core browsers, the one requiring the newest release.",
            "type": "object",
            "properties": {
              "browser_id": {
                "type": "string",
                "description": "browser-compat-data browser id."
              },
              "name": {
                "type": "string",
                "description": "Human-readable browser name."
              },
              "version": {
                "type": "string",
                "description": "Release of that browser the feature requires."
              }
            },
            "required": [
              "browser_id",
              "name",
              "version"
            ],
            "additionalProperties": false
          },
          "deprecated": {
            "description": "True when browser-compat-data marks the key deprecated. Absent for keys that record no status and for ids spanning more than one key.",
            "type": "boolean"
          },
          "experimental": {
            "description": "True when browser-compat-data marks the key experimental. Absent under the same conditions as deprecated.",
            "type": "boolean"
          },
          "discouraged": {
            "description": "Present when web-features records that the feature is discouraged.",
            "type": "object",
            "properties": {
              "reason": {
                "type": "string",
                "description": "Why the feature is discouraged, as web-features states it."
              },
              "according_to": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "URLs of the bodies that discourage the feature."
              }
            },
            "required": [
              "reason",
              "according_to"
            ],
            "additionalProperties": false
          },
          "usage_percent_excluded": {
            "description": "Share of tracked global traffic that requiring this feature would exclude. Absent when the feature reaches no caniuse id — never zero in that case.",
            "type": "number"
          },
          "usage_source": {
            "description": "What usage_percent_excluded is a share of. Present whenever that figure is.",
            "type": "string"
          },
          "compat_keys": {
            "description": "Present when the web-features id spans more than one browser-compat-data key. Call browsercompat_get_feature with one of them for per-browser data.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "guidance": {
            "description": "What to do next when the feature did not resolve.",
            "type": "string"
          }
        },
        "required": [
          "input",
          "found",
          "outcome",
          "resolved_as"
        ],
        "additionalProperties": false,
        "description": "One result per input entry, in input order."
      },
      "description": "One result per requested feature. A miss is a result, not a failure."
    },
    "all_widely_available": {
      "type": "boolean",
      "description": "True only when every entry resolved and reports Baseline widely. A single miss forces false. Deprecation and discouragement do not enter this answer."
    },
    "data_version": {
      "type": "object",
      "properties": {
        "bcd": {
          "type": "string",
          "description": "Version of the bundled @mdn/browser-compat-data snapshot."
        },
        "bcd_generated": {
          "type": "string",
          "description": "ISO 8601 timestamp the browser-compat-data snapshot was generated at."
        },
        "web_features": {
          "type": "string",
          "description": "Version of the bundled web-features snapshot."
        },
        "caniuse_lite": {
          "type": "string",
          "description": "Version of the bundled caniuse-lite snapshot."
        },
        "browserslist": {
          "type": "string",
          "description": "Version of the bundled browserslist query resolver."
        }
      },
      "required": [
        "bcd",
        "bcd_generated",
        "web_features",
        "caniuse_lite",
        "browserslist"
      ],
      "additionalProperties": false,
      "description": "Vintage of each bundled dataset behind this answer."
    },
    "totalCount": {
      "type": "number",
      "description": "Number of results returned."
    },
    "attribution": {
      "description": "Required attribution for the caniuse-derived usage figures in this response.",
      "type": "string"
    },
    "unresolvedNotice": {
      "description": "Names the entries that did not resolve and how to find the right key.",
      "type": "string"
    },
    "error": {
      "description": "Present when the call failed. Absent on success.",
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "description": "Machine-readable failure mode. Declared by this tool: `invalid_feature_input`: An entry in features is whitespace-only. An empty or over-200-character entry is rejected against the input schema instead. Other values are possible when a failure originates below the handler.",
              "examples": [
                "invalid_feature_input"
              ]
            },
            "recovery": {
              "description": "Actionable next step for the caller.",
              "type": "object",
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "required": [
                "hint"
              ],
              "additionalProperties": {}
            },
            "retryable": {
              "description": "Whether retrying may succeed.",
              "type": "boolean"
            }
          },
          "additionalProperties": {}
        }
      },
      "required": [
        "code",
        "message"
      ],
      "additionalProperties": {}
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "results",
        "all_widely_available",
        "data_version",
        "totalCount"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ]
}
🟢browsercompat_search_features(query, namespace, baseline, group, snapshot, ...)

Find web features by plain name or keyword when the canonical key is unknown, across CSS, JavaScript, HTML, Web APIs, SVG, MathML, WebAssembly, and HTTP headers. Returns ranked matches with the BCD key, the web-features id, the Baseline state, a one-line support summary, and which field matched. Feed a result key into browsercompat_get_feature for the full record.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Plain-language name, keyword, or code notation, for example \"container query\", \"fromAsync\", \"Array.prototype.at\", \"display: grid\", or \"<dialog>\"."
    },
    "namespace": {
      "description": "Restrict results to one top-level browser-compat-data namespace.",
      "type": "string",
      "enum": [
        "api",
        "css",
        "html",
        "http",
        "javascript",
        "manifests",
        "mathml",
        "mediatypes",
        "svg",
        "webassembly",
        "webdriver",
        "webextensions"
      ]
    },
    "baseline": {
      "description": "Restrict results to one Baseline state.",
      "type": "string",
      "enum": [
        "widely",
        "newly",
        "limited",
        "not_mapped"
      ]
    },
    "group": {
      "description": "Restrict results to features in one web-features group or any group nested under it, for example \"selectors\" or \"css\". Keys with no web-features mapping never match. Call browsercompat_list_reference with topic groups for valid ids.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "snapshot": {
      "description": "Restrict results to features in one ECMAScript snapshot, for example \"ecmascript-2023\". Call browsercompat_list_reference with topic snapshots for valid ids.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "limit": {
      "default": 10,
      "description": "Maximum results to return, from 1 to 50.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "offset": {
      "default": 0,
      "description": "Number of ranked matches to skip before returning results, for paging past limit. Pass the nextOffset from the previous response.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "bcd_key": {
            "description": "browser-compat-data key. Absent for entries that own no compat keys.",
            "type": "string"
          },
          "baseline_id": {
            "description": "web-features id covering this entry.",
            "type": "string"
          },
          "name": {
            "description": "web-features display name.",
            "type": "string"
          },
          "description": {
            "description": "One-line description of the feature.",
            "type": "string"
          },
          "baseline_state": {
            "type": "string",
            "enum": [
              "widely",
              "newly",
              "limited",
              "not_mapped"
            ],
            "description": "Baseline state for this entry, reported per browser-compat-data key."
          },
          "matched_on": {
            "type": "string",
            "enum": [
              "bcd_key",
              "baseline_id",
              "name",
              "caniuse_title",
              "path_suffix",
              "path_segment",
              "description",
              "path_tokens"
            ],
            "description": "Which field matched the query, so the ranking can be inspected. path_suffix means the key ends in the dotted or property-value notation the query used, such as Element.animate or display: grid."
          },
          "support_summary": {
            "type": "string",
            "description": "One line over the Baseline core browsers, with — for unsupported and ? for unknown."
          },
          "mdn_url": {
            "description": "MDN reference page for this key.",
            "type": "string"
          }
        },
        "required": [
          "baseline_state",
          "matched_on",
          "support_summary"
        ],
        "additionalProperties": false,
        "description": "One ranked match."
      },
      "description": "Ranked matches, best first. An empty array is a successful search with no hits."
    },
    "data_version": {
      "type": "object",
      "properties": {
        "bcd": {
          "type": "string",
          "description": "Version of the bundled @mdn/browser-compat-data snapshot."
        },
        "bcd_generated": {
          "type": "string",
          "description": "ISO 8601 timestamp the browser-compat-data snapshot was generated at."
        },
        "web_features": {
          "type": "string",
          "description": "Version of the bundled web-features snapshot."
        },
        "caniuse_lite": {
          "type": "string",
          "description": "Version of the bundled caniuse-lite snapshot."
        },
        "browserslist": {
          "type": "string",
          "description": "Version of the bundled browserslist query resolver."
        }
      },
      "required": [
        "bcd",
        "bcd_generated",
        "web_features",
        "caniuse_lite",
        "browserslist"
      ],
      "additionalProperties": false,
      "description": "Vintage of each bundled dataset behind this answer."
    },
    "totalCount": {
      "type": "number",
      "description": "Matches across every page, before offset and limit apply."
    },
    "truncated": {
      "description": "True when more matches remain past this page.",
      "type": "boolean"
    },
    "shown": {
      "description": "Number of results on this page.",
      "type": "number"
    },
    "cap": {
      "description": "The limit that was applied.",
      "type": "number"
    },
    "nextOffset": {
      "description": "The offset of the next page. Present only while matches remain past this page.",
      "type": "number"
    },
    "appliedFilters": {
      "description": "Filters the server applied to this search.",
      "type": "object",
      "properties": {
        "namespace": {
          "description": "Namespace filter the search applied.",
          "type": "string"
        },
        "baseline": {
          "description": "Baseline filter the search applied.",
          "type": "string"
        },
        "group": {
          "description": "web-features group filter the search applied, nested groups included.",
          "type": "string"
        },
        "snapshot": {
          "description": "ECMAScript snapshot filter the search applied.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "noMatchNotice": {
      "description": "How to broaden a search that matched nothing.",
      "type": "string"
    },
    "offsetNotice": {
      "description": "Why a page came back empty although the search matched.",
      "type": "string"
    },
    "error": {
      "description": "Present when the call failed. Absent on success.",
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "description": "Machine-readable failure mode. Declared by this tool: `invalid_query`: query is whitespace-only after normalization, or normalizes to zero tokens. `unknown_group`: group names no web-features group in the bundled data. `unknown_snapshot`: snapshot names no ECMAScript snapshot in the bundled data. Other values are possible when a failure originates below the handler.",
              "examples": [
                "invalid_query",
                "unknown_group",
                "unknown_snapshot"
              ]
            },
            "recovery": {
              "description": "Actionable next step for the caller.",
              "type": "object",
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "required": [
                "hint"
              ],
              "additionalProperties": {}
            },
            "retryable": {
              "description": "Whether retrying may succeed.",
              "type": "boolean"
            }
          },
          "additionalProperties": {}
        }
      },
      "required": [
        "code",
        "message"
      ],
      "additionalProperties": {}
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "results",
        "data_version",
        "totalCount"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ]
}
🟢browsercompat_compare_support(features, targets, resolve)

Compute whether a set of web features clears an explicit browserslist target query. Returns a per-feature verdict, the target browser and version that fails, the share of tracked traffic the targets cover, and unchecked_targets for every resolved target browser with no compatibility data. A feature is never reported as clearing a target the server could not evaluate.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "features": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "description": "Up to 20 entries, each a browser-compat-data key such as css.selectors.has or a web-features id such as has, 1 to 200 characters. An empty or longer entry is rejected against this schema; a whitespace-only entry returns invalid_feature_input. Call browsercompat_search_features first for any entry whose key you do not already know."
    },
    "targets": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "A browserslist query, for example \"defaults\" or \"> 0.5%, last 2 versions\", 1 to 500 characters. Required: with no query browserslist would read config from the process working directory rather than from your project."
    },
    "resolve": {
      "default": false,
      "description": "When true, an entry that is neither a key nor an id falls back to the search index, such as \"Container queries\" or \"Element.prototype.animate\". Its best exact matches are accepted only when they name one feature: a single key resolves to that key and gets a verdict, several keys of one web-features feature resolve to the feature as verdict ambiguous with compat_keys, and matches spanning two features are a miss. Off by default so a typo returns a miss you can correct rather than a confident answer about the wrong feature.",
      "type": "boolean"
    }
  },
  "required": [
    "features",
    "targets"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "query_echo": {
      "type": "string",
      "description": "The targets query as the server parsed it."
    },
    "targets_resolved": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "agent": {
            "type": "string",
            "description": "browserslist agent id."
          },
          "version_token": {
            "type": "string",
            "description": "Version token browserslist produced for that agent."
          },
          "bcd_browser": {
            "type": "string",
            "description": "browser-compat-data browser the agent maps to."
          },
          "bcd_version": {
            "description": "browser-compat-data release the token mapped to, or null when it predates them all.",
            "type": [
              "string",
              "null"
            ]
          },
          "bcd_release_index": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991,
            "description": "Release ordinal used for comparison; -1 when the token predates every release."
          }
        },
        "required": [
          "agent",
          "version_token",
          "bcd_browser",
          "bcd_version",
          "bcd_release_index"
        ],
        "additionalProperties": false,
        "description": "A target that mapped onto a concrete release."
      },
      "description": "Every browserslist token that was evaluated."
    },
    "unchecked_targets": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "agent": {
            "type": "string",
            "description": "browserslist agent id."
          },
          "version_token": {
            "type": "string",
            "description": "Version token browserslist produced for that agent."
          },
          "reason": {
            "type": "string",
            "enum": [
              "no_bcd_browser",
              "unknown_version",
              "no_bcd_data"
            ],
            "description": "no_bcd_browser when the agent has no counterpart, unknown_version when the token maps to no release, no_bcd_data when a feature records nothing for that browser."
          },
          "usage_percent": {
            "type": "number",
            "description": "Share of tracked global traffic this target covers."
          }
        },
        "required": [
          "agent",
          "version_token",
          "reason",
          "usage_percent"
        ],
        "additionalProperties": false,
        "description": "A target that was not evaluated."
      },
      "description": "Every target the server declined to claim a verdict for, with the reason."
    },
    "target_coverage_percent": {
      "type": "number",
      "description": "Share of tracked global traffic the evaluated targets cover."
    },
    "unchecked_coverage_percent": {
      "type": "number",
      "description": "Share of tracked global traffic the unevaluated targets cover."
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "input": {
            "type": "string",
            "description": "The feature string as the caller sent it."
          },
          "found": {
            "type": "boolean",
            "description": "True when the feature string resolved to a tracked entry."
          },
          "resolved_as": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "input": {
                    "type": "string",
                    "description": "The feature string as the caller sent it, trimmed."
                  },
                  "bcd_key": {
                    "description": "The single browser-compat-data key this resolved to, or null when the web-features id spans more than one key.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "baseline_id": {
                    "description": "The web-features id this resolved to, or null when no web-features entry covers the key.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "resolved_via": {
                    "type": "string",
                    "enum": [
                      "bcd_key",
                      "web_features_id",
                      "web_features_id_normalized",
                      "redirect",
                      "search"
                    ],
                    "description": "Which step of the resolution order matched: bcd_key or web_features_id for an exact match, web_features_id_normalized when it matched only after lowercasing, redirect when the input pointed to a browser-compat-data entry that has moved or split, or search when resolve was true and the best exact matches in the search index all named one feature or key — treat a search match as a best guess, not a confirmed key."
                  }
                },
                "required": [
                  "input",
                  "bcd_key",
                  "baseline_id",
                  "resolved_via"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "How the feature string was matched, or null on a miss."
          },
          "name": {
            "description": "web-features display name for the feature.",
            "type": "string"
          },
          "verdict": {
            "type": "string",
            "enum": [
              "clears",
              "fails",
              "inconclusive",
              "miss",
              "ambiguous"
            ],
            "description": "clears only when every resolved target is supported; inconclusive when a target could not be evaluated, including when no target resolved at all; ambiguous when the id spans more than one compat key."
          },
          "failing_targets": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "agent": {
                  "type": "string",
                  "description": "browserslist agent id the target came from."
                },
                "version_token": {
                  "type": "string",
                  "description": "Version token browserslist produced for that agent."
                },
                "bcd_browser": {
                  "type": "string",
                  "description": "browser-compat-data browser the agent maps to."
                },
                "bcd_version": {
                  "description": "browser-compat-data release the token mapped to, or null when it predates them all.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "verdict": {
                  "type": "string",
                  "enum": [
                    "partial",
                    "prefixed",
                    "flagged",
                    "removed",
                    "unsupported",
                    "preview_only"
                  ],
                  "description": "Why this target failed: partial means the implementation does not meet the mandatory specified behavior, prefixed means it only ships under a vendor prefix or a different name, flagged means it only works behind a preference or runtime flag, removed means it shipped and was later removed before this target version, unsupported means it was never added, preview_only means it only works in a preview channel."
                }
              },
              "required": [
                "agent",
                "version_token",
                "bcd_browser",
                "bcd_version",
                "verdict"
              ],
              "additionalProperties": false,
              "description": "A target this feature does not clear."
            },
            "description": "Every resolved target that failed, with the verdict that caused it."
          },
          "compat_keys": {
            "description": "Present on an ambiguous verdict — the browser-compat-data keys the feature owns. Re-run with one of them.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "guidance": {
            "description": "What to do next on a miss or an ambiguous verdict.",
            "type": "string"
          }
        },
        "required": [
          "input",
          "found",
          "resolved_as",
          "verdict",
          "failing_targets"
        ],
        "additionalProperties": false,
        "description": "One result per input entry, in input order."
      },
      "description": "Per-feature verdicts against the resolved targets."
    },
    "all_clear": {
      "type": "boolean",
      "description": "True only when every feature clears and unchecked_targets is empty."
    },
    "data_version": {
      "type": "object",
      "properties": {
        "bcd": {
          "type": "string",
          "description": "Version of the bundled @mdn/browser-compat-data snapshot."
        },
        "bcd_generated": {
          "type": "string",
          "description": "ISO 8601 timestamp the browser-compat-data snapshot was generated at."
        },
        "web_features": {
          "type": "string",
          "description": "Version of the bundled web-features snapshot."
        },
        "caniuse_lite": {
          "type": "string",
          "description": "Version of the bundled caniuse-lite snapshot."
        },
        "browserslist": {
          "type": "string",
          "description": "Version of the bundled browserslist query resolver."
        }
      },
      "required": [
        "bcd",
        "bcd_generated",
        "web_features",
        "caniuse_lite",
        "browserslist"
      ],
      "additionalProperties": false,
      "description": "Vintage of each bundled dataset behind this answer."
    },
    "totalCount": {
      "type": "number",
      "description": "Number of feature results returned."
    },
    "attribution": {
      "type": "string",
      "description": "Required attribution for the caniuse-derived coverage figures in this response."
    },
    "uncheckedNotice": {
      "description": "Names the target agents that were not evaluated and their combined usage share.",
      "type": "string"
    },
    "error": {
      "description": "Present when the call failed. Absent on success.",
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991,
          "description": "JSON-RPC error code for this failure."
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of what went wrong."
        },
        "data": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "description": "Machine-readable failure mode. Declared by this tool: `invalid_target_query`: browserslist rejected the targets query. `no_targets_resolved`: The query matched no browser versions at all, or only agents with no browser-compat-data counterpart. A mapped agent whose version token does not resolve is reported in unchecked_targets instead. `invalid_feature_input`: An entry in features is whitespace-only. An empty or over-200-character entry is rejected against the input schema instead. Other values are possible when a failure originates below the handler.",
              "examples": [
                "invalid_target_query",
                "no_targets_resolved",
                "invalid_feature_input"
              ]
            },
            "recovery": {
              "description": "Actionable next step for the caller.",
              "type": "object",
              "properties": {
                "hint": {
                  "type": "string"
                }
              },
              "required": [
                "hint"
              ],
              "additionalProperties": {}
            },
            "retryable": {
              "description": "Whether retrying may succeed.",
              "type": "boolean"
            }
          },
          "additionalProperties": {}
        }
      },
      "required": [
        "code",
        "message"
      ],
      "additionalProperties": {}
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "anyOf": [
    {
      "not": {
        "required": [
          "error"
        ]
      },
      "required": [
        "query_echo",
        "targets_resolved",
        "unchecked_targets",
        "target_coverage_percent",
        "unchecked_coverage_percent",
        "results",
        "all_clear",
        "data_version",
        "totalCount",
        "attribution"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ]
}

Empfohlene Prompts

search_research
Search for information about [topic] using browser-compat-mcp-server
Erwartete Tools: browsercompat_search_features
find_specific
Find [specific item] using browser-compat-mcp-server
Erwartete Tools: browsercompat_search_features
retrieve_data
Get details about [item] from browser-compat-mcp-server
Erwartete Tools: browsercompat_get_feature
fetch_info
Fetch [information type] using browser-compat-mcp-server
Erwartete Tools: browsercompat_get_feature
list_items
List all [items] available in browser-compat-mcp-server
Erwartete Tools: browsercompat_list_reference

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet5 Tools
verifiziertVersion nicht aufgezeichnet5 Tools