MCP Server that integrates with AWS Trusted Advisor to identify and provide recommendations for AWS resource optimization, security, and cost savings
Server has 4 tools with READ_ONLY risk classification. All tools have descriptions in Japanese (10-150 chars), but lack English descriptions and are below the 194-char baseline. Input schemas are present for 2/4 tools (low_utilization_ec2_instances, ebs_snapshots) with region/tag parameters; 2/4 tools (exposed_access_keys, s3_bucket_versioning) have empty input schemas. Parameter descriptions exist but are minimal. No output schemas documented. Tool names use underscores but lack clear verb-noun structure (e.g., 'low_utilization_ec2_instances' is descriptive but verbose). No error handling guidance, no pagination support, no idempotency markers. Code shows Trusted Advisor integration but tool definitions are inferred from config.ts rather than explicitly registered with full MCP schemas.
AWS Trusted Advisorを使用して最近バックアップされていないEBSボリュームを特定し、スナップショット作成の提案をします(実際に作成はしません)
AWS Trusted Advisorを使用して公開されたIAMアクセスキーを特定し、無効化の提案をします(実際に無効化はしません)
AWS Trusted Advisorを使用して低利用率のEC2インスタンスを特定し、停止の提案をします(実際に停止はしません)
AWS Trusted Advisorを使用してバージョニングが有効になっていないS3バケットを特定し、バージョニング有効化の提案をします(実際に有効化はしません)
Two tools (exposed_access_keys, s3_bucket_versioning) have empty input schemas ({}).
All tool descriptions are in Japanese only and under 150 chars. Descriptions lack WHAT/WHEN/WHY context. Baseline is 194 chars; these are 30-150 chars, below the 10-1024 recommended range for LLM clarity.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. Code shows complex nested responses (recommendations, summary, allInstances) but schema is invisible to the MCP client.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 33 | 2026-07-28+ | v2 |
Tool definitions appear inferred from config.ts rather than explicitly registered with full MCP tool schemas.
No error handling guidance. Code catches errors and returns {error: true, message, details} but does not classify as retryable/user-fixable/fatal or suggest recovery steps (e.g., 'Try search_users() first').