An MCP server that provides internet search, local file management, and dynamic UI generation capabilities for research and analysis workflows.
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation, error handling, and security. search_internet lacks input validation and error recovery guidance. manage_local_file exposes destructive operations without confirmation patterns or permission checks. generate_custom_ui accepts arbitrary Python code execution, a critical security vulnerability. No tool annotations (readOnlyHint, destructiveHint). Descriptions are present but generic (avg 120 chars, below 194-char baseline). Parameters lack constraints (enums, ranges, format specs). No output schemas documented. Error messages are generic strings rather than structured recovery guidance.
Executes the provided python_code to generate a dynamic Prefab UI on the fly. The code MUST define and assign a valid PrefabApp object to a variable named `app`.
Perform CRUD operations on a local file.
Search the internet using Tavily to find information, facts, or data.
generate_custom_ui accepts arbitrary Python code execution via exec() with minimal validation. No sandboxing, no allowlist, no AST inspection. Critical code injection vulnerability.
manage_local_file performs destructive operations (delete, create, update) without confirmation, permission checks, or dry-run support. No audit trail. Violates confirmation-request and permission-gate patterns.
No tool annotations present. manage_local_file should declare destructiveHint=true; search_internet should declare readOnlyHint=true. Agents cannot infer safety properties from tool names alone.
manage_local_file 'action' parameter lacks enum constraint. Accepts free-form strings; invalid actions return generic error. Should declare enum: ['read', 'create', 'update', 'delete'].
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
No output schemas documented for any tool. search_internet returns unstructured string; manage_local_file returns status strings; generate_custom_ui returns PrefabApp object. LLMs cannot plan downstream calls or extract structured data.