Skip to main content
Glama
shuji-bonji

@shuji-bonji/web-compat-mcp

by shuji-bonji

Web Compat MCP server

CI npm version License: MIT

MCP server providing browser compatibility data for the entire Web Platform.

Answers the question: "Does this actually work in browsers?"

Uses MDN Browser Compat Data (BCD) (15,000+ features) and W3C WebDX web-features (1,000+ features with Baseline status) to provide real-world browser implementation status.

Fully offline β€” all data is bundled via npm packages. No API calls, zero latency.

πŸ‡―πŸ‡΅ ζ—₯本θͺžη‰ˆ README はこけら

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           web-compat-mcp server             β”‚
β”‚                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚ @mdn/browser- β”‚  β”‚   web-features    β”‚   β”‚
β”‚  β”‚  compat-data  β”‚  β”‚  (W3C WebDX CG)   β”‚   β”‚
β”‚  β”‚  15K+ featuresβ”‚  β”‚  1K+ features     β”‚   β”‚
β”‚  β”‚  BCD JSON     β”‚  β”‚  Baseline status  β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚          β”‚   cross-reference β”‚              β”‚
β”‚          β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜              β”‚
β”‚                   β”‚                         β”‚
β”‚          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”                β”‚
β”‚          β”‚   7 MCP Tools   β”‚                β”‚
β”‚          β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜                β”‚
β”‚                   β”‚ stdio                   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                    β”‚
            MCP Client (Claude, etc.)

Related MCP server: w3c-mcp

Tools

Tool

Description

compat_check

Check browser compatibility for a single feature (BCD dot notation)

compat_search

Search 15,000+ BCD features by keyword

compat_get_baseline

Get Baseline status for a web feature (web-features kebab-case)

compat_list_baseline

List features filtered by Baseline status

compat_compare

Compare browser compatibility across 2–5 features side by side

compat_list_browsers

List all tracked browsers with versions

compat_check_support

Find features added in a specific browser version

Identifier conventions

The two data sources use different identifier schemes, and each tool expects a specific one:

Tool

Scheme

Example

compat_check, compat_compare, compat_search

BCD dot notation β€” fine-grained, often camelCase

api.PushManager, css.properties.grid

compat_get_baseline, compat_list_baseline

web-features kebab-case β€” coarse, feature-group

push, container-queries

compat_check_support

Browser id + version string

safari + 17

BCD is fine-grained (api.PushManager, api.PushEvent, api.PushSubscription are separate entries) while web-features groups related specs into a single feature (push covers all three). When unsure of the exact identifier, run compat_search first. Input normalization handles kebab-case queries (view-transition β†’ viewtransition) and trailing .0 versions (17.0 β†’ 17) automatically.

Quick Start

Requires Node.js 22 or later.

npx (no install)

npx -y @shuji-bonji/web-compat-mcp@latest

npm (global)

npm install -g @shuji-bonji/web-compat-mcp
web-compat-mcp

MCP Client Configuration

Claude Desktop

Add to claude_desktop_config.json:

{
	"mcpServers": {
		"web-compat": {
			"command": "npx",
			"args": ["-y", "@shuji-bonji/web-compat-mcp@latest"]
		}
	}
}

Claude Code

claude mcp add web-compat -- npx -y @shuji-bonji/web-compat-mcp@latest

VS Code (Copilot / Continue)

Add to .vscode/mcp.json:

{
	"servers": {
		"web-compat": {
			"command": "npx",
			"args": ["-y", "@shuji-bonji/web-compat-mcp@latest"]
		}
	}
}

Usage Examples

Check browser compatibility

"Is Push API supported in Safari?"

β†’ compat_check feature: "api.PushManager"

Returns version support across browsers, Baseline status, and links to MDN/spec documentation.

Search features

"Find CSS grid features"

β†’ compat_search query: "grid" category: "css"

Returns matching feature IDs with standard/experimental/deprecated flags.

Compare features

"Compare fetch vs XMLHttpRequest"

β†’ compat_compare features: ["api.fetch", "api.XMLHttpRequest"]

Returns side-by-side comparison table with version support and Baseline status.

Check Baseline status

"Is container queries Baseline?"

β†’ compat_get_baseline feature: "container-queries"

Returns Baseline level (Widely Available / Newly Available / Not Baseline), browser support, and related BCD features.

Find features by browser version

"What CSS features were added in Chrome 120?"

β†’ compat_check_support browser: "chrome" version: "120" category: "css"

Returns features added in the specified browser version.

Workflow: combining multiple tools

"I want to use Push API in my PWA β€” is it realistic today?"

Step 1 β†’ compat_check        feature: "api.PushManager"
         # Per-API browser versions (Chrome 42+, Safari 16+, Firefox 44+)

