Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@EPA Air Quality System (AQS) MCP Servershow me the ozone levels in Los Angeles for the past week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
EPA Air Quality System (AQS) MCP Server
An MCP (Model Context Protocol) server that provides access to the EPA Air Quality System API. This server enables Claude and other MCP clients to query air quality data, monitor information, and quality assurance data from the EPA's comprehensive air quality database.
Features
31 MCP tools covering all major AQS API endpoints
Rate limiting (5 seconds between requests) to comply with API guidelines
Date validation (same calendar year requirement)
Credential resolution from parameters or environment variables
Comprehensive error handling
Installation
Configuration
Getting an API Key
Use the
aqs_signuptool with your email addressCheck your email for the API key
Environment Variables (Optional)
Set these to avoid passing credentials with every request:
Claude Desktop Configuration
Add to your claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Available Tools
Authentication & Status
Tool | Description |
| Register for an API key (sent via email) |
| Check if the API is operational |
Reference Data (Lists)
Tool | Description |
| Get all US state FIPS codes |
| Get counties in a state |
| Get monitoring sites in a county |
| Get Core Based Statistical Areas |
| Get parameter classification groups |
| Get parameters within a class |
Monitor Queries
Tool | Description |
| Get monitors at a specific site |
| Get monitors in a county |
| Get monitors in a state |
| Get monitors in a lat/lon bounding box |
| Get monitors in a CBSA |
Sample Data
Tool | Description |
| Get raw sample data at a site |
| Get raw sample data for a county |
| Get raw sample data for a state |
| Get raw sample data in a bounding box |
| Get raw sample data for a CBSA |
Daily Summaries
Tool | Description |
| Daily summary at a site |
| Daily summary for a county |
| Daily summary for a state |
| Daily summary in a bounding box |
| Daily summary for a CBSA |
Quarterly Summaries
Tool | Description |
| Quarterly summary at a site |
| Quarterly summary for a county |
| Quarterly summary for a state |
Annual Summaries
Tool | Description |
| Annual summary at a site |
| Annual summary for a county |
| Annual summary for a state |
| Annual summary in a bounding box |
| Annual summary for a CBSA |
Common Parameter Codes
Code | Pollutant |
44201 | Ozone |
88101 | PM2.5 Local |
88502 | PM2.5 FRM/FEM |
81102 | PM10 |
42401 | SO2 |
42101 | CO |
42602 | NO2 |
Location Codes
Parameter | Format | Example | Description |
| 2-digit FIPS |
| California |
| 3-digit FIPS |
| Los Angeles County |
| 4-digit |
| Site number |
| 5-digit |
| LA Metro Area |
Date Format
All dates use YYYYMMDD format (e.g., 20240101 for January 1, 2024).
Important: Begin and end dates must be in the same calendar year.
Example Usage
Query daily ozone data for Los Angeles County in January 2024:
Testing
Test with the MCP Inspector:
API Constraints
Rate Limit: 10 requests per minute (server enforces 5-second delay)
Max Parameters: 5 parameter codes per request
Date Range: Must be within same calendar year
Data Volume: Large queries may timeout; use smaller date ranges
Development
License
MIT