The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Federal Reserve MCP Server listing page.
Search and fetch ~800K Federal Reserve economic time-series from the FRED API via MCP. STDIO or Streamable HTTP.
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_seriesSearch for FRED series by free-text query across titles, tags, and notes.
limit and offsetfedreserve_get_release insteadfedreserve_get_seriesFetch metadata for one or more FRED series.
fedreserve_get_observationsFetch observation data (date + value pairs) for one or more series.
observation_start, observation_end)lin, chg, ch1, pch, pc1, pca, cch, cca, logavg, sum, eop)dataset.name handle for SQL querying via fedreserve_dataframe_queryfedreserve_browse_categoriesNavigate the FRED category hierarchy.
category_id to start at the root (ID 0)category_id to see child categories and a series sample for leaf categoriesfedreserve_get_releaseInspect a FRED data release and its associated series.
release_id (integer) or release_search (case-insensitive substring match)series_limit and series_offset to page through large releasesBuilt on @cyanheads/mcp-ts-core:
none, jwt, oauth)in-memory, filesystem, Supabase, Cloudflare KV/R2/D1FRED-specific:
api.stlouisfed.org/fred)Promise.allSettled with partial success reportingfedreserve_dataframe_queryAdd the following to your MCP client configuration file. Obtain a free FRED API key at research.stlouisfed.org/docs/api/api_key.html.
Or with npx (no Bun required):
Or with Docker:
For Streamable HTTP, set the transport and start the server:
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. | — |
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. | false |
See .env.example for the full list of optional overrides.
Build and run:
Run checks and tests:
The Dockerfile defaults to HTTP transport, stateless session mode, and logs to /var/log/federal-reserve-mcp-server. OpenTelemetry peer dependencies are installed by default — build with --build-arg OTEL_ENABLED=false to omit them.
| Directory | Purpose |
|---|---|
src/index.ts | createApp() entry point — registers tools and inits services. |
src/config | Server-specific environment variable parsing and validation with Zod. |
src/mcp-server/tools | Tool definitions (*.tool.ts). Eight tools across FRED domain and DataCanvas. |
src/services/fred | FRED API service — HTTP client, retry, 429 handling, key injection. |
src/services/canvas-bridge | DataCanvas adapter — table naming, TTL/provenance tracking, SQL gate extras. |
tests/ | Unit and integration tests mirroring src/. |
docs/ | Design and planning documents. |
See CLAUDE.md for development guidelines and architectural rules. The short version:
try/catch in tool logicctx.log for request-scoped logging, ctx.state for tenant-scoped storagesrc/mcp-server/tools/definitions/index.tsIssues and pull requests are welcome. Run checks and tests before submitting:
Apache-2.0 — see LICENSE for details.