Collection of Model Context Protocol server implementations showcasing B2B and consumer-integrated applications with various backends and frontends
This is a collection of example MCP servers demonstrating various patterns and integrations. The tool definitions are present but exhibit significant quality gaps: (1) Massive duplication, tools like list_tickets, get_ticket, create_ticket, update_ticket_status, delete_ticket, and search_tickets appear 2-3 times across different backend implementations with inconsistent parameter descriptions. (2) Parameter descriptions are sparse, many parameters lack descriptions (e.g., tools 10, 12, 14, 15 have parameters with no description text). (3) Output schemas are not documented, the code does not show return types or structured output guidance. (4) Error handling is minimal, no evidence of recovery guidance, error classification, or actionable error messages. (5) Naming is generally acceptable (verb_noun convention), but the duplication across multiple backend variants creates confusion rather than clarity. The tasklist tools (17-22) are simpler and slightly better documented. Overall, the repository appears to be a tutorial/reference collection rather than a production-grade single server, which explains the duplication and inconsistency.
Add a new task
Add a new task
Create a new ticket for the authenticated organization
Create a new ticket
Mark a task as deleted
Delete a task
Delete a ticket from the authenticated organization
Massive tool duplication across backend implementations. Tools like list_tickets, get_ticket, create_ticket, etc. are defined 2-3 times with inconsistent parameter descriptions. This violates composition principle (pattern:tool), each tool should do one thing, not be replicated with varying quality.
Parameter descriptions are missing or incomplete. Tools 10, 12, 14, 15 have parameters (ticket_id, status, organization_id, etc.) with no description text visible.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 35 | - | v1 |
Delete a ticket
Get information about the current organization
Get a specific organization by ID
Get a specific ticket by ID for the authenticated organization
Get a specific ticket by ID
Get statistics about tickets for the organization
Get statistics about tickets for the authenticated organization
List all tickets for the authenticated organization
List all tickets for the authenticated organization
Mark a task as complete
Mark a task as complete
Search tickets with filters
Search tickets with filters for the authenticated organization
Update the status of a ticket
Update the status of a ticket
Output schemas are not documented in any tool. The code does not show return type definitions, field structures, or what keys the LLM should expect in the response. This prevents LLMs from planning chained calls and extracting relevant data.
No error handling guidance. Tools have no documented recovery hints, error classification, or actionable error messages. Per pattern:recovery-guide, errors should tell the LLM what to do next (retry, ask user, or give up).
No pagination parameters documented for list tools. list_tickets and search_tickets may return unbounded results. Per pattern:paginated-result, list tools must accept page/offset and limit, and return a count or cursor.
Destructive operations (delete_ticket, deleteTask) lack confirmation/dry-run guidance. Per pattern:confirmation-request, irreversible ops should support confirmation to prevent catastrophic agent errors.
Tool naming inconsistency between backends. Sprint planner uses snake_case (list_tickets), task list uses camelCase (createTask, markTaskComplete). LLMs perform better with consistent naming conventions across a server.