Step 2 β†’ compat_get_baseline  feature: "push"
         # Feature-group view: Newly Available since 2023-03-27

Step 3 β†’ compat_compare       features: ["api.PushManager", "api.Notification"]
         # Side-by-side when your PWA depends on both

Chained with a spec-oriented server such as W3C MCP or RFCXML MCP, the LLM can answer both "what does the spec require?" and "what actually works in browsers today?" in a single conversation.

Output Formats

All tools support response_format parameter:

  • "markdown" (default) β€” Human-readable tables and formatted text

  • "json" β€” Structured data with structuredContent for programmatic use

Complementary MCP Servers

This server is designed to work alongside other MCP servers:

Server

Role

This Server's Complement

W3C MCP

Spec definitions (MUST/SHOULD/MAY)

Real browser implementation status

RFCXML MCP

RFC requirements

Browser-level protocol support

css-mcp

CSS docs + code analysis

Platform-wide compat + Baseline

Data Sources

Source

Package

Features

Update Frequency

MDN BCD

@mdn/browser-compat-data

15,000+

Weekly

web-features

web-features

1,000+

Monthly

Development

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test              # Unit tests (94 tests)
npm run test:e2e      # E2E tests via JSON-RPC (10 tests)

# Lint & format (Biome 2.x)
npm run lint          # Check
npm run lint:fix      # Auto-fix
npm run format        # Format

# Type check (TypeScript 7)
npm run typecheck

License

MIT β€” see LICENSE

Available Tools

7 tools
compat_checkCheck Browser CompatibilityA
Read-onlyIdempotent

Check browser compatibility for a specific web platform feature using MDN Browser Compat Data (BCD).

Returns version support across browsers, Baseline status, and links to MDN/spec documentation.

Args:

  • feature (string): BCD identifier in dot notation (e.g., "api.PushManager", "css.properties.grid", "javascript.builtins.Promise")

  • browsers (string[], optional): Filter to specific browsers (e.g., ["chrome", "safari"]). Defaults to desktop browsers.

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: Browser support versions, Baseline status, standard/experimental/deprecated flags, and MDN/spec links.

Examples:

  • "Is Push API supported in Safari?" β†’ feature: "api.PushManager"

  • "Can I use CSS grid?" β†’ feature: "css.properties.grid"

  • "Is Array.at() widely available?" β†’ feature: "javascript.builtins.Array.at"

ParametersJSON Schema
NameRequiredDescriptionDefault
featureYesBCD feature identifier using dot notation (e.g., "api.PushManager", "css.properties.grid", "javascript.builtins.Array.at")
browsersNoFilter to specific browsers (e.g., ["chrome", "safari", "firefox"]). Omit for default desktop browsers.
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datamarkdown

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and idempotent. The description adds comprehensive behavioral details: returns version support across browsers, Baseline status, flags (standard/experimental/deprecated), and links to MDN/spec documentation. This fully informs the agent of what the tool does beyond safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a one-sentence purpose, followed by bullet-style Args/Returns, and clear examples. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers input, output, and examples adequately. While error handling or edge cases (e.g., invalid feature identifier) are not mentioned, the examples and parameter descriptions provide sufficient guidance for normal use. Annotations cover safety, so no gaps there.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% coverage with good descriptions. The description adds value with examples of BCD identifiers, default browsers behavior, and output format options, helping the agent understand parameter usage in context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks browser compatibility for a specific web platform feature using BCD, with details on input and output. However, it does not explicitly differentiate from sibling tools like compat_check_support, which might offer a simpler query for the same feature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., compat_check_support for quick yes/no, compat_compare for comparing features). The sibling list is available context, but the description does not reference them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compat_check_supportCheck Browser Version SupportA
Read-onlyIdempotent

Find web platform features that were added in a specific browser version.

Useful for understanding what new capabilities became available in a particular browser release.

Args:

  • browser (string): Browser identifier (e.g., "safari", "chrome", "firefox")

  • version (string): Browser version (e.g., "17.0", "120", "121")

  • category (string, optional): Filter by BCD category (e.g., "api", "css")

  • limit (number): Max results (default: 20, max: 100)

  • offset (number): Pagination offset (default: 0)

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: List of features added in the specified browser version.

