FRED经济数据查询服务

提供FRED经济数据的查询和探索服务,支持搜索系列、获取观察数据、浏览分类/发布/标签等功能,适用于经济学研究和数据分析。

  • by nicoloceneda
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 nicoloceneda/mcp-fred

使用说明

弗雷德圣路易斯MCP

作者:尼科洛·塞内达
联系: n.ceneda20@imperial.ac.uk
网站: nicoloceneda.github.io 网站地址
机构:伦敦帝国理工学院
课程:金融学博士

描述

该存储库提供了一个MCP服务器,允许MCP兼容的客户端查询和探索来自 弗雷德它为常见的工作流(搜索系列、检索观察结果、浏览类别/版本/标签)提供结构化工具,并为高级用例支持原始端点传递。

支持的API:

  • FRED API v1(/fred/*)
  • GeoFRED地图API(/geofred/*)
  • FRED API v2(/fred/v2/*)

需求

安装步骤1:克隆和API密钥

第一, cd 进入您想要的目录 mcp-fred 要创建的存储库。然后从终端执行以下命令。

git clone https://github.com/nicoloceneda/mcp-fred.git
cd mcp-fred
python3 -m venv .venv
.venv/bin/pip install -e .

创建本地 .env:

cp .env.example .env

然后设置:

FRED_API_KEY=your_fred_api_key_here

安装步骤2:配置MCP客户端

路径A:Codex CLI

运行一次(注意:您需要更换 /absolute/path/to/ 根据您的实际路径):

codex mcp add fred -- /absolute/path/to/mcp-fred/.venv/bin/python /absolute/path/to/mcp-fred/fred_server.py

检查:

codex mcp list
codex mcp get fred

成功安装后应显示:

  • 在 codex mcp list: fred 随着 Status = enabled
  • 在 codex mcp get fred: enabled: true

启动Codex(codex)并验证MCP是否已成功安装(/mcp).

路径B:Claude代码命令行界面

运行一次(注意:您需要更换 /absolute/path/to/ 根据您的实际路径):

claude mcp add --transport stdio fred -- /absolute/path/to/mcp-fred/.venv/bin/python /absolute/path/to/mcp-fred/fred_server.py

检查:

claude mcp list
claude mcp get fred

启动克劳德代码(claude)并验证MCP是否已成功安装(/mcp).

可选:通用 mcpServers JSON配置

Use this when your MCP client expects a JSON-based manual server configuration (for Claude Code team-shared setup, this is typically `.mcp.json`).
{
  "mcpServers": {
    "fred": {
      "command": "/absolute/path/to/mcp-fred/.venv/bin/python",
      "args": ["/absolute/path/to/mcp-fred/fred_server.py"],
      "env": {
        "FRED_API_KEY": "your_fred_api_key_here"
      }
    }
  }
}

可选快速烟雾测试

Show optional smoke test script

运行此脚本以验证MCP服务器是否启动,stdio MCP连接是否正确初始化,以及是否进行了真正的工具调用(search_series)成功。

cd mcp-fred
.venv/bin/python - <<'PY'
import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def main():
    params = StdioServerParameters(
        command=".venv/bin/python",
        args=["fred_server.py"],
    )
    async with stdio_client(params) as (r, w):
        async with ClientSession(r, w) as s:
            await s.initialize()
            tools = await s.list_tools()
            print("tool_count =", len(tools.tools))
            out = await s.call_tool("search_series", {"query": "unemployment rate", "limit": 1})
            print(out.content[0].text)

asyncio.run(main())
PY

例子

Calling MCP explicitly and with Series ID specified.
$ codex
OpenAI Codex (v0.101.0)
model: gpt-5.3-codex xhigh
directory: ~

> Use the FRED MCP to retrieve the last 13 values of GS10 and create a matplotlib line chart saved to /Users/nicoloceneda/Desktop/gs10.png.

I’ll fetch the latest 13 GS10 observations via FRED MCP, then generate and save a matplotlib line chart at /Users/nicoloceneda/Desktop/gs10.png.

Called fred.get_observations({"series_id":"GS10","sort_order":"desc","limit":13})

从FRED检索了最后13个GS10观测值,并创建了matplotlib折线图。

保存的文件:/Users/nicoloceneda/桌面/gs10.png

使用的值(最新值优先):

  • 2026-01-01: 4.21
  • 2025-12-01: 4.14
  • 2025-11-01: 4.09
  • 2025-10-01: 4.06
  • 2025-09-01: 4.12
  • 2025-08-01: 4.26
  • 2025-07-01: 4.39
  • 2025-06-01: 4.38
  • 2025-05-01: 4.42
  • 2025-04-01: 4.28
  • 2025-03-01: 4.28
  • 2025-02-01: 4.45
  • 2025-01-01: 4.63

MCP生成的图形:

FRED的原始图表:

Without calling MCP explicitly and no Series ID specified.
$ codex
OpenAI Codex (v0.101.0)
model: gpt-5.3-codex xhigh
directory: ~

> Tell me the latest value of US GDP (nominal).

I’ll pull the most recent GDP observation from FRED now and report its date and value.

Called fred.get_observations({"series_id":"GDP","limit":1,"sort_order":"desc"})

2025-07-01(即2025年第三季度),最新FRED名义美国国内生产总值(GDP)为31098.027(十亿美元,SAAR)。

功能和端点覆盖率

服务器包括专用工具和通用直通工具。

Generic passthrough
  • fred_request(endpoint, params_json) 为了 /fred/*
  • geofred_request(endpoint, params_json) 为了 /geofred/*
  • fred_v2_request(endpoint, params_json) 为了 /fred/v2/*
FRED categories
  • get_category -> fred/category
  • get_category_children -> fred/category/children
  • get_category_related -> fred/category/related
  • get_category_series -> fred/category/series
  • get_category_tags -> fred/category/tags
  • get_category_related_tags -> fred/category/related_tags
FRED releases
  • get_releases -> fred/releases
  • get_releases_dates -> fred/releases/dates
  • get_release -> fred/release
  • get_release_dates -> fred/release/dates
  • get_release_series -> fred/release/series
  • get_release_sources -> fred/release/sources
  • get_release_tags -> fred/release/tags
  • get_release_related_tags -> fred/release/related_tags
  • get_release_tables -> fred/release/tables
FRED series
  • get_series -> fred/series
  • get_series_categories -> fred/series/categories
  • get_observations -> fred/series/observations
  • get_series_observations ->别名 get_observations
  • get_series_release -> fred/series/release
  • search_series -> fred/series/search
  • search_series_by_tags -> fred/series/search/tags
  • search_series_related_tags -> fred/series/search/related_tags
  • get_series_tags -> fred/series/tags
  • get_series_updates -> fred/series/updates
  • get_series_vintage_dates -> fred/series/vintagedates
FRED sources
  • get_sources -> fred/sources
  • get_source -> fred/source
  • get_source_releases -> fred/source/releases
FRED tags
  • get_tags -> fred/tags
  • get_related_tags -> fred/related_tags
  • get_tag_series -> fred/tags/series
GeoFRED maps
  • get_map_shape_file -> geofred/shapes/file
  • get_map_series_group -> geofred/series/group
  • get_map_series_data -> geofred/series/data
  • get_map_regional_data -> geofred/regional/data
FRED v2
  • get_release_observations_v2 -> fred/v2/release/observations