MCP server for providing web context to LLMs using Cloudflare Browser Rendering
This server has 4 tools with explicit registrations visible in src/server.ts. All tools have basic descriptions and input schemas with proper JSON Schema structure. However, there are significant gaps in parameter descriptions, output schema documentation, and error handling guidance that prevent higher scores. The tool names follow verb_noun conventions (fetch_, search_, extract_, summarize_) which is good. Most parameters lack detailed descriptions explaining constraints, formats, and dependencies. Output schemas are not documented, responses mention returning 'content' arrays with 'text' and 'image' types, but the structure is not formally specified. Error handling exists but returns generic error messages without recovery guidance. This is a typical community MCP server with functional definitions but production gaps.
Extracts structured content from a web page using CSS selectors
Fetches and processes a web page for LLM context
Searches Cloudflare documentation and returns relevant content
Summarizes web content for more concise LLM context
Output schemas are not documented. Tools return responses with 'content' arrays, but the structure (field types, required fields, nested object shapes) is not formally specified in tool definitions. LLMs cannot plan downstream operations or validate results without documented output schemas.
Parameter descriptions lack constraint details. For example, 'maxContentLength' and 'maxLength' have no min/max bounds, units, or guidance on typical values. 'maxResults' has no limit stated. LLMs cannot infer safe ranges and may pass invalid values.
Error messages are generic. The code returns 'Error fetching page: <error message>' or 'Error executing tool <name>: <error message>' with isError=true. These do not guide the LLM on recovery steps, retry eligibility, or root cause. Per the recovery-guide pattern, errors should state WHAT the LLM should try next.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 52 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
The 'selectors' parameter in extract_structured_content is an object with additionalProperties but no description of what each property value should contain (CSS selector syntax, expected results, etc.). This is ambiguous for LLMs.
No pagination support visible. Tools like search_documentation return results but do not expose pagination parameters (limit, offset, page, cursor) or document result limits. Large result sets could exceed context windows.
Tool descriptions do not specify when to use each tool instead of others. For example, fetch_page, search_documentation, and extract_structured_content all fetch web content, the descriptions do not clarify which to use when or what each returns uniquely.