MCP server for the Bilibili API - provides tools to search videos, get user information, and retrieve video details from Bilibili
The server defines 3 tools with basic but incomplete quality. All tools have names following verb_noun conventions (search_videos, get_user_info, get_video_info) and descriptions present. However, parameter descriptions are sparse, most lack context about what values are valid or how they're used. Schema definitions exist and are properly typed, but output schemas are not documented anywhere in the visible code. Error handling is minimal; the common api.ts file throws generic errors without recovery guidance. The tool definitions are visible and explicit (not inferred), but lack the polish expected for production use. Naming is clear and appropriate for the domain.
Get information about a Bilibili user
Get detailed information about a Bilibili video
Search for videos on Bilibili
Output schemas not documented. Users cannot know what fields are returned by each tool, forcing them to reason about API responses or trial-and-error integration.
Parameter descriptions insufficient. 'keyword' for search_videos lacks context (e.g., max length, language support, special character handling). 'mid' for get_user_info and 'bvid' for get_video_info have minimal explanation of expected format.
Error handling is generic. apiRequest() throws raw error messages ('API request failed: 403 Forbidden', 'API returned error: -412') without guidance on recovery. LLMs cannot determine if errors are retryable or user-fixable.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 46 | - | v1 |
No documentation of what search_videos returns. The SearchResult type is imported but never defined in visible code. Agents cannot plan downstream tool composition.
Tool descriptions do not explain when to use each tool relative to others. Why call get_video_info vs search_videos? Ambiguity forces LLM to guess.
get_user_info description is 34 characters ('Get information about a Bilibili user'), below the baseline of 194 chars for descriptive parameter guidance. No mention of what fields are returned, how to interpret them, or whether live status requires special handling.