HTTP MCP Server for web scraping debug workflows
Three tools with reasonable descriptions (150-200 chars each) and basic parameter documentation. However, critical gaps: (1) Input schemas are incomplete, parameters lack formal type constraints, enums, and ranges. (2) Output schemas are partially documented via Pydantic models but not exposed in tool registration. (3) No error handling guidance, tools return generic error strings without recovery hints. (4) Parameter descriptions lack format/constraint details (e.g., timeout range, URL format, header format). (5) No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Naming is clear and verb-driven (make_request, analyze_response, extract_headers), but parameter naming could be more explicit (e.g., 'response_data' is vague, should be 'http_response' or 'response_object').
Analyze HTTP response data to extract metadata, performance metrics, and content characteristics. This tool takes the response from make_request and provides detailed analysis including content type detection, security header analysis, caching information, and performance metrics.
Extract and categorize HTTP response headers into logical groups. This tool organizes response headers into categories (security, caching, content, server, custom) to help understand the server configuration and response characteristics.
Make an HTTP request to a specified URL with configurable options. This is the core HTTP client tool that sends requests using any standard HTTP method and returns comprehensive response data including headers, content, timing metrics, and success status. Automatically handles JSON serialization and content-type headers.
Input schemas lack formal constraints. Parameters have descriptions but no enums, min/max, patterns, or format declarations. E.g., 'method' accepts any string; should be enum [GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS]. 'timeout' has no bounds; should be integer 1-300. 'url' has no format constraint.
Output schemas are defined as Pydantic models (HTTPResponse, ResponseAnalysis) but not formally documented in tool registration. LLMs cannot see the return structure without inspecting code. Tool descriptions mention return fields but lack structured schema documentation.
Error handling provides no recovery guidance. Timeout and exception handlers return generic error strings ('Request timed out', str(e)) without actionable next steps. LLM cannot determine if error is retryable, user-fixable, or fatal.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | <=2025-11-25 | v2 |
Parameter 'response_data' in analyze_response and extract_headers is vague. Description says 'Dictionary containing HTTP response data' but does not specify required keys or structure. Should be explicit: 'HTTPResponse object with keys: status_code (int), headers (dict), content (str), elapsed_ms (float), url (str), method (str), success (bool), error (str|null)'.
No tool annotations. Tools lack readOnlyHint (all three are read-only), destructiveHint (none are destructive), or idempotentHint (make_request is idempotent for GET but not POST). Annotations help LLMs reason about safety and retry logic.