MCP-FRED
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., "@MCP-FREDget the latest GDP data for the United States"
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.
MCP-FRED
Model Context Protocol server for Federal Reserve Economic Data (FRED) API
A comprehensive MCP server providing access to all FRED API endpoints with intelligent large data handling, project-based storage, and async job processing for AI assistants like Claude.
Features
Built on FastMCP 3.0.0b1 - Modern decorator-based MCP framework with context injection
39 MCP Tools covering 50+ FRED API endpoints (categories, releases, series, sources, tags, maps)
Progressive Disclosure - 29 core tools visible by default, 16 additional tools activated on-demand
Per-Session Activation - Enable data, advanced, or admin tool tiers as needed
Conservative Token Estimation - Automatically saves large datasets to files to prevent context overflow
Project-Based Storage - Organized file management for economic data
Async Job Processing - Background processing for large datasets (>10K observations)
Smart Output Handling - Auto-detect when to return data vs. save to file
Type Safety - Full Pydantic validation for all inputs and outputs
Related MCP server: Code Buddy
Quick Start
Three Installation Options
Option 1: PyPI Installation (Easiest)
Install directly from PyPI using pip or uv:
# Using pip
pip install mcp-fred
# Or using uv (faster)
uv pip install mcp-fredUsage with Claude Desktop:
Add to your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"fred": {
"command": "uv",
"args": ["--directory", "/path/to/your/virtualenv", "run", "mcp-fred"],
"env": {
"FRED_API_KEY": "your_api_key_here",
"FRED_STORAGE_DIR": "/Users/username/Documents/fred-data"
}
}
}
}Restart Claude Desktop, and the FRED tools will be available!
Option 2: Claude Desktop Extension
The no-setup option - includes bundled Python environment!
Requirements:
Python 3.11+
uv package manager (
brew install uv)
Installation:
Download
mcp-fred.mcpbfrom GitHub ReleasesDouble-click the file (or run
open mcp-fred.mcpb)Enter your FRED API key when prompted
Done! The extension is now available in Claude Desktop
See EXTENSION.md for detailed instructions and troubleshooting.
Option 3: Manual Installation from Source
Prerequisites:
Python 3.11 or higher
FRED API key (free from fred.stlouisfed.org)
Installation:
Clone the repository:
git clone https://github.com/cfdude/mcp-fred.git cd mcp-fredCreate virtual environment:
python3.11 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activateInstall dependencies:
pip install -r requirements.txtConfigure environment:
cp .env.example .env # Edit .env and add your FRED_API_KEY
Usage with Claude Desktop:
Add to your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"fred": {
"command": "python",
"args": ["-m", "mcp_fred"],
"env": {
"FRED_API_KEY": "your_api_key_here",
"FRED_STORAGE_DIR": "/Users/username/Documents/fred-data"
}
}
}
}Restart Claude Desktop, and the FRED tools will be available!
CLI Usage Example:
Use the MCP CLI (or compatible host) to manage FRED data projects and background jobs:
# Create a new project workspace with canonical subdirectories
mcp-cli call fred_project_create --operation create --project macro-demo
# List known projects with file counts and storage metadata
mcp-cli call fred_project_list --operation list --output screen
# Review background job progress or filter for completed runs
mcp-cli call fred_job_list --operation list --status completed --output screen
# Cancel a long-running job when you no longer need the export
mcp-cli call fred_job_cancel --operation cancel --job_id fred-job-123
# Check the final status for a specific job (useful after cancellations)
mcp-cli call fred_job_status --operation get --job_id fred-job-123Note: The CLI examples assume
mcp-cliis configured with yourFRED_API_KEYand optionalFRED_STORAGE_DIR. Substitute actual job identifiers when invoking job status tools.
Available Tools
MCP-FRED uses progressive disclosure to reduce context overhead. Core and discovery tools are always visible; additional tiers can be activated per-session.
Tool Tiers
Tier | Tools | Status | Activation |
Core | 8 tools | Always visible | - |
Discovery | 15 tools | Always visible | - |
Data | 7 tools | Hidden by default |
|
Advanced | 6 tools | Hidden by default |
|
Admin | 4 tools | Hidden by default |
|
Use activate_all_tools() to enable all tiers at once, or list_tool_tiers() to see available tools.
Core Tools (Always Available)
Tool | Description |
| Get category details |
| List child categories |
| Get series metadata |
| Get release details |
| Get source details |
Discovery Tools (Always Available)
Tool | Description |
| Search for series by keywords |
| List FRED tags |
| Get series by tags |
| List all releases |
| List all sources |
| List series in category |
Data Tools (Activate with activate_data_tools())
Tool | Description |
| Get time series data points |
| Get release date schedules |
| Get geographic shape data |
| Get regional economic data |
Admin Tools (Activate with activate_admin_tools())
Tool | Description |
| Check status of background jobs |
| List recent/active jobs |
| Cancel running job |
| List all projects in storage |
| Create new project directory |
How It Works
Smart Output Handling
MCP-FRED intelligently decides whether to return data directly or save to a file:
Small datasets (<50K tokens): Returned directly to Claude
Large datasets (>50K tokens): Saved to file automatically
Very large datasets (>10K observations): Processed in background job
Token Estimation
Conservative approach assuming 75% of context already used:
Claude Sonnet: 50K safe limit (out of 200K total)
GPT-4: 25K safe limit (out of 100K total)
Gemini Pro: 250K safe limit (out of 1M total)
Project-Based Storage
Files are organized by project:
fred-data/
my-project/
series/ # Series observation data
maps/ # GeoFRED shape files
releases/ # Release data
categories/ # Category data
sources/ # Source data
tags/ # Tag data
.project.json # Project metadataExample Usage
In Claude Desktop, ask:
"Using FRED data, get GDP observations for the last 10 years and save it to the 'economy-2024' project"
Claude will:
Call
fred_serieswith operation="get_observations"Estimate dataset size (~40 observations)
Save to
fred-data/economy-2024/series/GNPCA_observations.csvReturn file path for further analysis
For large datasets:
"Get all unemployment observations since 1948"
Claude will:
Estimate size (>10K observations)
Create background job
Return job ID immediately
Check status with
fred_job_statusGet file path when complete
Configuration
All configuration via environment variables (.env file or MCP client config):
Required
FRED_API_KEY- Your FRED API key
Optional
FRED_STORAGE_DIR- Storage location (default:./fred-data)FRED_PROJECT_NAME- Default project name (default:default)FRED_OUTPUT_FORMAT- Default format:csvorjson(default:csv)FRED_OUTPUT_MODE- Output mode:auto,screen, orfile(default:auto)FRED_OUTPUT_FILE_CHUNK_SIZE- Rows per CSV flush (default:1000)FRED_JOB_RETENTION_HOURS- Job retention period (default:24)
See .env.example for complete list.
Development
Setup Development Environment
# Clone and setup
git clone https://github.com/cfdude/mcp-fred.git
cd mcp-fred
git checkout dev
# Create virtual environment
python3.11 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Configure environment
cp .env.example .env
# Edit .env with your FRED_API_KEYRun Tests
# Run all tests with coverage
pytest --cov=mcp_fred --cov-report=html
# Run specific tests
pytest tests/test_tools/test_series.py
# Run with verbose output
pytest -vCode Quality
# Lint and format
ruff check .
ruff format .
# Fix auto-fixable issues
ruff check --fix .Documentation
CONTEXT.md - Quick start for new AI contexts
ARCHITECTURE.md - System architecture and design
API_MAPPING.md - Complete FRED API to Tool mapping
SERIES_MAPS_GUIDE.md - Series & maps tool usage
DEVELOPMENT_GUIDE.md - Developer setup guide
DEPENDENCIES.md - Why each dependency was chosen
TODO.md - Development task list (8 phases)
CI_CD.md - CI/CD workflows and pre-commit hooks
CI/CD
Automated testing and security checks run on every commit and pull request.
Install pre-commit hook (recommended for development):
./scripts/install-pre-commit-hook.shThe hook runs before each commit:
Code formatting check (ruff)
Linting (ruff)
Full test suite (pytest)
Coverage validation (80% minimum)
GitHub Actions workflows:
CI: Tests, formatting, linting on Python 3.11 & 3.12
Security: Secret scanning, dependency vulnerabilities
See CI_CD.md for complete details.
Architecture
Built on FastMCP 3.0.0b1
MCP-FRED is built on FastMCP 3.0.0b1, the modern Python framework for building MCP servers. Key framework features used:
Decorator-based tool registration -
@mcp.tool()decorators for clean tool definitionsContext injection -
CurrentContext()dependency provides access to shared resourcesLifespan management -
@lifespandecorator handles initialization and cleanupTag-based visibility -
mcp.disable(tags={...})andctx.enable_components()for progressive disclosureTool annotations -
readOnlyHint,idempotentHintfor LLM optimization
Core Components
mcp-fred/
src/mcp_fred/
fastmcp_server.py # FastMCP entry point with progressive disclosure
config.py # Configuration management
servers/ # FastMCP tool modules (39 tools)
base.py # Server instance and lifespan context
admin.py # Job/project management + activation tools
categories.py # Category tools
releases.py # Release tools
series.py # Series tools (largest module)
sources.py # Source tools
tags.py # Tag tools
maps.py # GeoFRED tools
common.py # Shared utilities (smart_output, error formatting)
api/ # FRED API client
client.py # Async HTTP client with retry/backoff
endpoints/ # API endpoint implementations
models/ # Pydantic response models
utils/ # Utilities
token_estimator.py # Token counting (tiktoken)
output_handler.py # Smart output routing
json_to_csv.py # JSON to CSV conversion
job_manager.py # Async job tracking
background_worker.py # Background task processing
tools/ # Legacy tool implementations (for MCPFRED_LEGACY=1)
transports/ # Legacy STDIO transport
tests/ # Test suite (80% coverage target)Key Design Decisions
FastMCP 3.0.0b1 - Modern framework with decorator-based tools and context injection
Progressive Disclosure - 29 tools visible by default, 16 activated on-demand to reduce LLM context overhead
Conservative Token Limits - Assume 75% context used, safe limits at 25% of total
Project-Based Storage - User-configurable directory, organized subdirectories
Async Job Processing - Background jobs for datasets >10K rows or >10 seconds
Type Safety - Pydantic for all validation, runtime error catching
Legacy Support - Set
MCPFRED_LEGACY=1to use old STDIO transport
FRED API Coverage
50+ FRED API endpoints mapped to 12 MCP tools
Critical Operations (Large Data)
Series Observations: Up to 100K observations per series
GeoFRED Maps: Shape files can be 1MB+ per region
Rate Limits
120 requests per minute (FRED API limit)
Automatic retry with exponential backoff
Testing Philosophy
Target: 80% code coverage minimum
Focus: Unit tests (primary), integration tests (as needed)
Mocking: Mock FRED API responses, no real API calls in tests
No E2E: MCP product doesn't require end-to-end testing
Reference: See docs/TESTING_STRATEGY.md for scenarios, fixtures, and tooling details.
Contributing
We welcome contributions! Please:
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Follow conventional commit format (
feat:,fix:,docs:, etc.)Run tests and linting (
pytest && ruff check .)Submit a pull request to
devbranch
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
FRED API: Federal Reserve Bank of St. Louis for providing free economic data API
Model Context Protocol: Anthropic for the MCP specification
Snowflake MCP: Inspiration for smart output handling approach
Support
Issues: GitHub Issues
FRED API Docs: fred.stlouisfed.org/docs/api
MCP Specification: modelcontextprotocol.io
This server cannot be installed
Maintenance
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/cfdude/mcp-fred'
If you have feedback or need assistance with the MCP directory API, please join our Discord server