MCP server that instructs a browser to navigate to URLs and follow instructions using the browser-use agent framework
Single tool 'instruct-browser' has a basic description (67 chars) and minimal schema. Input parameters (url, instructions) are typed strings with descriptions, but lack constraints, enums, or format guidance. No output schema is documented, the tool returns unstructured text from a Python subprocess. No error handling guidance for LLMs. Tool name lacks a clear action verb (should be 'navigate_and_instruct_browser' or split into separate tools). The implementation spawns a hardcoded Python path (/Users/dylangroos/...) which is not portable and exposes environment-specific paths. No pagination, no structured response, no recovery hints.
Instruct the browser to navigate to a URL and return interaction history
Tool name 'instruct-browser' lacks action verb. Should start with verb (navigate_, execute_, run_) to signal intent to LLM. Current name is ambiguous about what 'instruct' means.
No output schema documented. Tool returns unstructured text via JSON.parse(stdout). LLM cannot predict response structure, making downstream tool chaining impossible. Must document return type: {type: 'object', properties: {result: {type: 'string'}, ...}}.
Hardcoded Python interpreter path '/Users/dylangroos/browser-use-mcp/.venv/bin/python3' is not portable. Will fail on any system except the developer's machine. Use process.env.PYTHON_PATH or resolve from $PATH.
No error handling guidance for LLM. When Python script fails, error message is raw stderr. LLM cannot determine if error is retryable, user-fixable, or fatal. Add error classification and recovery hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | 2026-07-28+ | v2 |
Parameters 'url' and 'instructions' lack constraints. No format validation (URL must be valid HTTP/HTTPS), no length limits, no enum values. LLM can pass arbitrary strings. Add format: 'uri', minLength, maxLength, pattern constraints.