MCP server exposing Trafilatura tools for web scraping. Allows extraction of main content, metadata, and comments from web pages.
Trafilatura MCP provides a single, well-defined tool with clear naming and structured schema. The tool name 'fetch_and_extract' starts with verbs but combines two operations (FETCH + EXTRACT), which violates single-responsibility principle. The description is adequate (158 chars, within baseline 34 - 392 range). Input schema is comprehensive with all three parameters properly typed and described. However, the tool lacks documentation of its output schema structure, the response is a JSON string from Trafilatura, but no schema is provided explaining what fields the LLM should expect. Error handling is present but generic (McpError with INTERNAL_ERROR code). The tool is read-only, which is appropriate.
Fetches a URL and extracts the main content, metadata, and comments. Returns a JSON object with the extracted data.
Tool name 'fetch_and_extract' combines two operations (fetch + extract), violating single-responsibility principle. LLMs infer intent from the name alone, 'and' signals conflicting concerns.
Output schema is undocumented. Tool returns trafilatura.extract() output as a JSON string, but the description does not explain what fields the response contains (e.g., main_content, metadata, comments structure). LLMs cannot plan downstream processing without knowing the response shape.
Error messages are generic and non-actionable. When download fails or extraction returns None, errors return INTERNAL_ERROR without guidance. LLMs need suggestions: 'Failed to download. Check if the URL is valid and publicly accessible.'
No timeout or rate-limit handling documented. External HTTP calls to arbitrary URLs can hang or be rate-limited. Tool lacks timeout configuration or guidance on retryability.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | <=2025-11-25 | v2 |
Tool accepts any URL without validation or allowlisting. Agents could be tricked into fetching internal/sensitive URLs (SSRF risk). Should validate domain or require explicit user approval for certain URL patterns.