AWS Labs CloudWatch AppSignals MCP Server
raw JSON → 0.1.20 verified Mon Apr 27 auth: no python
An AWS Labs Model Context Protocol (MCP) server for AWS Application Signals. Version 0.1.20 requires Python >=3.10. Allows AI agents to query CloudWatch Application Signals (traces, metrics) via MCP. Rapid early development; no stable API yet.
pip install awslabs-cloudwatch-appsignals-mcp-server Common errors
error ModuleNotFoundError: No module named 'awslabs_cloudwatch_appsignals_mcp_server' ↓
cause Old import path no longer valid after version 0.1.10.
fix
Use
from cloudwatch_appsignals_mcp_server import AppSignalsMCPServer. error botocore.exceptions.NoCredentialsError: Unable to locate credentials ↓
cause AWS credentials not provided and not found in environment.
fix
Set AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and AWS_REGION environment variables, or pass them to the constructor.
Warnings
gotcha AWS credentials must be provided explicitly or via environment variables; the server does not automatically pick up default credential chains in all contexts. ↓
fix Set AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and AWS_REGION environment variables before instantiating the server.
breaking The import path changed in 0.1.10 from `awslabs_cloudwatch_appsignals_mcp_server` to `cloudwatch_appsignals_mcp_server`. ↓
fix Use `from cloudwatch_appsignals_mcp_server import AppSignalsMCPServer`.
deprecated The `run_mcp_server` function is deprecated in favor of `AppSignalsMCPServer.run()` in version 0.1.15+. ↓
fix Replace `run_mcp_server()` with `AppSignalsMCPServer.run()`.
Install
uvx awslabs-cloudwatch-appsignals-mcp-server Imports
- AppSignalsMCPServer wrong
from awslabs_cloudwatch_appsignals_mcp_server import AppSignalsMCPServercorrectfrom cloudwatch_appsignals_mcp_server import AppSignalsMCPServer - run_mcp_server
from cloudwatch_appsignals_mcp_server import run_mcp_server
Quickstart
import os
from cloudwatch_appsignals_mcp_server import AppSignalsMCPServer
server = AppSignalsMCPServer(
region=os.environ.get('AWS_REGION', 'us-east-1'),
access_key_id=os.environ.get('AWS_ACCESS_KEY_ID', ''),
secret_access_key=os.environ.get('AWS_SECRET_ACCESS_KEY', '')
)
async def main():
async with server:
result = await server.query_app_signals(query="SELECT * FROM traces LIMIT 5")
print(result)
import asyncio
asyncio.run(main())