# AWS Billing MCP Server
A Model Context Protocol (MCP) server that provides AWS billing and cost analysis tools for Claude Desktop.
## Features
- π **Cost Analysis** - Analyze AWS costs with flexible filtering
- π **Usage Comparison** - Compare usage between different time periods
- π **Trend Analysis** - Identify cost trends over time
- π¨ **Anomaly Detection** - Detect unusual cost patterns
- π **Cost Ranking** - Identify top cost drivers by service, region, etc.
## Quick Setup
1. **Install dependencies and build:**
```bash
npm install
npm run build
```
2. **Configure Claude Desktop:**
```bash
cp claude-desktop-config-template.json claude-desktop-config.json
# Edit claude-desktop-config.json with your project path and AWS credentials
```
3. **Copy the generated configuration to Claude Desktop:**
- Open `claude-desktop-config.json`
- Copy its contents to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
- Restart Claude Desktop
4. **Test it:**
Ask Claude: "Can you analyze my AWS costs for the last month?"
## Configuration
### Simplified Claude Desktop Setup
The server is designed for Claude Desktop personal use with direct environment variable access:
**Mock Data (Default)**: Works out of the box - no AWS credentials needed for testing.
**Real AWS Data**: Add your credentials directly to the Claude Desktop configuration:
```json
{
"mcpServers": {
"aws-billing-mcp-server": {
"command": "node",
"args": ["/path/to/your/project/start-mcp-server.js"],
"env": {
"AUTH_ENABLED": "false",
"LOG_LEVEL": "info",
"AWS_ACCESS_KEY_ID": "your-access-key-id",
"AWS_SECRET_ACCESS_KEY": "your-secret-access-key",
"AWS_REGION": "us-east-1"
}
}
}
}
```
**Key Benefits:**
- β
No database credential storage - uses environment variables directly
- β
No encryption/decryption complexity
- β
Simple and secure for personal Claude Desktop use
- β
Automatic fallback to mock data if credentials not provided
**Required AWS Permissions:**
- `ce:GetCostAndUsage`
- `ce:GetUsageReport`
- `ce:ListCostCategoryDefinitions`
## Available Tools
| Tool | Description | Example Usage |
|------|-------------|---------------|
| `analyze_costs` | Analyze costs with filtering | "Show me EC2 costs for last month" |
| `compare_usage` | Compare periods | "Compare this month to last month" |
| `analyze_trends` | Trend analysis | "What are the cost trends for S3?" |
| `detect_anomalies` | Find anomalies | "Detect any cost anomalies" |
| `rank_costs` | Top cost drivers | "What are my biggest cost drivers?" |
## Testing
- **Run unit tests:** `npm test`
- **Check Claude Desktop logs:** Look for startup messages in Claude's MCP server logs
- **Test with Claude:** Ask "Can you analyze my AWS costs for the last month?"
## Files
- `src/` - TypeScript source code
- `dist/` - Compiled JavaScript output
- `data/` - SQLite database storage
- `logs/` - Application logs
- `start-mcp-server.js` - Server startup script
- `claude-desktop-config-template.json` - Configuration template
- `DEPLOYMENT.md` - Detailed deployment guide
## Architecture
- **MCP Server** - Handles Claude Desktop communication via stdio
- **Billing Client** - AWS Cost Explorer API integration (simplified for environment variables)
- **Billing Analyzer** - Cost analysis algorithms
- **Auth Manager** - Google SSO authentication (disabled by default for Claude Desktop)
- **Database** - SQLite for caching billing data only (no credential storage)
## Development
```bash
npm run dev # Development mode with hot reload
npm test # Run test suite
npm run lint # Code linting
npm run format # Code formatting
```
## Security
- Authentication disabled by default for local development
- AWS credentials stored in Claude Desktop configuration
- Supports Google SSO for production deployments
- All data cached locally in SQLite database
## Support
For issues or questions:
1. Check the health endpoint: `http://localhost:37291/health`
2. Review logs in the console output
3. Test MCP protocol with `node test-mcp-tools.js`
4. See `DEPLOYMENT.md` for detailed troubleshooting