MCP server for Dyson Sphere Program factory optimization with real-time monitoring, bottleneck analysis, power grid evaluation, and logistics optimization
The server provides 6 analysis tools for a game factory optimization domain. Tool definitions are present with reasonable descriptions (160-280 chars, within the 34-392 baseline), and input schemas are declared with types and descriptions. However, there are significant gaps: (1) Output schemas are not documented, responses are inferred but not formally specified, forcing LLMs to guess what fields to expect; (2) Parameter descriptions lack specificity, 'planet_id' is described as 'Specific planet to analyze' but no guidance on valid range, null handling, or what 'all planets' means; (3) Error handling is absent, no guidance on what happens if a planet doesn't exist, connection fails, or real-time data is unavailable; (4) Tool composition is weak, multiple tools share 'require_realtime' and 'planet_id' parameters but there is no clarity on dependencies or fallback behavior; (5) Security: no visible rate limiting, validation, or permission gates despite the tools being READ_ONLY. The naming is clear and action-oriented (get_, analyze_), but lacks the specificity pattern to disambiguate similar tools. The schema structure is present but incomplete, all 6 tools declare input schemas with proper JSON types, but output structure is never specified.
Detect belt/logistics bottlenecks and flow inefficiencies. Args: planet_id: Specific planet to analyze item_filter: Only analyze belts carrying these items saturation_threshold: % of max throughput to flag (default 95%) require_realtime: Require real-time data (fail if game not connected) Returns: Saturated belts and logistics station bottlenecks
Evaluate power generation, consumption, and distribution efficiency. Args: planet_id: Specific planet to analyze (None = all planets) include_accumulator_cycles: Include charge/discharge pattern analysis require_realtime: Require real-time data (fail if game not connected) Returns: Power grid analysis with deficit warnings and recommendations
Identify production chain bottlenecks causing throughput limitations. Args: planet_id: Specific planet to analyze (None = all planets) target_item: Focus analysis on specific product (e.g., "green-circuit") time_window: Analysis window in seconds for real-time mode include_downstream: Trace impact to final products require_realtime: Require real-time data (fail if game not connected) Returns: Bottleneck analysis with root causes and recommendations
Attempt to connect to running game with DysonMCP plugin. Args: host: Game host address (default: localhost) port: WebSocket port (default: 8470) Returns: Connection result with status
No output schemas documented. All 6 tools lack formal specification of return types and fields. LLMs cannot determine what to extract from responses or plan chained calls without knowing the structure. Example: Does 'analyze_power_grid' return a list of planets or a single aggregated report? Does it include deficit_watts, is_balanced, warnings? Unknown.
Parameter descriptions lack actionable constraints. 'planet_id' is described as 'Specific planet to analyze (None = all planets)' but offers no valid range, format, or how to obtain valid IDs. Users/LLMs don't know if valid values are 1-100, or strings like 'vulcan_prime'. Same for 'target_item' in analyze_production_bottlenecks, no enum of valid items (green-circuit is mentioned as example but declared as example, violating pattern:constrained-input).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 55 | - | v1 |
Get current data source connection status. Returns detailed information about: - Current data source mode (realtime/save_file/disconnected) - WebSocket connection health - Available save files - Latency metrics
Retrieve current production state for all items. Args: planet_id: Specific planet (None = all planets) item_filter: Only return data for these items require_realtime: Require real-time data (fail if game not connected) Returns: Production, consumption, and storage for each item
No error recovery guidance. If a tool fails (e.g., game disconnected, invalid planet_id, real-time data unavailable), there is no specification of error codes, error messages, or recovery steps. LLMs will not know if they should retry, call connect_to_game, or ask the user for clarification. Pattern: recovery-guide requires explicit error categorization (retryable, user-fixable, fatal).
Parameter relationships undocumented. 'require_realtime' is used by 5 of 6 tools but there is no explanation of what 'real-time' means, when it's mandatory, or what fallback applies if false. The connection_status implies three modes (realtime/save_file/disconnected) but no tool explains which mode is required for each operation. This creates silent failures.
Tool composition incomplete. get_connection_status and connect_to_game set up preconditions but there is no clear dependency graph. Do all tools require get_connection_status to be called first? What if connect_to_game fails? Can analysis tools work offline with save_file mode? These are critical for agent planning but not stated.
Example values in parameter descriptions violate pattern:constrained-input. 'target_item: Focus analysis on specific product (e.g., "green-circuit")' provides an example without declaring it as an enum. LLMs will treat this example as the only valid value or try to guess other valid items. Should be 'enum: ["green-circuit", "red-circuit", "copper-ore", ...]' or similar.