Examples:

  • "What was added in Safari 17.0?" β†’ browser: "safari", version: "17.0"

  • "New CSS features in Chrome 120" β†’ browser: "chrome", version: "120", category: "css"

  • "Firefox 121 API additions" β†’ browser: "firefox", version: "121", category: "api"

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return (1-100, default: 20)
offsetNoNumber of results to skip for pagination (default: 0)
browserYesBrowser identifier (e.g., "safari", "chrome", "firefox")
versionYesBrowser version (e.g., "17.0", "120", "121")
categoryNoFilter by BCD category (e.g., "api", "css")
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datamarkdown

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true. Description adds that it lists features from a specific version with no side effects. No mention of pagination or rate limits, but adequate given annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with summary, usage statement, parameter list with args, return description, and multiple examples. No wasted words; each section adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a query tool with no output schema, description adequately explains returns as 'List of features' and provides examples. Complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 6 parameters (100% coverage), and description adds examples and additional context (defaults, usage patterns) for each parameter, enhancing understanding beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Find web platform features that were added in a specific browser version.' with specific verb 'Find' and resource 'web platform features', distinguishing it from siblings like compat_compare and compat_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides use case context ('Useful for understanding what new capabilities became available in a particular browser release') and examples for typical queries, but lacks explicit when-not-to-use or direct sibling comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compat_compareCompare Browser CompatibilityA
Read-onlyIdempotent

Compare browser compatibility across multiple web platform features side by side.

Useful for choosing between alternative APIs or understanding support differences.

Args:

  • features (string[]): 2-5 BCD feature identifiers to compare (e.g., ["api.fetch", "api.XMLHttpRequest"])

  • browsers (string[], optional): Filter to specific browsers. Omit for default desktop browsers.

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: Side-by-side comparison table showing version support for each feature across browsers.

Examples:

  • Compare fetch vs XMLHttpRequest β†’ features: ["api.fetch", "api.XMLHttpRequest"]

  • Compare CSS layout methods β†’ features: ["css.properties.grid", "css.properties.flex"]

  • Compare storage APIs β†’ features: ["api.localStorage", "api.sessionStorage", "api.IndexedDB"]

ParametersJSON Schema
NameRequiredDescriptionDefault
browsersNoFilter to specific browsers (e.g., ["chrome", "safari"]). Omit for default desktop browsers.
featuresYesArray of BCD feature identifiers to compare (e.g., ["api.fetch", "api.XMLHttpRequest"])
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datamarkdown

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the agent knows it's safe. The description adds that it returns a side-by-side comparison table and supports markdown/json output, plus constraints like 2-5 features. This provides useful behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: a one-liner, usage context, arguments, returns, and examples. It is reasonably concise without wasted words, though the examples could be trimmed slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given moderate complexity (3 params, no output schema), the description covers inputs, output format, usage context, and provides concrete examples. It does not detail the return structure beyond 'comparison table', but the examples and format options (markdown/json) are sufficient for an agent to understand what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all parameters. The description adds extra semantic value with practical examples (e.g., 'api.fetch') and clarifies constraints (minItems 2, maxItems 5) and the default for response_format. This elevates the score above the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool compares browser compatibility across multiple features side by side. The verb 'compare' and resource 'browser compatibility' are specific, and the tool is distinguished from siblings like compat_check which likely handles single features.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: 'Useful for choosing between alternative APIs or understanding support differences.' This tells the agent when to use it. Examples further illustrate typical use cases. However, it does not explicitly state when not to use it or directly name alternatives, though siblings are listed separately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compat_get_baselineGet Baseline StatusA
Read-onlyIdempotent

Get the Baseline status for a web platform feature from W3C WebDX web-features data.

Baseline indicates whether a feature is supported across all major browsers:

  • "high" (Widely Available): Supported for 30+ months across all core browsers

  • "low" (Newly Available): Recently became interoperable across all core browsers

  • false (Not Baseline): Not yet supported across all core browsers

Args:

  • feature (string): web-features identifier in kebab-case (e.g., "container-queries", "push", "view-transitions")

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: Baseline status, browser support versions, related BCD features, and spec links.

Examples:

  • "Is container queries Baseline?" β†’ feature: "container-queries"

  • "Is the Push API widely available?" β†’ feature: "push"

  • "Check View Transitions baseline" β†’ feature: "view-transitions"

ParametersJSON Schema
NameRequiredDescriptionDefault
featureYesweb-features identifier using kebab-case (e.g., "container-queries", "push", "view-transitions")
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datamarkdown

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds the meaning of baseline levels (high, low, false) and the returned data (browser support versions, related BCD features, spec links), providing valuable behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: first sentence states purpose, then explains baseline levels, followed by Args, Returns, and Examples. It is concise yet comprehensive without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description explicitly lists return values (Baseline status, browser support, etc.). It fully addresses the tool's functionality given its simplicity and the presence of sibling tools for alternative queries.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%. The description adds value by explaining feature identifier format (kebab-case), detailing response_format options with default, and providing concrete examples that clarify parameter usage beyond the schema's brief descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets Baseline status for a web platform feature from W3C WebDX web-features data. It distinguishes from siblings like compat_check and compat_list_baseline by focusing specifically on a single feature's baseline level.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides examples and explains the output format, but does not explicitly state when not to use this tool versus alternatives like compat_check or compat_list_baseline. However, the examples give clear usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compat_list_baselineList Features by Baseline StatusA
Read-onlyIdempotent

