Skip to main content
ClaudeWave
cyanheads avatar
cyanheads

federal-reserve-mcp-server

View on GitHub

Search and fetch ~800K Federal Reserve economic time-series from the FRED API via MCP. STDIO or Streamable HTTP.

MCP ServersOfficial Registry1 stars0 forksTypeScriptNOASSERTIONUpdated today
ClaudeWave Trust Score
80/100
Trusted
Passed
  • Actively maintained (<30d)
  • Clear description
  • Topics declared
  • Documented (README)
Flags
  • !Licence file present but not machine-readable
Last scanned: 8/22/2026
Install in Claude Code / Claude Desktop
Method: Manual
Claude Code CLI
git clone https://github.com/cyanheads/federal-reserve-mcp-server
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "federal-reserve": {
      "command": "node",
      "args": ["/path/to/federal-reserve-mcp-server/dist/index.js"],
      "env": {
        "FRED_API_KEY": "<fred_api_key>"
      }
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
💡 Clone https://github.com/cyanheads/federal-reserve-mcp-server and follow its README for install instructions.
Detected environment variables
FRED_API_KEY
Use cases

MCP Servers overview

<div align="center">
  <h1>@cyanheads/federal-reserve-mcp-server</h1>
  <p><b>Search and fetch ~800K Federal Reserve economic time-series from the FRED API via MCP. STDIO or Streamable HTTP.</b>
  <div>8 Tools</div>
  </p>
</div>

<div align="center">

[![Version](https://img.shields.io/badge/Version-0.2.3-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/federal-reserve-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^2.0.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/federal-reserve-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/federal-reserve-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^7.0.2-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.4.0-blueviolet.svg?style=flat-square)](https://bun.sh/)

[![Install in Claude Desktop](https://img.shields.io/badge/Install_in-Claude_Desktop-D97757?style=for-the-badge&logo=anthropic&logoColor=white)](https://github.com/cyanheads/federal-reserve-mcp-server/releases/latest/download/federal-reserve-mcp-server.mcpb) [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=federal-reserve-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvZmVkZXJhbC1yZXNlcnZlLW1jcC1zZXJ2ZXIiXX0=) [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22federal-reserve-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads/federal-reserve-mcp-server%22%5D%7D)

[![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-67E8F9?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)

</div>

---

## Tools

Five FRED tools plus three DataCanvas tools for querying spilled observation results via SQL:

| Tool | Description |
|:-----|:------------|
| `fedreserve_search_series` | Full-text search across FRED series titles, units, frequency, and tags — returns matching series IDs with metadata |
| `fedreserve_get_series` | Fetch metadata for one or more series (title, units, frequency, seasonal adjustment, observation range) |
| `fedreserve_get_observations` | Fetch date+value observation data for one or more series with date-range filtering and unit transformations |
| `fedreserve_browse_categories` | Navigate the FRED category tree; drill into a category to see child categories and a series sample |
| `fedreserve_get_release` | Look up a FRED release by ID or name search — returns release metadata and its associated series list |
| `fedreserve_dataframe_describe` | List active DataCanvas dataframes registered by this server (canvas IDs, row counts, schemas) |
| `fedreserve_dataframe_query` | Run a SELECT query against a registered DataCanvas dataframe |
| `fedreserve_dataframe_drop` | Drop a DataCanvas dataframe by name (opt-in via `FRED_DATAFRAME_DROP_ENABLED=true`) |

### `fedreserve_search_series`

Search for FRED series by free-text query across titles, tags, and notes.

- Full-text and series-ID search modes
- Post-search filtering by frequency, units, or seasonal adjustment status
- Tag-name filtering (semicolon-delimited list)
- Pagination via `limit` and `offset`
- To find series for a specific release, use `fedreserve_get_release` instead

---

### `fedreserve_get_series`

Fetch metadata for one or more FRED series.

- Accepts up to 50 series IDs in a single call
- Returns title, units, frequency, seasonal adjustment, observation range, popularity, and notes
- Fires parallel upstream requests (no FRED batch endpoint exists); partial success reported per ID

---

### `fedreserve_get_observations`

Fetch observation data (date + value pairs) for one or more series.

- Accepts up to 10 series IDs; fires one upstream request per series in parallel
- Date-range filtering with ISO 8601 dates (`observation_start`, `observation_end`)
- FRED's native unit transformations: `lin`, `chg`, `ch1`, `pch`, `pc1`, `pca`, `cch`, `cca`, `log`
- Frequency downsampling with configurable aggregation method (`avg`, `sum`, `eop`)
- Multi-series or >500-row results spill to a DataCanvas table; response includes a `dataset.name` handle for SQL querying via `fedreserve_dataframe_query`
- Degrades gracefully when DataCanvas is unavailable — returns inline preview with row count

---

### `fedreserve_browse_categories`

Navigate the FRED category hierarchy.

- Omit `category_id` to start at the root (ID 0)
- Provide a `category_id` to see child categories and a series sample for leaf categories
- Covers all FRED domains: Money & Banking, National Accounts, Employment, Prices, Housing, Trade, and more

---

### `fedreserve_get_release`

Inspect a FRED data release and its associated series.

- Look up by `release_id` (integer) or `release_search` (case-insensitive substring match)
- Name search fetches all releases and filters client-side (FRED has no server-side release search)
- Returns release name, link, scheduled dates, and a paginated series list
- Use `series_limit` and `series_offset` to page through large releases

## Features

Built on [`@cyanheads/mcp-ts-core`](https://www.npmjs.com/package/@cyanheads/mcp-ts-core):

- Declarative tool definitions — single file per tool, framework handles registration and validation
- Unified error handling across all tools
- Pluggable auth (`none`, `jwt`, `oauth`)
- Swappable storage backends: `in-memory`, `filesystem`, `Supabase`, `Cloudflare KV/R2/D1`
- Structured logging with optional OpenTelemetry tracing
- STDIO and Streamable HTTP transports

FRED-specific:

- Read-only access to the St. Louis Fed's FRED API (`api.stlouisfed.org/fred`)
- Parallel multi-series fetching via `Promise.allSettled` with partial success reporting
- DataCanvas spillover for multi-series or large observation results — spilled tables queryable via `fedreserve_dataframe_query`
- Retry with backoff and 429 rate-limit detection against FRED's 120 req/min limit
- FRED's native unit transformations delegated server-side for precision against the full series history

## Getting started

Add the following to your MCP client configuration file. Obtain a free FRED API key at [research.stlouisfed.org/docs/api/api_key.html](https://research.stlouisfed.org/docs/api/api_key.html).

```json
{
  "mcpServers": {
    "federal-reserve-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/federal-reserve-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info",
        "FRED_API_KEY": "your-api-key"
      }
    }
  }
}
```

Or with npx (no Bun required):

```json
{
  "mcpServers": {
    "federal-reserve-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/federal-reserve-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info",
        "FRED_API_KEY": "your-api-key"
      }
    }
  }
}
```

Or with Docker:

```json
{
  "mcpServers": {
    "federal-reserve-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "MCP_TRANSPORT_TYPE=stdio",
        "-e", "FRED_API_KEY=your-api-key",
        "ghcr.io/cyanheads/federal-reserve-mcp-server:latest"
      ]
    }
  }
}
```

For Streamable HTTP, set the transport and start the server:

```sh
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 FRED_API_KEY=... bun run start:http
# Server listens at http://localhost:3010/mcp
```

### Prerequisites

- [Bun v1.3.2](https://bun.sh/) or higher.
- A free FRED API key from [stlouisfed.org](https://fredaccount.stlouisfed.org/login/secure/). The key grants 120 requests/minute.

### Installation

1. **Clone the repository:**

```sh
git clone https://github.com/cyanheads/federal-reserve-mcp-server.git
```

2. **Navigate into the directory:**

```sh
cd federal-reserve-mcp-server
```

3. **Install dependencies:**

```sh
bun install
```

4. **Configure environment:**

```sh
cp .env.example .env
# edit .env and set FRED_API_KEY
```

## Configuration

All configuration is validated at startup via Zod schemas in `src/config/server-config.ts`.

| Variable | Description | Default |
|:---------|:------------|:--------|
| `FRED_API_KEY` | **Required.** API key from [stlouisfed.org](https://research.stlouisfed.org/docs/api/api_key.html). | — |
| `FRED_BASE_URL` | Override the FRED API base URL. | `https://api.stlouisfed.org/fred` |
| `FRED_DATASET_TTL_SECONDS` | Sliding TTL for DataCanvas-registered observation tables (seconds). | `86400` |
| `FRED_DATAFRAME_DROP_ENABLED` | Set `true` to expose the `fedreserve_dataframe_drop` tool. | `false` |
| `CANVAS_PROVIDER_TYPE` | Set to `duckdb` to enable DataCanvas SQL querying for observation results. | — |
| `MCP_TRANSPORT_TYPE` | Transport: `stdio` or `http`. | `stdio` |
| `MCP_HTTP_PORT` | Port for HTTP server. | `3010` |
| `MCP_AUTH_MODE` | Auth mode: `none`, `jwt`, or `oauth`. | `none` |
| `MCP_LOG_LEVEL` | Log level (RFC 5424). | `info` |
| `LOGS_DIR` | Directory for log files (Node.js only). | `<project-root>/logs` |
| `STORAGE_PROVIDER_TYPE` | Storage backend. | `in-memory` |
| `OTEL_ENABLED` | Enable [OpenTelemetry instrumentation](https://github.com/cyanheads/mcp-ts-core/tree/main/docs/telemetry). | `false` |

See [`.env.example`](./.env.example) for the full list of optional overrides.

## Running the server

### Local development

- **Build and run:**

  ```sh
  # One-time build
  bun 
ai-agentbuncyanheadseconomic-dataeconomicsfederal-reservefinancial-datafredfred-apimacroeconomicsmcpmcp-servermodel-context-protocolstlouisfedtime-seriestypescript

What people ask about federal-reserve-mcp-server

What is cyanheads/federal-reserve-mcp-server?

+

cyanheads/federal-reserve-mcp-server is mcp servers for the Claude AI ecosystem. Search and fetch ~800K Federal Reserve economic time-series from the FRED API via MCP. STDIO or Streamable HTTP. It has 1 GitHub stars and its last recorded update is dated 2026-08-21.

How do I install federal-reserve-mcp-server?

+

You can install federal-reserve-mcp-server by cloning the repository (https://github.com/cyanheads/federal-reserve-mcp-server) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.

Is cyanheads/federal-reserve-mcp-server safe to use?

+

Our security agent has analyzed cyanheads/federal-reserve-mcp-server and assigned a Trust Score of 80/100 (tier: Trusted). See the full breakdown of passed checks and flags on this page.

Who maintains cyanheads/federal-reserve-mcp-server?

+

cyanheads/federal-reserve-mcp-server is maintained by cyanheads. The last recorded GitHub activity is dated 2026-08-21, with 7 open issues.

Are there alternatives to federal-reserve-mcp-server?

+

Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.

Deploy federal-reserve-mcp-server to your cloud

Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.

Maintain this repo? Add a badge to your README

Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.

Featured on ClaudeWave: cyanheads/federal-reserve-mcp-server
[![Featured on ClaudeWave](https://claudewave.com/api/badge/cyanheads-federal-reserve-mcp-server)](https://claudewave.com/repo/cyanheads-federal-reserve-mcp-server)
<a href="https://claudewave.com/repo/cyanheads-federal-reserve-mcp-server"><img src="https://claudewave.com/api/badge/cyanheads-federal-reserve-mcp-server" alt="Featured on ClaudeWave: cyanheads/federal-reserve-mcp-server" width="320" height="64" /></a>