browser-compat-mcp-server

v0.1.3 pre-1.0

Browser compatibility and Baseline status for any web feature — offline, from MDN's browser-compat-data, web-features, and caniuse. STDIO or Streamable HTTP.

browser-compat.caseyjhand.com/mcp
claude mcp add --transport http browser-compat-mcp-server https://browser-compat.caseyjhand.com/mcp
codex mcp add browser-compat-mcp-server --url https://browser-compat.caseyjhand.com/mcp
{
  "mcpServers": {
    "browser-compat-mcp-server": {
      "url": "https://browser-compat.caseyjhand.com/mcp"
    }
  }
}
gemini mcp add --transport http browser-compat-mcp-server https://browser-compat.caseyjhand.com/mcp
{
  "mcpServers": {
    "browser-compat-mcp-server": {
      "command": "bunx",
      "args": [
        "mcp-remote",
        "https://browser-compat.caseyjhand.com/mcp"
      ]
    }
  }
}
{
  "mcpServers": {
    "browser-compat-mcp-server": {
      "type": "http",
      "url": "https://browser-compat.caseyjhand.com/mcp"
    }
  }
}
curl -X POST https://browser-compat.caseyjhand.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1.0.0"}}}'

Tools

5

browsercompat_list_reference

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.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "browsercompat_list_reference",
    "arguments": {
      "topic": "<topic>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/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 103 web-features groups, or snapshots for the 11 ECMAScript snapshots."
    }
  },
  "required": [
    "topic"
  ],
  "additionalProperties": false
}
view source ↗

browsercompat_get_feature

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.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "browsercompat_get_feature",
    "arguments": {
      "feature": "<feature>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/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, fall back to the search index and accept its single unambiguous top hit. 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",
    "resolve",
    "include_runtimes"
  ],
  "additionalProperties": false
}
view source ↗

browsercompat_check_baseline

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.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "browsercompat_check_baseline",
    "arguments": {
      "features": "<features>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/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, fall back to the search index and accept its single unambiguous top hit for each entry. Off by default so a typo returns a miss you can correct.",
      "type": "boolean"
    }
  },
  "required": [
    "features",
    "resolve"
  ],
  "additionalProperties": false
}
view source ↗

browsercompat_search_features

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.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "browsercompat_search_features",
    "arguments": {
      "query": "<query>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Plain-language name or keyword, for example \"container query\" or \"fromAsync\"."
    },
    "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"
      ]
    },
    "limit": {
      "default": 10,
      "description": "Maximum results to return, from 1 to 50.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "query",
    "limit"
  ],
  "additionalProperties": false
}
view source ↗

browsercompat_compare_support

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.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "browsercompat_compare_support",
    "arguments": {
      "features": "<features>",
      "targets": "<targets>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/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, fall back to the search index and accept its single unambiguous top hit for each entry. 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",
    "resolve"
  ],
  "additionalProperties": false
}
view source ↗