MCP server for Lanhu (蓝湖) design collaboration platform — lets AI assistants read designs, PRDs and slices.
Three tools with reasonable naming and descriptions, but schemas lack depth and parameter documentation is inconsistent. lanhu_design has the most comprehensive schema with enums and array support; lanhu_page and lanhu_resolve_invite are simpler. All tools are READ_ONLY (good security posture). Descriptions are adequate (100-200 chars) but lack actionable context for LLM selection. Parameter descriptions exist but are sparse, e.g., 'Lanhu project URL' doesn't explain format expectations or when to use stage vs detailDetach. No output schemas documented. Error handling and recovery guidance absent.
Unified Lanhu design tool. Supports listing, analyzing, extracting tokens, and getting slices. Modes: - list: List all designs in the project - analyze: Full design analysis with HTML+CSS, tokens, layout (default) - slices: Extract slice/asset info for download - tokens: Extract design tokens only (fonts, colors, shadows, etc.) For detailDetach URLs (contains image_id), pass design_names='all'.
Analyze Lanhu prototype pages. Supports listing pages, analyzing page content, and extracting text.
Resolve a Lanhu invite URL to get project and team information
No output schemas documented. LLMs cannot plan downstream operations or extract required fields without knowing response structure.
Parameter descriptions lack format/constraint details. 'Lanhu project URL' doesn't explain stage vs detailDetach formats, required query params, or when each applies. LLMs will guess.
lanhu_design 'include' parameter accepts array but lacks guidance on valid combinations or defaults. Description mentions 'Default: [html, tokens]' but schema doesn't enforce it.
No error recovery guidance. Tools lack descriptions of failure modes (invalid URL, auth failure, rate limit) and what LLM should do next.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2025-06-18+ | v2 |
lanhu_design 'design_names' parameter accepts string|array but description doesn't clarify: is it a name, ID, or index? What happens if multiple match?