MCP server for managing clients and generating reports with email delivery
McpServerly exhibits significant definition quality gaps. Tool names lack consistent verb-noun structure (GetClients vs SendReportWithMarkdown). Descriptions are present but generic and lack actionable context for LLM selection. Parameter descriptions are minimal or absent. No input schemas are visible in the provided code, tool definitions appear to rely on C# reflection via [McpServerTool] attributes rather than explicit JSON Schema registration. Output schemas are undocumented. Error handling is minimal (boolean returns, generic exceptions). The server uses STDIO transport, which is not remotely accessible and caps protocol readiness at 50.
Create clients reports
Returns list of current clients
Receives a report as a html string, and the body mail message, and sends it by email
Receives a report as a markdown string, and the body mail message, and sends it by email
No explicit JSON Schema visible for tool inputs. Tool definitions inferred from C# [McpServerTool] attributes; schema registration not shown in source code. Cannot verify parameter types, constraints, or descriptions are properly exposed to MCP clients.
Tool names lack consistent verb-noun structure. 'GetClients' uses PascalCase (non-standard for MCP); 'SendReportWithMarkdown' and 'SendReportWithHtml' are compound actions that should be split. 'GenerateReport' is vague, does it create, fetch, or transform?
Parameter descriptions are minimal or missing. SendReportWithMarkdown and SendReportWithHtml have basic param descriptions ('Report content in markdown format') but lack context on format constraints, size limits, or encoding. GenerateReport's 'html' parameter lacks any description.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 27 | <=2025-11-25 | v2 |
No output schema documentation. Tools return boolean (SendReportWithMarkdown, SendReportWithHtml) or List<Client> (GetClients) without documenting structure, field types, or pagination. LLMs cannot plan downstream calls or extract required data.
Error handling is minimal. SendReportWithMarkdown and SendReportWithHtml return bare boolean; exceptions are logged but not returned to the LLM with actionable recovery guidance. No error classification (retryable vs fatal) or user-fixable hints.