List web platform features filtered by their Baseline status.

Use this to discover which features are Widely Available, Newly Available, or not yet Baseline.

Args:

  • status (string, optional): Filter by "high" (Widely Available), "low" (Newly Available), or "false" (Not Baseline)

  • group (string, optional): Filter by feature group (e.g., "css", "javascript", "forms")

  • limit (number): Max results (default: 20, max: 100)

  • offset (number): Pagination offset (default: 0)

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: Paginated list of features with their Baseline status and availability dates.

Examples:

  • "List all Widely Available features" β†’ status: "high"

  • "What CSS features are Newly Available?" β†’ status: "low", group: "css"

  • "What features aren't Baseline yet?" β†’ status: "false"

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoFilter by web-features group (e.g., "css", "javascript", "forms")
limitNoMaximum number of results to return (1-100, default: 20)
offsetNoNumber of results to skip for pagination (default: 0)
statusNoFilter by Baseline status: "high" (Widely Available), "low" (Newly Available), "false" (Not Baseline)
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datamarkdown

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavioral context such as pagination defaults (limit, offset) and output format options (markdown/json), which are beyond what annotations provide. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (list function, Args, Returns, Examples). It is concise, with no fluff, and every sentence provides necessary information. The examples are particularly helpful for quick understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters, no output schema, and a clear purpose, the description covers all necessary aspects: parameters, defaults, return structure (paginated list with status and dates), and examples. It could mention that results are sorted or other details but is sufficient for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining each parameter's purpose, enumerating values for status and response_format, and specifying defaults and constraints (e.g., limit range, offset behavior). This goes beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists web platform features filtered by Baseline status, using specific verbs and resource. It distinguishes from sibling tools like compat_check and compat_search by focusing on listing and filtering by status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit context for when to use the tool (discover features by Baseline status) and includes multiple examples covering different use cases. However, it does not explicitly mention when not to use it or provide direct alternatives among sibling tools, though the use case is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compat_list_browsersList Tracked BrowsersA
Read-onlyIdempotent

List all browsers tracked in MDN Browser Compat Data with their current versions and release dates.

Args:

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: List of browsers with id, name, type (desktop/mobile/server), current version, and release date.

Examples:

  • "What browsers are tracked?" β†’ no params needed

  • "List all browser versions" β†’ no params needed

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datamarkdown

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds behavioral context by specifying the output structure (list of browsers with fields) and the response_format parameter. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a clear structure: one-line purpose, Args section, Returns section, and examples. Every sentence adds value without redundancy. Front-loaded with the main action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description fully covers the return format by listing fields (id, name, type, version, release date) and provides usage examples. The single optional parameter is well-documented. Adequate for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with detailed descriptions (e.g., 'Output format: markdown for human-readable or json for structured data'). The description only adds the default value and example usage, providing marginal additional value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and resource 'browsers', specifies scope 'all', and lists the returned fields (current versions, release dates). It distinguishes from sibling tools like compat_check (which checks support) and compat_list_baseline (which lists baselines).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides examples like 'What browsers are tracked?' and 'List all browser versions' that imply appropriate use cases. However, it does not explicitly state when to avoid this tool or mention alternatives like compat_search for filtered queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 7 tool updatesv0.1.4
    • First observedcompat_check
    • First observedcompat_check_support
    • First observedcompat_compare
    • First observedcompat_get_baseline
    • First observedcompat_list_baseline
    • First observedcompat_list_browsers
    • First observedcompat_search

TDQS

A4.4/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: checking a feature's compatibility, finding features by version, comparing features across features, getting Baseline status, listing features by Baseline status, listing browsers, and searching for features. No ambiguity.

Naming Consistency5/5

All tools follow a consistent 'compat_<verb>' or 'compat_<verb>_<noun>' pattern in snake_case. Names like compat_check, compat_search, compat_compare are predictable and descriptive.

Tool Count5/5

Seven tools is well-scoped for a web compatibility server. It covers all essential query operations without being bloated or too sparse.

Completeness5/5

The tool set covers the full query lifecycle: discovery (search, list baselines), single feature lookup (check, get baseline), comparison, and version-specific queries. No major gaps for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    MCP Server for accessing W3C/WHATWG/IETF web specifications. Provides AI assistants with access to official web standards data including specifications, WebIDL definitions, CSS properties, and HTML elements.
    11
    363 npm
    4
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    An MCP server that queries the baseline status of web platform features using data from webstatus.dev. It provides tools to get feature baseline status and a summary of baseline categories.
    2
    1
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for exploring the ECMAScript specification and its implementation, enabling semantic search of spec sections, JavaScript execution in engine262, and access to a knowledge graph linking spec sections to implementation functions.
    8 npm
    ISC