ferric-fred-mcp
The ferric-fred-mcp server provides comprehensive access to the Federal Reserve Economic Data (FRED) service, exposing tools for querying economic data series, categories, releases, sources, and tags.
Series & Observations
Search for series by text with ordering, sorting, and result limits
Get series metadata (title, frequency, units, seasonal adjustment, popularity) by series ID
Fetch observations (date/value pairs) with optional date range, units transformation (e.g., percent change), frequency aggregation, sort order, and limit
Get recently updated series filtered by class (macro/regional) or a time window
Get vintage dates — the revision history of a series
Get categories, release, and tags associated with a specific series
Category Tree
Get a category by ID, list its children, and find related categories (cross-tree links)
List series in a category with ordering and pagination
List tag facets for a category's series and discover co-occurring tags
Releases
List all data releases and browse the release calendar across all releases
Get a specific release, its series, sources, publication dates, and nested table tree
List tag facets for a release's series and discover co-occurring tags within a release
Sources
List all data sources (e.g., Bureau of Economic Analysis), get source details, and list releases produced by a source
Tags
Browse or search the tag vocabulary (keywords like "gdp", "quarterly", "nsa")
Discover co-occurring tags globally or scoped to categories, releases, or search results
List series carrying specified tags for faceted discovery
Get tag facets for full-text series searches
All listing and search operations support pagination, sorting, and limiting results for efficient data access.
ferric-fred
A strongly-typed Rust client for FRED — the Federal Reserve Economic Data service from the Federal Reserve Bank of St. Louis — plus a CLI (with TUI charts) and an MCP server built on top of it.
ferric(iron oxide → rust) +FRED. Iron-clad, typed access to economic data.
Workspace
A Cargo workspace of three crates — each with its own README (the crates.io / docs.rs landing page) that carries the full usage detail:
Crate | Binary | What it is | Details |
| — | Strongly-typed async FRED client | |
|
| Command-line tool with | |
|
| MCP server exposing FRED to MCP clients |
Published versions (these badges are the source of truth — the crates version independently, so they can drift out of lockstep):
Consumers depend on the library by workspace path, so a breaking change in the library cannot compile-pass its consumers without updating them — that compile-time coupling is the primary "stay in sync" guarantee (versions are managed on top; see the ADRs).
Related MCP server: FRED MCP Server
What it covers
The library wraps all of FRED's read endpoints — series and observations
(including ALFRED point-in-time / vintage data via a real-time window),
search, categories, releases (including the nested release-table tree, with
optional inline observation values), sources,
and tags — plus the GeoFRED / Maps API (regional data and the geographic
shape files to map it, ADR-0025) — behind
ergonomic builders, with newtype identifiers, typed enums for
FRED's closed value sets, a non-panicking error taxonomy, and auto-pagination
(Paginate::send_all walks an endpoint to exhaustion, Paginate::stream yields
lazily; --all on the CLI). See ADR-0020 and
ADR-0021.
GeoFRED support spans the library, CLI (fred geofred), and MCP
(get_regional_data, get_series_data, get_series_group) layers. The one
exception is the geographic shapes/file endpoint, which is library/CLI-only —
a large projected-GeoJSON blob is poor ergonomics for an MCP tool caller
(ADR-0025).
Pick an entry point:
Library —
cargo add ferric-fred; typed async access from your own code. See the crate README and docs.rs.CLI (
fred) —cargo install ferric-fred-cli; search, show metadata, print or chart observations in the terminal, browse categories, releases, sources, and tags, and pull GeoFRED regional data and map shapes (fred geofred). See the crate README orfred <command> --help.MCP server (
fred-mcp) —cargo install ferric-fred-mcp; 34 tools over stdio covering the same read surface, for MCP-capable clients (ADR-0010). Each tool declares input and output schemas plus behavioural annotations (ADR-0023). See the crate README.
The MCP server is listed and scored on Glama:
Development
A Nix flake provides a reproducible toolchain (nix develop, or direnv allow
once), but the project builds with a plain Rust toolchain too — Nix supplies the
environment, not the build (ADR-0008).
Contributor setup, the fmt/clippy/test gate, the tracked git hooks, and the
workflow for adding an endpoint live in CONTRIBUTING.md.
CI (ci.yml) runs that same offline gate on every push and PR; a dormant
live.yml runs the live FRED tests once an Infisical machine identity is
configured (ADR-0016).
Benchmarks
Performance tooling from the org Tech Radar pilot (ADR-0026, issue #42):
# Deserialization microbenches (divan) — the observations parse hot path.
cargo bench -p ferric-fred --bench deserialization
# Same workload under criterion (the divan-vs-criterion baseline).
cargo bench -p ferric-fred --bench deserialization_criterion
# Headless `fred chart` render cost (divan + ratatui TestBackend, no tty).
cargo bench -p ferric-fred-cli --bench render
# CLI wall-clock timing (hyperfine): startup + a live fetch-and-render.
# The fetch benchmark needs FRED_API_KEY; startup runs offline.
scripts/bench-cli.sh # add --json DIR to export hyperfine JSONCI keeps the benches compiling on every PR (cargo bench --no-run), and a
separate bench.yml uploads results to Bencher (hosted
project ferric-fred) to track them over time and flag regressions on PRs.
Bencher has no divan adapter, so it ingests the criterion mirror
(rust_criterion) and hyperfine startup (shell_hyperfine); divan stays the
fast local harness. BENCHER_API_TOKEN comes from Infisical, so the upload is a
no-op until the machine identity is configured — see
ADR-0026.
Secrets
The client reads a free FRED API key from the FRED_API_KEY environment
variable (get one at https://fredaccount.stlouisfed.org/apikeys). Locally,
secrets are injected via Infisical + direnv
(ADR-0009):
cp .envrc.example .envrc # local, git-ignored entry point
infisical login # user auth (opens a browser)
infisical init # link this dir → project
direnv allow # load the shell + inject secrets on cd-inStore the key with infisical secrets set FRED_API_KEY="…" --env=dev --path=/shared.
No Infisical? Just set it directly in your git-ignored .envrc:
export FRED_API_KEY="…" — the library only reads the env var and has no
dependency on Infisical.
Architecture decisions
Design decisions are recorded as ADRs in docs/adr/. Start with
the index.
License
Dual-licensed under MIT OR Apache-2.0, at your option — the Rust ecosystem
default (ADR-0006). See LICENSE-MIT
and LICENSE-APACHE. Unless you state otherwise, any
contribution you submit is licensed under the same dual terms (see
CONTRIBUTING.md).
This covers our code; FRED data itself is subject to the St. Louis Fed's terms of use, and you supply your own API key — the project ships no data and no key.
Maintenance
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that provides tools to search and retrieve economic data series from the Federal Reserve Economic Data (FRED) API.Last updated245511AGPL 3.0
- Flicense-qualityDmaintenanceA Model Context Protocol server that provides access to Federal Reserve Economic Data (FRED), enabling users to retrieve, analyze, and compare economic indicators and time series data through natural language.Last updated2
- Flicense-qualityFmaintenanceA Model Context Protocol (MCP) server written in Rust that fetches stock price data from stooq.com.Last updated6
- Flicense-qualityDmaintenanceAn MCP server that wraps the Federal Reserve Economic Data (FRED) API, providing access to over 800,000 economic time series like GDP and unemployment. It enables AI agents to search for data, retrieve metadata, and fetch historical observations directly from the St. Louis Fed.Last updated
Related MCP Connectors
MCP server for US Treasury Fiscal Data — debt, interest rates, exchange rates, and spending.
Multi-tenant FastMCP server for Charles Schwab brokerage data, monetized via DPYC Tollbooth
Query SEC EDGAR filings, XBRL financials, and company data through MCP. STDIO & Streamable HTTP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ojhermann-org/ferric-fred'
If you have feedback or need assistance with the MCP directory API, please join our Discord server