The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Fred MCP Server listing page.
[!IMPORTANT] Disclaimer: This open-source project is not affiliated with, sponsored by, or endorsed by the Federal Reserve or the Federal Reserve Bank of St. Louis. "FRED" is a registered trademark of the Federal Reserve Bank of St. Louis, used here for descriptive purposes only.
A Model Context Protocol (MCP) server providing universal access to all 800,000+ Federal Reserve Economic Data (FRED®) time series through three powerful tools.
https://github.com/user-attachments/assets/66c7f3ad-7b0e-4930-b1c5-a675a7eb1e09
[!TIP] If you use this project in your research or work, please cite it using the CITATION.cff file, or use the following citation:
APA Format:
BibTeX:
This server requires a FRED® API key. You can obtain one from the FRED® website.
Install the server, for example, on Claude Desktop, modify the claude_desktop_config.json file and add the following configuration:
You can also run the FRED MCP Server using Docker. Add this configuration to your claude_desktop_config.json:
Replace <your-key-here> with your actual FRED API key.
For network deployments, you can run the server with Streamable HTTP transport instead of stdio:
The server will be available at http://localhost:3000/mcp (or your custom port).
Example client request:
A GET /healthz endpoint reports active sessions, cache statistics, and uptime for load balancers and orchestrators.
All settings are environment variables with sensible defaults:
| Variable | Default | Description |
|---|---|---|
FRED_API_KEY | (required) | Your FRED API key |
FRED_API_TIMEOUT_MS | 30000 | Per-request timeout against the FRED API |
FRED_API_MAX_RETRIES | 3 | Retries for 429/5xx/network failures (exponential backoff with jitter, honors Retry-After) |
FRED_API_RETRY_BASE_DELAY_MS | 500 | Base delay for retry backoff |
FRED_RATE_LIMIT_PER_MINUTE | 120 | Client-side token bucket matching FRED's per-key quota |
FRED_CACHE_TTL_MS | 60000 | TTL for cached API responses (0 disables caching) |
FRED_CACHE_MAX_ENTRIES | 500 | LRU cache capacity |
TRANSPORT | stdio | Set to http for Streamable HTTP transport |
HOST | (all interfaces) | HTTP bind address |
PORT | 3000 | HTTP port |
MCP_MAX_SESSIONS | 100 | Maximum concurrent MCP sessions (new sessions get 503 beyond this) |
MCP_SESSION_TTL_MS | 1800000 | Idle time before a session is reaped |
MCP_SESSION_SWEEP_INTERVAL_MS | 60000 | How often the idle-session reaper runs |
MCP_BODY_LIMIT | 1mb | Maximum accepted JSON body size |
LOG_LEVEL | info | error, warn, info, or debug (logs go to stderr) |
Identical concurrent requests are coalesced into a single upstream call, and successful responses are cached, so multiple sessions share one rate-limit budget efficiently.
This MCP server provides three comprehensive tools to access all 800,000+ FRED® economic data series:
fred_browseDescription: Browse FRED's complete catalog through categories, releases, or sources.
Parameters:
browse_type (required): Type of browsing - "categories", "releases", "sources", "category_series", "release_series"category_id (optional): Category ID for browsing subcategories or series within a categoryrelease_id (optional): Release ID for browsing series within a releaselimit (optional): Maximum number of results (default: 50)offset (optional): Number of results to skip for paginationorder_by (optional): Field to order results bysort_order (optional): "asc" or "desc"fred_searchDescription: Search for FRED economic data series by keywords, tags, or filters.
Parameters:
search_text (optional): Text to search for in series titles and descriptionssearch_type (optional): "full_text" or "series_id"tag_names (optional): Comma-separated list of tag names to filter byexclude_tag_names (optional): Comma-separated list of tag names to excludelimit (optional): Maximum number of results (default: 25)offset (optional): Number of results to skip for paginationorder_by (optional): Field to order by (e.g., "popularity", "last_updated")sort_order (optional): "asc" or "desc"filter_variable (optional): Filter by "frequency", "units", or "seasonal_adjustment"filter_value (optional): Value to filter the variable byfred_get_seriesDescription: Retrieve data for any FRED series by its ID with support for transformations and date ranges.
Parameters:
series_id (required): The FRED series ID (e.g., "GDP", "UNRATE", "CPIAUCSL")observation_start (optional): Start date in YYYY-MM-DD formatobservation_end (optional): End date in YYYY-MM-DD formatlimit (optional): Maximum number of observationsoffset (optional): Number of observations to skipsort_order (optional): "asc" or "desc"units (optional): Data transformation:
frequency (optional): Frequency aggregation ("d", "w", "m", "q", "a")aggregation_method (optional): "avg" (average), "sum", or "eop" (end of period)With these three tools, you can:
[!NOTE] Want to be featured? Tag Stefano Amorelli on LinkedIn or @stefanoamorelli on X in your post about using FRED MCP Server, or submit a PR to add your shoutout!
We're grateful for the community support! Here are some mentions from amazing people:
See TESTING.md for more details.
This open-source project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). This means:
For commercial licensing options or other licensing inquiries, please contact stefano@amorelli.tech.
© 2025 Stefano Amorelli