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.
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
- 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/kevinkda/fred-macro-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server