AWS Pricing MCP Server
The AWS Pricing MCP Server (Model Context Protocol) is an open-source tool developed by AWS Labs that enables AI assistants to access real-time AWS pricing data, providing cost estimates and insights through natural language queries. Currently at version 1.0.27, it receives frequent updates, often tied to the broader `awslabs/mcp` repository's release cadence, which can be daily or weekly with minor fixes and feature enhancements. [1, 2, 6, 8]
Common errors
-
error: Failed to spawn: `awslabs.aws-pricing-mcp-server` Caused by: program not found
cause On Windows, the `uv` tool (or other command runners) may fail to find executable scripts with dots in their names. This is a known issue with the script invocation mechanism.fixIn your client configuration, try modifying the script name to remove dots, for example, `awslabsaws-pricing-mcp-server` if your MCP client supports alias mapping. Alternatively, ensure `uv` is correctly configured and accessible in your PATH. [17] -
{ "error": true, "detail": "Error while validating the command: 'NoneType' object has no attribute 'members'" }cause This error can occur when an underlying AWS API operation expects input parameters but receives `None`, or when the MCP server's parser incorrectly handles an API call that genuinely has no input parameters (where `input_shape` is `None` in botocore models).fixEnsure that if your AI assistant is querying an AWS API that requires specific parameters, those parameters are correctly formulated. If the issue persists for operations with no expected input, report it to the `awslabs/mcp` GitHub repository, as it may indicate an internal parsing bug. [20] -
MCP server fails to load with a variety of errors when multiple roles are enabled (specifically for `core-mcp-server`).
cause When using the now-deprecated `core-mcp-server` with many `ENV` variables (roles) enabled, it can lead to dependency conflicts or resource exhaustion, causing the server to crash. Although `aws-pricing-mcp-server` is a standalone server, users migrating from `core-mcp-server` might encounter this.fixDo not use the `core-mcp-server`. Instead, configure `awslabs.aws-pricing-mcp-server` directly in your client's MCP configuration, enabling only the specific servers you need. This reduces the dependency footprint and avoids conflicts. [9, 22]
Warnings
- breaking Server Sent Events (SSE) support was removed in version 1.0.0 (May 26, 2025). This aligns with the Model Context Protocol specification's backwards compatibility guidelines and prepares for Streamable HTTP transport.
- gotcha The AWS Pricing MCP Server provides *estimated* pricing information based on AWS Pricing APIs and web pages. These estimates are intended for pre-deployment planning and may not reflect actual deployed cloud service expenses. AI assistants might also not always construct filters correctly or identify the absolute cheapest options.
- gotcha AWS credentials with `pricing:*` permissions are required for the server to access the AWS Pricing API. Without these, the server will not be able to fetch pricing data.
- deprecated The `awslabs.core-mcp-server`, which bundled many individual MCP servers, is deprecated. It had issues with massive dependency footprints, slow installs, and tool name conflicts. Users are now advised to configure individual MCP servers directly.
Install
-
pip install awslabs-aws-pricing-mcp-server -
uvx awslabs.aws-pricing-mcp-server@latest
Imports
- AWS Pricing MCP Server
The AWS Pricing MCP Server is designed to be run as a standalone process, typically invoked via a command-line utility like 'uvx' from an MCP-compatible client (e.g., Amazon Q CLI, Kiro, Cursor, VS Code). Direct programmatic import of its server components for end-user application logic is not the primary use case. Its entry point is usually a `main()` function executed as a script. [18, 19, 21]
Quickstart
{
"mcpServers": {
"awslabs.aws-pricing-mcp-server": {
"command": "uvx",
"args": [
"awslabs.aws-pricing-mcp-server@latest"
],
"env": {
"AWS_PROFILE": "your-aws-profile",
"FASTMCP_LOG_LEVEL": "ERROR"
}
}
}
}