MCP server for accessing and controlling open browser tabs in Chrome, Safari, and Arc browsers via AppleScript on macOS
Chrome Tabs MCP server has three tools with clear action-verb naming (list_, read_, open_). All tools have descriptions and input schemas are visible. However, descriptions are terse (avg 108 chars, below the 194-char production baseline), parameter descriptions lack detail on constraints and formats, output schemas are not documented, and error handling is not evident from the code shown. The server correctly avoids security issues (no credentials as parameters) but lacks robustness patterns like pagination, detailed error recovery guidance, and comprehensive parameter validation documentation.
List all open tabs in the user's browser with their titles and tab references.
Open a URL in a new tab to present content or enable user interaction with webpages
Get readable content from a tab in the user's browser. Provide ID (from list_tabs output) to read a specific tab, or omit for the active tab.
Descriptions are below production baseline (avg 108 chars vs 194-char baseline). Missing WHEN to use, prerequisites, and consequences. Example: 'list_tabs' description lacks any guidance on when to call it vs alternative discovery patterns.
Parameter 'id' in read_tab_content lacks format specification. Description says 'Tab reference from list_tabs output (e.g: ID:12345:67890)', this is an example value that LLMs may reuse literally. Should use a regex pattern constraint instead of example.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields without knowing return structure. Production baseline: 100% of A+ tools document return types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Parameter descriptions lack constraint details. 'startIndex' says 'starting character position' but no bounds documented (min=0, max?). 'includeUrl' has a default but no validation error guidance if misused.
No error handling patterns visible. No recovery guidance documented (e.g., 'if tab not found, try list_tabs first'). No distinction between retryable (network) vs fatal (invalid tab reference) errors.
open_in_new_tab marked as WRITE risk but no confirmation/dry-run pattern evident. Destructive operations should support idempotent or confirmable patterns to prevent accidental tab spam.