MCP server for MES workflow configuration and visualization
The MES Workflow MCP server provides 18 tools with basic schemas and descriptions, but falls short of production quality standards. While tool naming follows verb_noun conventions (get_, list_, search_, record_, generate_, export_, validate_), descriptions are minimal (averaging ~80-100 chars, well below the 194-char baseline) and lack the actionability required for LLM-optimal tool selection. Input schemas are present and properly typed, but parameter descriptions are sparse or generic. Output schemas are completely undocumented, the server provides no guidance on what fields agents should expect from responses, making downstream tool chaining and data extraction error-prone. Error handling is absent; there are no recovery guides, categorization of errors as retryable vs fatal, or actionable error messages. The tools appear well-designed for domain logic (workflow stages, decisions, task dependencies), but the interface is not optimized for LLM interaction.
Compare workflows between two clients to see differences in decisions and resulting tasks
Export a client's workflow as a formatted document (JSON, Markdown, or CSV)
Export a client's generated workflow as an image file (PNG, SVG, or PDF)
Generate a customized workflow for a client based on their recorded decisions
Get detailed information about a specific decision point including outcomes and affected tasks
Get all possible outcomes for a specific decision
Get all tasks and information for a specific workflow stage
Output schemas completely undocumented. No tool documents what fields it returns, their types, or their purpose. LLMs cannot predict response structure, preventing confident downstream tool chaining and data extraction.
Descriptions are generic and below 20 - 50 characters on most tools. E.g., 'Get all tasks in the workflow with basic information' (48 chars) does not explain WHEN to use this tool instead of search_tasks() or get_stage_details(). Baseline for A+ tools is 194 chars; these average ~80 - 100 chars with minimal context.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 47 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Get the complete dependency chain for a task (predecessors and successors)
Get detailed information about a specific task including type, actor, and dependencies
Get the raw Mermaid diagram code for a client's workflow
Get overview of the complete MES workflow with summary statistics
List all decision points in the workflow
List all tasks in the workflow with basic information
List all recorded decisions for a specific client
Record a decision outcome for a client, affecting the generated workflow
Reset all decisions for a client to clear previous selections
Search for tasks by name, type, actor, or other attributes
Validate a client's workflow for consistency and detect any issues or missing decisions
No error handling or recovery guidance. When a tool fails (e.g., client not found, invalid decision ID), the server does not indicate whether the error is retryable, user-fixable, or fatal. No suggestions for recovery (e.g., 'Try search_tasks() first to find valid task IDs').
Pagination and result limits not specified. list_all_tasks and list_all_decisions have no documented limit or pagination mechanism. Large result sets will bloat context windows and cause token exhaustion.
Parameter descriptions are minimal or missing context. E.g., 'The client name' does not specify format (alphanumeric, spaces allowed?), max length, or whether names are case-sensitive. 'filter_by enum' lacks explanation of when to use each filter option.
No confirmation or dry-run pattern for destructive tools. reset_client_decisions and record_decision (which modifies state) offer no confirmation step or preview. Agents can accidentally wipe all decisions or record the wrong outcome without recourse.
Tool composition gaps. To 'send workflow to client', an agent must call generate_workflow → export_workflow_document → (implied send/download). This multi-step sequence wastes tokens and introduces failure points. A composite send_workflow_to_client tool would reduce complexity.
Parameter naming ambiguity. 'decision_id' and 'decision_outcome' are used across multiple tools but never defined. What format is decision_id (e.g., 'D-001', UUID)? What are valid decision_outcome values? This forces LLMs to guess or make discovery calls.