MCP server for matching creators based on audience demographics and niche targeting across multiple platforms
This server has severe definition quality issues. The single tool `execute_skill_action` has a reasonable schema with typed parameters and a basic description, but the tool itself is fundamentally broken as an MCP implementation. The schema shows three parameters (target_niche_topic, min_followers, target_geo_distribution) with types and defaults, but critical gaps exist: (1) the description is minimal (59 chars) and lacks context about when/why to use the tool or what the business outcome is; (2) there is NO documented output schema, the mcp_server.py only prints a static JSON response with 'supported_tools' but never actually implements tool execution or returns results; (3) parameter descriptions are present but generic ('Target niche topic for creator matching') without guidance on valid values, constraints, or dependencies; (4) the actual implementation in client.py is a mock that returns hardcoded results and never validates inputs; (5) no error handling exists, the server will crash on invalid input with no recovery guidance; (6) the tool combines multiple concerns (niche matching + follower filtering + geo distribution) which violates single-responsibility principle. The code shows the tool is non-functional as an MCP server, mcp_server.py does not implement the MCP protocol's tool execution flow, it only announces capability but cannot actually execute tools.
Execute creator audience matching skill action
Non-functional MCP implementation: mcp_server.py prints a static capability announcement but does NOT implement the MCP protocol's tool invocation handler. The server cannot actually execute tools when called, it only announces 'supported_tools' without any request/response handling loop.
Tool description is too generic and lacks actionable context. '59 character description does not explain what 'creator audience matching' means, when to invoke this tool vs other tools, what the business outcome is, or how to interpret the results. Baseline is 50-200 chars with WHAT, WHEN, WHY.
Output schema is completely undocumented. The tool returns 'matching_session_id', 'creators_discovered_count', 'top_tier_overlap_similarity_pct', 'avg_engagement_rate_pct', 'creator_roster_manifest_url' in client.py but the MCP server definition provides zero documentation of this structure. LLMs cannot plan downstream tool calls without knowing the response shape.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 30 | 2026-07-28+ | v2 |
Parameter 'target_niche_topic' lacks valid value constraints. The description mentions 'e.g. SUSTAINABLE_CLEAN_BEAUTY, ORGANIC_FITNESS_SUPPLEMENTS' but these are examples, not an enum. LLMs will hallucinate invalid niche topics. Should declare as enum with all valid options.
Parameter 'target_geo_distribution' is defined as object type but lacks schema constraints. What properties are valid? Are country codes required to be ISO 3166-1 alpha-2? Do percentages sum to 1.0 or 100? Must they add to exactly 100 or can they be partial? No validation rules provided.
No error handling or recovery guidance. The implementation (client.py) always returns hardcoded success. There is no code to handle: invalid niche topics, invalid geo codes, impossible follower thresholds, or API failures. If this tool calls external APIs, errors must guide the LLM to retry or ask the user.
Tool combines multiple responsibilities: selecting a niche, filtering by follower count, and applying geo distribution. Per pattern:tool, each tool should do one thing. This should be split into (1) search_creators_by_niche, (2) filter_by_follower_count, (3) match_geo_distribution, or combine them with clearer semantics like 'find_creators_matching_audience_profile'.
Naming violation: 'execute_skill_action' is generic and does not start with a verb that conveys the actual intent. 'execute_' is a process verb; 'skill_action' is vague. Should be 'find_creators_by_audience', 'match_creator_lookalikes', or 'search_creators_by_niche_and_geo' to be self-documenting.