A Next.js application that analyzes social media content (TikTok, Bilibili, WeChat, YouTube, Xiaohongshu) to extract user pain points using semantic clustering and AI analysis. Supports both basic and deep crawling with comment analysis, includes AI product suggestion generation.
This is a Next.js HTTP API server presenting 8 tools via REST endpoints, not a proper MCP server. Tool definitions are NOT formally registered with JSON Schema, they are inferred from POST/GET route handlers. Parameter schemas are partially visible in route.ts files but lack formal JSON Schema declarations, type definitions, and enumeration constraints. Descriptions exist but are often generic or incomplete. Most critically: this is NOT an MCP implementation. It's a custom Next.js API that would need to be wrapped or adapted to work with MCP clients. Tool naming is reasonable (analyze, get_job_status) but parameter documentation is inconsistent, and error handling lacks recovery guidance. No tool annotations, no structured output documentation, no pagination support visible.
Create an analysis job to extract pain points from social media content. Accepts keywords, data source selection, crawl depth configuration, and locale preference. Returns a job ID for async processing.
Create an AI product analysis job based on social media pain point data. Analyzes user feedback to suggest viable AI product opportunities.
Retrieve the status and results of an AI product analysis job, including product suggestions, target users, and AI capabilities.
Retrieve the current status and results of an analysis job. Returns progress, keywords analyzed, raw data (videos, comments, texts), clustered results, and any errors.
Check the health status of the analysis service, including job statistics and recent job IDs.
Test environment variable loading and connectivity for OpenAI/GLM and TikHub services.
Debug endpoint to test TikHub API connectivity and configuration. Performs multiple test scenarios including basic search and comment fetching.
NOT an MCP server, this is a Next.js HTTP API. Tools are not formally registered via MCP protocol; they are inferred from REST route handlers. To be usable by MCP clients, it must be wrapped in an MCP transport layer (stdio, HTTP SSE, etc.) with proper tool definitions.
No formal JSON Schema definitions visible. Parameter types, constraints (enums, min/max), and required fields are inferred from route handlers but not formally declared. For example, 'dataSource' accepts strings but has no enum constraint declared in schema; 'limit' is a number but lacks min/max bounds.
Parameter descriptions are vague or missing context. 'dataSource' is described as 'Data source to use: tikhub, tiktok, bilibili, wechat, youtube, xiaohongshu' but does not explain WHEN to pick which source or WHAT the differences are. LLMs cannot infer intent from enum lists alone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 34 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 25 | - | v1 |
Direct test of TikHub API connection with raw axios requests and service integration tests.
No output schema documented. The 'analyze' tool returns a 'jobId', but the description does not explain what fields are in the job object, what 'status' values exist, or how to interpret 'clustered results'. Agents cannot plan downstream calls without knowing the response structure.
No error recovery guidance. Error responses (e.g., 400, 404, 500) return generic messages like '缺少任务ID' (missing job ID) or '服务器内部错误' (server error). They do not tell the LLM what to do next: should it retry? Call a discovery tool? Ask the user?
Three 'test_*' tools (test_tikhub_api, test_env, test_tikhub_connection) are debug endpoints, not production tools. They do not belong in a tool manifest, they are internal utilities that confuse agents and clutter the interface. Remove them or gate them behind an internal-only flag.
No pagination support. The 'analyze' tool returns raw videos/comments/texts but does not show how to fetch results in pages or specify result limits. If a search returns 10,000 items, they are all returned, bloating the response and exhausting context.
Inconsistent parameter naming. 'maxVideos' uses camelCase, but other parameters use snake_case (no params named this way). The tiktokConfig object mixes enableComments, maxVideos, maxCommentsPerVideo, inconsistent naming makes it hard for agents to understand the parameter structure.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are marked READ_ONLY in the metadata but there are no formal annotations in the MCP sense. The 'analyze' and 'analyze_ai_product' tools create jobs asynchronously, this is safe to call repeatedly, but agents cannot infer idempotency from the description.
health_check returns 'job statistics and recent job IDs' but does not document the response schema. What does the job statistics object contain? What format are job IDs in? Without this, agents cannot use the data.