A human-in-the-loop MCP server for browsing JD.com and Taobao/Tmall with Playwright.
Server has 16 tools with explicit definitions, descriptions, and parameter schemas. Naming follows verb_noun convention (browser_start, search_products, etc.). Descriptions are present and moderately detailed (avg ~120 chars), explaining WHAT each tool does and key constraints. However, parameter descriptions are inconsistent: some params lack descriptions entirely (e.g., browser_start has empty input {}), and several critical parameters have minimal guidance. Output schemas are not formally documented, responses are inferred from code. Error handling is present but lacks recovery guidance. Security constraints are well-articulated in tool descriptions (e.g., 'defaults only read', 'blocks purchase/payment'), but no formal permission gates or audit logging visible. Composition is sound: tools chain logically (search_products → get_product_detail). Major gaps: no pagination support despite potentially large result sets, no per-item error reporting for batch operations, and no documented output schema structure.
关闭浏览器;持久化登录资料仍保留在本地独立目录。
启动一个带独立持久化资料目录的可见 Chromium 浏览器。
查看浏览器是否运行、当前页面和资料目录。
根据页面与 Cookie 名称判断京东或淘宝是否可能已登录,不返回 Cookie 值。
点击 list_page_elements 返回的 ref。默认阻止购买、结算、支付、购物车、收藏、关注、删除、地址变更等动作。
对当前京东/淘宝/天猫页面同时执行通用快照和商品字段提取。
打开商品页并提取详情;硬约束返回产品链接、产品参数、最多 5 条好评、最多 2 条差评及 status。
Empty input schemas for 4 tools (browser_start, browser_status, go_back, browser_close). These tools cannot be validated by LLMs or clients.
Output schemas are not formally documented. Code shows tools return dict[str, Any], but LLMs cannot see the structure of 'success', 'message', 'results', 'product_url', 'product_parameters', 'good_reviews', 'bad_reviews', 'status' fields. This forces LLMs to infer output structure and risks misuse of returned data.
No pagination support despite search_products accepting max_results up to environment-variable limit. Large result sets will blow context window. Missing limit parameter documentation and no next_cursor or total_count in response structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
返回浏览器历史中的上一页。
列出当前页面可见的链接、按钮、输入框等,并分配短期 ref。
打开京东或淘宝登录页,由用户在浏览器窗口中手动登录。
打开京东、淘宝或天猫 URL。其他域名会被拒绝。
获取当前页面可见文本、链接、表单和基础元数据。
向上或向下滚动当前页面。
搜索京东或淘宝商品并返回结构化列表;默认逐个补详情硬约束字段。
将当前页面截图保存到本地 artifacts 目录。
向当前页面的普通输入框输入文字,可选择按回车。密码、验证码、银行卡、身份证和支付认证字段会被拒绝。
Error handling lacks recovery guidance. Code shows SafetyError exceptions (ensure_click_allowed, ensure_typing_allowed) but no visible error response structure telling LLMs what to do next (retry, ask user, abort). Errors should categorize as retryable vs user-fixable.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible in FastMCP registration. Descriptions mention 'read-only' and 'write' risk labels, but these are not machine-parseable tool metadata. LLMs cannot reliably infer which tools are safe to retry.