Skip to content

cloudwatch-mcp-server: 88 parameters missing type definition in JSON Schema #3486

@blackwell-systems

Description

@blackwell-systems

Summary

88 parameters across 26 tools have no type field in their JSON Schema. profile_name is untyped on 25 tools, region on 24, max_items on 7, and limit on 3.

MCP spec reference

The MCP specification (2025-03-26) requires tools to define their input via JSON Schema. The JSON Schema spec (draft 2020-12, section 6.1.1) defines type as the primary mechanism for constraining instance values. Without it, conformant MCP clients cannot validate or coerce argument types before sending.

Impact

Without a type field, agents guess the type from the parameter name. For max_items and limit (integers), agents frequently send "7" (string) instead of 7 (integer). For region and profile_name (strings), the absence is less critical but still violates the schema contract.

When agents send the wrong type, the tool returns an error and the agent retries with a different guess. Each retry consumes tokens and latency. Across 88 untyped parameters on 26 tools, this is a systemic source of tool-use failures.

Affected parameters

Parameter Tools affected
profile_name 25
region 24
max_items 7
limit 3
account_identifiers 2
start_time, end_time 2 each
17 others 1 each

Additional findings (2 errors, 29 warnings)

  • get_metric_data: required parameters namespace and metric_name have no description
  • 4 tool pairs have 80-89% similar descriptions (agents may confuse them)
  • tools/list response is 107KB (~27,542 tokens per session)

Reproduction

pip install mcp-assert
cd src/cloudwatch-mcp-server && uv venv && uv pip install -e .
mcp-assert lint -server ".venv/bin/awslabs.cloudwatch-mcp-server"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    To triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions