fred-mcp-server
Open-source FRED MCP Server (Federal Reserve Economic Data)
Documentation
Federal Reserve Economic Data MCP Server
> [!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:
Amorelli, S. (2025). Federal Reserve Economic Data MCP (Model Context Protocol) Server (Version 1.0.2) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.14536707BibTeX:
@software{amorelli_2025_14536707,
author = {Amorelli, Stefano},
title = {{Federal Reserve Economic Data MCP (Model Context
Protocol) Server}},
month = jan,
year = 2025,
publisher = {Zenodo},
version = {1.0.2},
doi = {10.5281/zenodo.14536707},
url = {https://doi.org/10.5281/zenodo.14536707}
}Installation
Manual Installation
1. Clone the repository:
git clone https://github.com/stefanoamorelli/fred-mcp-server.git
cd fred-mcp-server2. Install dependencies:
pnpm install3. Build the project:
pnpm buildConfiguration
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:
{
"mcpServers": {
"FRED MCP Server": {
"command": "/usr/bin/node",
"args": [
"/fred-mcp-server/build/index.js"
],
"env": {
"FRED_API_KEY": ""
}
}
}
}Using Docker
You can also run the FRED MCP Server using Docker. Add this configuration to your `claude_desktop_config.json`:
{
"mcpServers": {
"fred-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"FRED_API_KEY=",
"stefanoamorelli/fred-mcp-server:latest"
],
"env": {}
}
}
}Replace `` with your actual FRED API key.
Using Streamable HTTP Transport
For network deployments, you can run the server with Streamable HTTP transport instead of stdio:
# Using CLI flag
node build/index.js --http
# Or using environment variable
TRANSPORT=http node build/index.js
# Custom port (default is 3000)
PORT=8080 node build/index.js --httpThe server will be available at `http://localhost:3000/mcp` (or your custom port).
Example client request:
# Initialize session
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"my-client","version":"1.0.0"}}}'
# Use the mcp-session-id from the response header for subsequent requests
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: " \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'A `GET /healthz` endpoint reports active sessions, cache statistics, and uptime for load balancers and orchestrators.
Configuration
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.
Available Tools
This MCP server provides three comprehensive tools to access all 800,000+ FRED® economic data series:
`fred_browse`
Description: 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 category
- `release_id` (optional): Release ID for browsing series within a release
- `limit` (optional): Maximum number of results (default: 50)
- `offset` (optional): Number of results to skip for pagination
- `order_by` (optional): Field to order results by
- `sort_order` (optional): "asc" or "desc"
`fred_search`
Description: Search for FRED economic data series by keywords, tags, or filters.
Parameters:
- `search_text` (optional): Text to search for in series titles and descriptions
- `search_type` (optional): "full_text" or "series_id"
- `tag_names` (optional): Comma-separated list of tag names to filter by
- `exclude_tag_names` (optional): Comma-separated list of tag names to exclude
- `limit` (optional): Maximum number of results (default: 25)
- `offset` (optional): Number of results to skip for pagination
- `order_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 by
`fred_get_series`
Description: 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 format
- `observation_end` (optional): End date in YYYY-MM-DD format
- `limit` (optional): Maximum number of observations
- `offset` (optional): Number of observations to skip
- `sort_order` (optional): "asc" or "desc"
- `units` (optional): Data transformation:
- "lin" (levels/no transformation)
- "chg" (change from previous period)
- "ch1" (change from year ago)
- "pch" (percent change)
- "pc1" (percent change from year ago)
- "pca" (compounded annual rate of change)
- "cch" (continuously compounded rate of change)
- "log" (natural log)
- `frequency` (optional): Frequency aggregation ("d", "w", "m", "q", "a")
- `aggregation_method` (optional): "avg" (average), "sum", or "eop" (end of period)
Example Usage
With these three tools, you can:
- Browse all economic categories and discover available data
- Search for specific indicators by keywords or tags
- Retrieve any of the 800,000+ series with custom transformations
- Access real-time economic data including GDP, unemployment, inflation, interest rates, and more
Social Media Shoutouts 📣
> [!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:
Scott G - "One of my breakthrough moments for 'getting' what is possible with Claude was this fred-mcp-server project..."
Scott G - Fintech & Data Analytics Professional |
John Shelburne - "The FRED MCP Server is a game-changer for financial analysis..."
John Shelburne - Fixed Income Fintech Leader with 20+ Years of Experience | Machine Learning & Cloud Computing Specialist |
Testing
See TESTING.md for more details.
# Run all tests
pnpm test
# Run specific tests
pnpm test:registryLicense ⚖️
This open-source project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). This means:
- You can use, modify, and distribute this software
- If you modify and distribute it, you must release your changes under AGPL-3.0
- If you run a modified version on a server, you must provide the source code to users
- See the LICENSE file for full details
For commercial licensing options or other licensing inquiries, please contact stefano@amorelli.tech.
© 2025 Stefano Amorelli
Frequently asked questions
What is fred-mcp-server?
fred-mcp-server is Open-source FRED MCP Server (Federal Reserve Economic Data)
How do I install fred-mcp-server?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is fred-mcp-server open source?
Yes — it is hosted on GitHub at https://github.com/stefanoamorelli/fred-mcp-server and has 117 stars.
Related MCP tools
这是一个金融领域相关的mcp,本项目通过集成 Tushare API 和 Binance API 为语言模型(如Claude)提供全面的实时金融数据访问能力,支持股票、基金、债券、宏观经济指标、稳定币、虚拟货币等多维度金融数据分析。其中也包含了金融数据查询、财经新闻查询、国家统计局数据查询等
MCP Aggregator, Orchestrator, Middleware, Gateway in one docker
A Model Context Protocol (MCP) server and CLI that provides tools for agent use when working on iOS and macOS projects.
The go-to web for your AI coding agent — local-first search, fetch, crawl & research over MCP. No API keys, no cloud, $0/query. Public beta.
MCP Aggregator, Orchestrator, Middleware, Gateway in one docker TypeScript-based implementation. Trusted by 1400+ developers.
A desktop MCP client designed as a tool unitary utility integration, accelerating AI adoption through the Model Context Protocol (MCP) and enabling cross-vendor LLM API orchestration.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP