trackmcp
Back to directory
stefanoamorelli

fred-mcp-server

View on GitHub

Open-source FRED MCP Server (Federal Reserve Economic Data)

117 stars TypeScriptOthers Updated Aug 24, 2026
financegenaillmmcp-serverdatadata-analysis-projectfinancial-analysismcpmodel-context-protocolmodel-context-protocol-server

Documentation

Federal Reserve Economic Data MCP Server

npm version
DOI
License: AGPL v3
Tests
Documentation

> [!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:

code
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.14536707

BibTeX:

bibtex
@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:

bash
git clone https://github.com/stefanoamorelli/fred-mcp-server.git
    cd fred-mcp-server

2. Install dependencies:

bash
pnpm install

3. Build the project:

bash
pnpm build

Configuration

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:

json
{
  "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`:

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:

bash
# 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 --http

The server will be available at `http://localhost:3000/mcp` (or your custom port).

Example client request:

bash
# 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:

VariableDefaultDescription
`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"

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.

bash
# Run all tests
pnpm test

# Run specific tests
pnpm test:registry

License ⚖️

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

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP