Model Context Protocol server that exposes ABP (ASP.NET Boilerplate) application services as MCP tools, enabling AI agents to invoke business logic through a declarative attribute-based system.
Critical gaps across all dimensions. Tool descriptions are mechanical and generic (avg ~30 chars, well below 194-char baseline). Input schemas present but severely underspecified: most parameters are bare 'object' types with no nested property definitions, violating the requirement that parameters have type definitions and descriptions. No parameter descriptions visible anywhere. No output schemas documented. Error handling exists (AbpMcpToolException) but is not integrated into tool definitions. Naming follows verb_noun pattern (Catalog_SearchTitles, Loan_CheckOut) but lacks clarity on what distinguishes similar tools (e.g., Catalog_SearchTitles vs Catalog_GetTitle). No evidence of pagination, result limits, or chaining IDs in responses. Security model relies on ABP's authorization but tool-level permission declarations are not visible in definitions.
Invoke BookAppService.CreateAsync.
Invoke BookAppService.GetListAsync.
Invoke CatalogAppService.AddEditionAsync.
Invoke CatalogAppService.AddTitleAsync.
Invoke CatalogAppService.GetTitleAsync.
Invoke CatalogAppService.ListAvailableEditionsAsync.
Invoke CatalogAppService.SearchTitlesAsync.
Invoke LoanAppService.CheckOutAsync.
Invoke LoanAppService.ListForMemberAsync.
All tool descriptions are mechanical fallbacks (~30 chars: 'Invoke CatalogAppService.SearchTitlesAsync.'). Baseline is 194 chars; descriptions under 20 chars score 0-20. LLMs cannot determine when to select tools or what they return.
Input schemas use bare 'object' type for complex parameters (e.g., 'filter', 'input') with no nested property definitions. Parameters lack type definitions and descriptions entirely. Violates schema completeness requirement.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2025-06-18+ | v2 |
Invoke LoanAppService.ListOverdueAsync.
Invoke LoanAppService.RenewAsync.
Invoke LoanAppService.ReturnAsync.
Invoke MemberAppService.GetAsync.
Invoke MemberAppService.ListAsync.
Invoke MemberAppService.RegisterAsync.
Invoke MemberAppService.ReinstateAsync.
Invoke MemberAppService.SuspendAsync.
No output schemas documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., does Catalog_SearchTitles return title_id for use in Catalog_GetTitle?). Breaks tool chaining.
No pagination parameters (limit, offset, page_size) visible on list tools (Catalog_SearchTitles, Loan_ListForMember, Member_List, Book_GetList). Large result sets will blow context windows.
Tool definitions do not declare required permissions (e.g., 'read:catalog', 'write:loans'). Audit trail and least-privilege configuration are not visible.