A modular MCP server testbed with multiple specialized agents for ETL, web search, finance, database analysis, and travel planning. Includes FastMCP-based servers that integrate with CrewAI agents and external MCP servers.
This server exhibits significant quality gaps across naming, descriptions, and schema completeness. The ETL tools (1-8) have reasonable verb-based names and basic descriptions, but lack parameter-level detail and output schema documentation. Tools 9-17 are severely underdocumented: most are single-parameter 'question' or 'input_data' wrappers around CrewAI agents with minimal guidance on what they actually do, when to use them, or what they return. No tool includes output schema documentation. Error handling is absent across all tools. Security concerns exist (eval() in transform_data, no input validation). The server mixes ETL utilities with agent proxies without clear composition or chaining support.
Search the web and scrape relevant content using Brave Search MCP and a CrewAI-powered agent.
Ensures each column in data has the correct type according to the provided type mapping.
Analyze context7 to retrieve any information about any documentation using CrewAI-powered agent.
Checks for anomalies in the data based on provided rules (e.g., min/max for columns).
Proxy a user question into your Docker-based MCP server via CrewAI.
Enforces constraints such as not-null and unique on columns.
Tools 9-17 are opaque agent proxies with minimal documentation. Each accepts a generic 'question' or 'input_data' parameter and returns undocumented results. LLMs cannot determine when to use 'multi_analyst' vs 'github_analyst' vs 'supabase_analyst', all appear to answer questions generically.
No output schemas documented for any tool. ETL tools return dicts with 'data' and 'columns' keys, but this is inferred from code, not declared. Agent tools return nothing documented. LLMs cannot plan downstream calls or extract required fields.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Analyze github repositories data using CrewAI-powered agent.
Handles missing values according to provided strategy.
Handle financial and DB questions using unified tool access.
Reads a CSV file from the given path and returns its contents as a list of dicts.
Removes duplicate rows in the data.
Use Selenium MCP to scrape structured data from websites based on navigation instructions.
Applies string standardization rules per column (e.g., lowercase, strip).
Analyze supabase tables and answer questions about out data using CrewAI-powered agent.
Applies transformations to the data (e.g., rename columns, add new columns).
Plan travel itineraries by finding flights, accommodations, and local experiences using multiple MCP agents.
Analyze yfinance library and answer questions about out data using CrewAI-powered agent.
transform_data uses eval() on user-provided transformation_rules['new_columns'] expressions without sanitization. This is a code injection vulnerability if rules come from untrusted sources. Even with trusted sources, eval() is dangerous.
ETL tools lack input validation and error guidance. check_data_types, handle_missing_values, standardize_values, enforce_constraints, and transform_data accept complex nested dicts (type_mapping, strategy, rules, constraints, transformation_rules) with no schema constraints or validation. Invalid input produces cryptic pandas errors instead of actionable guidance.
Agent proxy tools (9-17) do not document what CrewAI agents they delegate to, what tools those agents have access to, or what data they can access. This creates a black box where LLMs cannot reason about side effects, permissions, or failure modes.