Multi-agent collaborative research system with MCP-compliant FastAPI servers for web search, content extraction, and secure file operations
Project Synapse presents a mediocre MCP server implementation with significant gaps across naming, description quality, and schema completeness. All four tools are explicitly registered in FastAPI routes with schemas visible in the code, but they lack the depth and clarity needed for reliable LLM invocation. Tool names follow verb-noun patterns (search_web, browse_and_extract, save_file, validate_path), which is positive. However, descriptions are generic and often reference implementation details (SSE, Prometheus, MCP Roots) rather than answering WHAT, WHEN, and WHY. Parameter schemas exist but lack enums for constrained inputs and detailed format guidance. Error handling is minimal, most errors are HTTP exceptions with generic detail messages. Two critical security issues: save_file and validate_path claim to implement 'MCP Roots' security model, but this pattern is deprecated as of 2025-03-26 and should not be referenced. The server architecture uses HTTP transport (acceptable), but individual tools are not well-integrated with current MCP patterns. Average tool score: 42/100.
Browse a URL and extract its main text content with streaming progress. This endpoint demonstrates MCP Progress Notifications by sending Server-Sent Events during the extraction process.
Save content to a file with security validation. This endpoint demonstrates MCP Roots by validating that the target path is within the allowed directory structure before performing any file operations.
Search the web for information related to the query. This endpoint provides the search_web MCP tool functionality via HTTP POST request.
Validate a path without performing any operations. Useful for clients to check if a path is allowed before attempting file operations.
Tool descriptions are implementation-focused rather than user-intent focused. Multiple tools reference 'MCP Roots', 'SSE', 'Prometheus', architectural details that confuse LLMs about the tool's actual purpose and when to invoke it.
No output schemas documented for any tool. LLMs cannot plan multi-step workflows or extract required data without knowing what fields each tool returns. This violates the documented response-shaper pattern.
Tool 'browse_and_extract' violates single-responsibility: the 'and' in the name signals multiple concerns (browsing + extracting). Should be split into separate tools or renamed to prioritize one action.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | D | 50 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 58 | - | v1 |
Deprecated MCP Roots pattern is prominently referenced in tool descriptions and filesystem server code (save_file, validate_path). Roots were removed from the spec effective 2025-03-26. Tools should use resource URIs or parameter-based path configuration instead.
Parameter schemas lack constraints and enums. 'max_results' has no min/max bounds; 'query' has no length limits; 'file_path' and 'path' have no validation patterns. Free-form strings invite hallucinated or invalid values.
Error handling is minimal. HTTP exceptions return generic detail messages (e.g. 'Access denied: ...') but do not guide LLM recovery. No categorization of retryable vs fatal errors, no suggestions for alternative tools.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. LLMs cannot infer which tools have side effects. 'save_file' is clearly destructive/non-idempotent, but this is not signaled in schema.