An MCP server implementation that bridges Dify applications (chat and workflow) with MCP clients via HTTP endpoints supporting SSE, WebSocket messages, and HTTP POST protocols
Single tool 'dify_app_tool' has a basic description (89 chars) and partial input schema. The schema defines 'query' and 'arguments' parameters with types and descriptions, meeting minimum requirements. However, the tool lacks output schema documentation, error handling guidance, and parameter constraints. The description does not explain when to use this tool vs alternatives, what the return format is, or how to handle failures. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present. The naming 'dify_app_tool' is generic and does not follow verb_noun convention (should be 'invoke_dify_app' or 'call_dify_app'). Overall, this is a minimal, underdeveloped tool definition.
Invokes a Dify application (chat or workflow) with provided arguments and returns the result as text
Tool name 'dify_app_tool' is generic and does not follow verb_noun convention. Should be 'invoke_dify_app' or 'call_dify_app' to clearly signal the action.
No output schema documented. LLMs cannot plan downstream operations or extract fields from the response. Must document return type (e.g., {type: 'text', text: string}).
Description (89 chars) lacks context on WHEN to use this tool, WHAT it returns, and HOW to handle errors. Should explain: invokes Dify chat/workflow apps, returns text result, fails if app_id invalid or timeout occurs.
Parameter 'arguments' is typed as 'object' with no constraints, enum, or format guidance. LLMs cannot infer valid keys or structure. Must document expected argument schema or reference Dify app input spec.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 29 | <=2025-11-25 | v2 |
No error handling guidance. Tool can fail (invalid app_id, timeout, malformed arguments) but description does not explain recovery steps or error categories (retryable vs fatal).