fred-macro-mcp
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., "@fred-macro-mcpwhat is the current unemployment rate?"
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.
fred-macro-mcp
A read-only Model Context Protocol (MCP) server that wraps the FRED (Federal Reserve Economic Data, St. Louis Fed) public API.
FRED is the canonical free source for US macroeconomic time series — GDP, CPI, unemployment, policy and market interest rates, and the Treasury yield curve. This server lets an LLM agent overlay macro context on equity / fixed-income research: "what is CPI doing", "where is the 10y-2y spread", "when is the next jobs print".
Read-only by design. Every tool performs HTTPS
GETrequests against the single fixed hosthttps://api.stlouisfed.org. There is no write, mutation, or order-placement path of any kind.
Tools
Tool | Purpose |
| Observation values for one series over an optional date window. |
| Keyword-search the FRED catalog to find the right |
| The single most-recent observation for a series. |
| Upcoming FRED data releases in the next N days. |
| Local health probe (key configured? rate limit?). Never calls FRED. |
| Version, MCP SDK version, tool list. Never calls FRED. |
get_series
When to use: pull a macro time series (e.g. CPI, GDP, 10y Treasury).
Input:
series_id(e.g.CPIAUCSL), optionalstart/end(YYYY-MM-DD), optionallimit.Output:
{ series_id, start, end, units, observation_count, observations: [{date, value}, ...] }. Missing points ("."in FRED) surface asvalue: null.Example:
get_series(series_id="DGS10", start="2024-01-01").
search_series
When to use: you know the concept ("unemployment rate") but not the id.
Input:
query(free text), optionallimit.Output:
{ query, result_count, results: [{id, title, frequency, units, observation_start, observation_end, popularity}, ...] }, most popular first.Example:
search_series(query="real gdp").
get_series_latest
When to use: "what is the current value of X" without the full history.
Input:
series_id.Output:
{ series_id, latest: {date, value} | null, units }.Example:
get_series_latest(series_id="UNRATE").
get_release_calendar
When to use: flag upcoming macro event risk (next CPI / GDP / jobs).
Input:
days(1-180, default 14).Output:
{ days, from_date, to_date, release_count, releases: [{release_id, release_name, date}, ...] }.Example:
get_release_calendar(days=30).
Related MCP server: FRED Macroeconomic Data MCP Server
Common series ids
Concept |
|
Real GDP |
|
CPI (all urban) |
|
Core PCE |
|
Unemployment rate |
|
Fed funds (effective) |
|
10-year Treasury |
|
2-year Treasury |
|
10y-2y spread |
|
Install
uv sync --extra devA FRED API key (free)
is required. Copy .env.example to .env and set FRED_API_KEY.
Configure your MCP host
Add to your MCP host config (e.g. Cursor ~/.cursor/mcp.json):
{
"mcpServers": {
"fred-macro": {
"command": "uv",
"args": ["run", "fred-macro-mcp"],
"cwd": "/opt/workspace/code/kevinkda/fred-macro-mcp",
"env": { "FRED_API_KEY": "<your-fred-key>" }
}
}
}FRED_API_KEY may also be set in .env instead of inline env.
Configuration
Env var | Default | Purpose |
| (required) | 32-char FRED key. Never logged. |
|
| Client throttle (≤ FRED's 120/min ceiling). |
|
| Opt-in read-through cache. |
|
| Force fresh reads while still writing. |
|
|
|
| (unset) | DSN used only when backend is |
|
| Log verbosity. |
The cache is off by default and uses an in-process memory LRU when
enabled — zero external dependencies. ClickHouse is an opt-in extra
(pip install fred-macro-mcp[clickhouse]) for durable history.
Security
API key is the only secret. It is read from the environment, passed to FRED only as a bound query parameter, and redacted from every log line and exception message (
api_key=…and bare 32-char keys are masked).SSRF-safe. The host is a hard-coded constant; callers supply an endpoint path + params only and can never redirect to another host. Redirects are not followed.
Injection-safe.
series_idand dates are validated with anchored regexes and passed as bound query parameters — never string-concatenated into a URL.Rate-limited. A sliding-60-second token bucket keeps requests within FRED's documented 120 req/min budget.
See docs/SECURITY.md and
docs/THREAT_MODEL.md.
Development
uv run pytest --cov=src --cov-fail-under=100
uv run ruff check src tests && uv run ruff format --check src tests
uv run mypy --strict srcTests use respx to mock FRED — no
real FRED API calls are made in the test suite.
License
MIT — see LICENSE.
Data © Federal Reserve Bank of St. Louis (FRED). Subject to FRED's terms of use. This server is for interactive single-user research.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/kevinkda/fred-macro-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server