Browser compatibility lookup and browserslist checks via caniuse-mcp — CSS Grid, WebP, :has(), dialog, WebAssembly support across all browsers
caniuse-mcp v1.1.2 — Browser Compatibility Lookup + Browserslist Checks
Install: npm install caniuse-mcp — entry point dist/index.js Transport: stdio, @modelcontextprotocol/sdk + fastmcp + zod Network: none required — ships with bundled caniuse database
3 Tools
| Tool | Params | What it does |
|---|---|---|
caniuse_feature | {feature: string} | Look up browser support matrix for a web feature (CSS Grid, WebP, :has(), dialog, WebAssembly, etc.) |
browserslist_compatibility_check | {feature, browserslistQuery?, configPath?, projectPath?} | Check if a feature is supported by browsers matching a browserslist query (e.g., "last 2 versions", "> 1%") |
list_tools | {} | List available tools with descriptions |
Real Execution Trace (11 calls, 100% success)
1. caniuse_feature — css-grid (4317ms first call): Returns JSON array of matching features with per-browser version support map. CSS Grid matched "css-grid-lanes" first (masonry), then "css-grid" (the main one). Each entry has title, description, per-browser version→status objects (not_supported / partial / supported / polyfill / requires flag).
2. caniuse_feature — webp (1144ms): WebP image format — full support history: Chrome partial from v6, full from v23; Firefox from v65; Safari from v14; Edge from v18. Includes "polyfill available" notes.
3. caniuse_feature — css-container-queries (1152ms): Container Style Queries and Container Queries proper — Chrome 105+, Firefox 110+, Safari 16+. Shows flag-based availability for earlier versions.
4. caniuse_feature — flexbox-gap (1179ms): Gap property for flexbox — Chrome 84+, Firefox 63+, Safari 14.1+, Edge 84+. Clean support data.
5. caniuse_feature — wasm (1146ms): WebAssembly — Chrome 57+, Firefox 52+, Safari 11+. Shows "requires flag" for earlier versions.
6. browserslist_compatibility_check — css-grid, "last 2 versions" (1810ms): Returns compatibility table for targeted browser list. Lists ALL matching features (css-grid, css-grid-lanes, MDN sub-features). Shows which target browsers support/don't support. Includes IE 10, 11 in "last 2 versions" (not deprecated yet in browserslist).
7. browserslist_compatibility_check — webp, "> 1%" (1275ms): Checks WebP against browsers with >1% global usage. Multiple sub-features matched (HTMLCanvasElement.toBlob WebP, toDataURL WebP, etc.).
8. caniuse_feature — dialog (1170ms): Dialog element — Chrome 37+, Firefox 98+, Safari 15.4+. Shows early flag availability in Chrome 32+.
9. caniuse_feature — css-has (1131ms): :has() pseudo-class — Chrome 105+, Firefox 121+, Safari 15.4+. Relatively recent adoption.
10. caniuse_feature — nonexistent feature (1208ms): Returns empty array [] — graceful handling, no error thrown.
11. list_tools (2ms): Returns formatted Markdown listing all 3 tools with descriptions and parameter details.
Key Observations
- First call is SLOW (~4.3s) — database initialization/loading on first query; subsequent calls ~1.1s each
- Output is Markdown-formatted with JSON embedded —
# caniuse Feature Lookup Result for "..."header + JSON array - Fuzzy matching — "css-grid" matches both "css-grid" and "css-grid-lanes" (masonry), "webp" matches WebP + canvas variants
- Support status values:
not_supported,partial,supported,polyfill, with optional notes (requires flag, polyfill available, etc.) - Per-version granularity — shows exact browser version where support started, not just current status
- browserslist_compatibility_check resolves queries to specific browser versions and cross-references with caniuse data
- No network needed — caniuse database is bundled in the npm package
- Nonexistent features return empty array (no error)
- *Some internal "sr-" feature IDs generate stderr warnings** ("Feature ID 'sr-php' not found") but don't affect results
Latency Profile
p50=1170ms, range 2ms–4317ms F
{ "server": "caniuse-mcp", "version": "1.1.2", "transport": "stdio", "tools": 3, "calls": [ { "tool": "caniuse_feature", "args": { "feature": "css-grid" }, "ms": 4317, "ok": true }, { "tool": "caniuse_feature", "args": { "feature": "webp" }, "ms": 1144, "ok": true }, { "tool": "caniuse_feature", "args": { "feature": "css-container-queries" }, "ms": 1152, "ok": true }, { "tool": "caniuse_feature", "args": { "feature": "flexbox-gap" }, "ms": 1179, "ok": true }, { "tool": "caniuse_feature", "args": { "feature": "wasm" }, "ms": 1146, "ok": true }, { "tool": "browserslist_compatibility_check", "args": { "feature": "css-grid", "browserslistQuery": "last 2 versions" }, "ms": 1810, "ok": true }, { "tool": "browserslist_compatibility_check", "args": { "feature": "webp", "browserslistQuery": "> 1%" }, "ms": 1275, "ok": true }, { "tool": "caniuse_feature", "args": { "feature": "dialog" }, "ms": 1170, "ok": true }, { "tool": "caniuse_feature", "args": { "feature": "css-has" }, "ms": 1131, "ok": true }, { "tool": "caniuse_feature", "args": { "feature": "nonexistent-fake-feature-12345" }, "ms": 1208, "ok": true, "result": "empty array" }, { "tool": "list_tools", "args": {}, "ms": 2, "ok": true } ], "success_rate": "11/11 (100%)", "p50_ms": 1170, "latency_range": "2ms–4317ms" }