AWS Cost MCP server implementation focused on querying Cost and Usage Report data through Athena.
AWS Cost MCP server has basic tool definitions with schemas and descriptions present, but significant quality gaps limit production readiness. All 8 tools have descriptions (10-60 chars, mostly short) and input schemas with type definitions. However, descriptions are generic and lack LLM-optimized guidance on WHEN to use each tool or HOW to chain them. Parameter descriptions are minimal (e.g., 'The SQL query statements to be executed' for query_string). No output schemas documented. Error handling returns raw exception strings instead of actionable recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Naming is verb-prefixed and clear (athena_start_query_execution, athena_get_query_results), following verb_noun convention. No security issues detected (no secrets in params). Composition is reasonable, tools are single-purpose and chainable (start → get_execution → get_results). However, lack of pagination guidance, missing output field documentation, and generic error messages significantly reduce LLM usability.
Gets information about a single execution of a query.
Returns the results of a query execution specified by query execution ID.
Lists the databases in the specified data catalog.
Returns a list of query execution IDs.
Lists the tables in the specified data catalog database.
Runs a query and optionally waits for its completion.
Descriptions are too short (25-40 chars) and lack LLM-optimized guidance. Missing WHEN to use each tool, prerequisites, and chaining hints. E.g., 'Gets information about a single execution of a query' does not explain that this tool should be called after start_query_execution to poll status.
No output schemas documented. LLMs cannot infer what fields to expect from responses (e.g., does get_query_execution return status, submission_time, result_location?). This forces agents to guess and risks failed downstream tool calls.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | <=2025-11-25 | v2 |
Starts a query execution using Athena.
Stops a query execution.
Error handling returns raw exception strings ('Error: {str(e)}') instead of actionable recovery guidance. LLMs cannot determine if an error is retryable, user-fixable, or fatal. No error classification or suggested next steps.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe read-only tools from destructive ones. athena_stop_query_execution and athena_start_query_execution should be marked destructive/write; read tools should be marked readOnly.
Parameter descriptions lack format/constraint guidance. E.g., 'max_results' has no min/max bounds; 'poll_interval' and 'max_wait_time' lack units or ranges. LLMs may pass invalid values (negative intervals, unreasonable timeouts).