federal-reserve-mcp-server について
federal-reserve-mcp-serverは、経済研究者や分析担当者向けにFRED時系列の検索と観測値の取得を提供します。カテゴリやリリースの閲覧にも対応し、大量の観測結果はステージングしてSQL分析できます。
主な機能
- 01FRED時系列のテキスト・ID検索
- 02系列メタデータと観測値の取得
- 03日付・単位・頻度による観測値の絞り込み
- 04カテゴリとリリースの閲覧
- 05大量データのステージングとDuckDBクエリ
活用シーン
- 01調査テーマに関する経済指標を検索
- 02期間を指定して観測値を取得・変換
- 03FREDリリースに関連する系列を確認
- 04複数の時系列データをSQLで集計
MCP 対応
MCP サーバーとして、STDIOまたはStreamable HTTP経由で、FRED系列の検索、データ取得、ステージング済み結果のクエリに使う8個のツールを提供します。FRED APIキーが必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @cyanheads/federal-reserve-mcp-serverFRED_API_KEYシークレットFRED API key from stlouisfed.org. Required to make any API calls.FRED_BASE_URLOverride the FRED API base URL.FRED_DATASET_TTL_SECONDSSliding TTL for DataCanvas-registered observation tables (seconds).FRED_DATAFRAME_DROP_ENABLEDSet to 'true' to enable fedreserve_dataframe_drop; otherwise it remains registered as disabled.MCP_LOG_LEVELSets the minimum log level for output (e.g., 'debug', 'info', 'warn').MCP_TRANSPORT_TYPESelects the HTTP transport.MCP_HTTP_HOSTThe hostname for the HTTP server.MCP_HTTP_PORTThe port to run the HTTP server on.MCP_HTTP_ENDPOINT_PATHThe endpoint path for the MCP server.MCP_AUTH_MODEシークレットAuthentication mode to use: 'none', 'jwt', or 'oauth'.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
7掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | integer | いいえ | 最大結果数(デフォルトは 1000)。 |
| query | string | はい | 検索語。 |
| offset | integer | いいえ | ページネーションのオフセット(FRED の検索結果上限は 5000 件です。offset は 4999 以下である必要があります)。 |
| tag_names | string | いいえ | 絞り込みに使用するタグ名のリスト。セミコロン区切りです。 |
| search_type | enum | いいえ | 検索モード — full_text(デフォルト)または series_id。full_text | series_id |
| filter_value | string | いいえ | filter_variable の値。 |
| filter_variable | enum | いいえ | 検索後の絞り込み対象。frequency | units | seasonal_adjustment |
詳細
@cyanheads/federal-reserve-mcp-server
MCP を通じて FRED API を利用し、約 80 万件の Federal Reserve の経済時系列データを検索・取得します。STDIO または Streamable HTTP に対応しています。
概要
FRED は、セントルイス連邦準備銀行が運営するデータベースで、産出、物価、雇用、通貨、金利、住宅、貿易に関する約 80 万件の時系列データを収録しています。系列を検索して観測値を取得し、カテゴリやリリースを参照するほか、大量の結果に対して SQL を実行できます。
ツール
| ツール | 説明 |
|---|---|
fedreserve_search_series | FRED の系列のタイトル、タグ、注記を全文検索します |
fedreserve_get_series | 1 つ以上の系列のメタデータ(タイトル、単位、頻度、観測期間)を取得します |
fedreserve_get_observations | 1 つ以上の系列の日時と値の観測データを取得します。期間と単位変換による絞り込みに対応しています |
fedreserve_browse_categories | FRED のカテゴリツリーを参照します |
fedreserve_get_release | ID または名前で FRED のリリースを検索し、関連する系列を取得します |
fedreserve_dataframe_describe | データの出所、スキーマ、行数とともに、アクティブな DataCanvas データフレームを一覧表示します |
fedreserve_dataframe_query | DuckDB SQL を使用して、登録済みの DataCanvas データフレームに対して SELECT を実行します |
fedreserve_dataframe_drop | 名前を指定して DataCanvas データフレームを削除します(オプトイン) |
機能リファレンス
fedreserve_search_series tool
- 全文検索または系列 ID 検索に対応し、
frequency、units、seasonal_adjustment、tag_namesで絞り込めます。filter_variableとfilter_valueは必ずセットで指定してください。そうでない場合、呼び出しはinvalid_filterを返します limit(デフォルトおよび最大値は 1000)とoffset(最大値は 4999。FRED が検索可能な結果を 5000 件に制限しています)によるページネーション- 出力には、利用可能な場合、
active_filtersとpopularity(0~100)が含まれます。結果が空の場合は、検索語を広げるかカテゴリを参照してください
fedreserve_get_series ツール
- 1つの系列 ID、または1回の呼び出しで最大50件を受け付けます
- 系列ごとにタイトル、単位、頻度、季節調整、観測期間、人気度、注記を返します
- 一括処理で失敗した ID は、エラーメッセージとともに
failed配列に格納されます。解決できない ID が1つだけの場合はseries_not_foundがスローされます
fedreserve_get_observations ツール
- 1つの系列 ID、または最大10件を受け付けます。
observation_start/observation_end(YYYY-MM-DD)、ネイティブ単位の変換、aggregation_method(avg、sum、eop)による頻度のダウンサンプリングを指定できます - 日付と値の観測データを返します(値は末尾のゼロを保持する文字列です)。系列ごとのエラーも返します
- 複数系列の結果、または500行を超える結果は、20行のプレビュー付きで DataCanvas テーブルに格納されます。
noticeにはdataset.nameと、次に実行するfedreserve_dataframe_describeおよびfedreserve_dataframe_queryの呼び出しが示されます。Canvas がない場合は、切り詰められたインラインプレビューが返されます
fedreserve_browse_categories ツール
category_idを省略するとルート(ID 0)から開始します。カテゴリとその子カテゴリ、または末端カテゴリの場合は最大10件のサンプル系列を返します- 不明な
category_idを指定するとcategory_not_foundがスローされます
fedreserve_get_release ツール
release_idまたはrelease_search(大文字と小文字を区別しない名前の部分一致)のいずれか1つを指定します- リリース名、リンク、注記、次回以降の予定日5件、ページ分割された系列一覧(
series_limitは最大1000、series_offset)を返します - 名前が曖昧な場合は最大10件の
search_alternativesを返します。正確なrelease_idで再試行してください
fedreserve_dataframe_describe ツール
- アクティブな DataCanvas データフレームを新しい順に一覧表示するか、
nameで1つを指定します - 各エントリには
source_tool、query_params、created_at、expires_at、row_count、truncated/max_rows、column_schemaが含まれます
fedreserve_dataframe_query ツール
df_<id>テーブルに対して読み取り専用の DuckDB SELECT を1つ実行します(結合、集計、ウィンドウ関数、CTE に対応)。外部ファイル、システムカタログ、エンジン設定関数はブロックされますrow_limitは返される行数の上限を設定します(デフォルトは1000、最大10000)。previewはインラインのサンプルを設定します。BIGINT の結果は文字列としてシリアライズされますregister_asは、独自の TTL を持つ新しいデータフレームとして結果を保存します
fedreserve_dataframe_drop ツール
- オプトイン機能です。
FRED_DATAFRAME_DROP_ENABLED=trueで有効になり、それ以外の場合は無効として登録されます - 指定したデータフレームを早期に削除します。存在しない場合は
dropped: falseを返します
特長
@cyanheads/mcp-ts-core を基盤としており、stdio と Streamable HTTP のトランスポート、切り替え可能な認証(none / jwt / oauth)、切り替え可能なストレージ(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1)、オプションの OpenTelemetry トレーシングに対応した構造化ログを提供します。
FRED 固有の機能:
- FRED API を利用するには
FRED_API_KEYが必要です(最大120リクエスト/分) - 単位変換と頻度のダウンサンプリングは、系列の全履歴を対象に FRED 側で実行されます
- 大量の観測結果は、SQL でクエリできる DataCanvas テーブルに格納されます
- データフレームツールには
CANVAS_PROVIDER_TYPE=duckdbが必要です。未設定の場合はcanvas_unavailableが返されます
エージェントに適した出力:
- 部分的な失敗:
fedreserve_get_seriesとfedreserve_get_observationsはリクエスト全体を失敗させず、ID ごとのfailed行を返します - 曖昧なリリース名には推測で応答せず、
search_alternativesを返します - すべてのデータフレームには
source_tool、query_params、TTL フィールドが含まれます - DataCanvas がない場合、
fedreserve_get_observationsは説明用のmessageを添えて、切り詰められたインラインプレビューを返します
はじめに
以下を MCP クライアントの設定ファイルに追加してください。research.stlouisfed.org/docs/api/api_key.html で無料の FRED API キーを取得してください。
{
"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"
}
}
}
}
または npx を使用します(Bun は不要です):
{
"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"
}
}
}
}
または Docker を使用します:
{
"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"
]
}
}
}
Streamable HTTP の場合は、トランスポートを設定してサーバーを起動してください:
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 FRED_API_KEY=... bun run start:http
# Server listens at http://localhost:3010/mcp
前提条件
- Bun v1.4.0 以上(または Node.js v24 以降)。
- stlouisfed.org から取得できる無料の FRED API キー。キーにより、1 分あたり 120 件のリクエストが許可されます。
インストール
- リポジトリをクローンします:
git clone https://github.com/cyanheads/federal-reserve-mcp-server.git
- ディレクトリに移動します:
cd federal-reserve-mcp-server
- 依存関係をインストールします:
bun install
- 環境を設定します:
cp .env.example .env
# edit .env and set FRED_API_KEY
設定
起動時に、src/config/server-config.ts の Zod スキーマを使ってすべての設定が検証されます。
| 変数 | 説明 | デフォルト |
|---|---|---|
FRED_API_KEY | 必須。 stlouisfed.org から取得した API キーです。 | — |
FRED_BASE_URL | FRED API のベース URL を上書きします。 | https://api.stlouisfed.org/fred |
FRED_DATASET_TTL_SECONDS | DataCanvas の観測テーブルの TTL(秒単位)です。 | 86400 |
FRED_DATAFRAME_DROP_ENABLED | true に設定すると fedreserve_dataframe_drop が有効になります。それ以外の場合は無効として登録されます。 | false |
CANVAS_PROVIDER_TYPE | duckdb に設定すると、観測結果に対する DataCanvas の SQL クエリが有効になります。 | — |
MCP_TRANSPORT_TYPE | トランスポート:stdio または http。 | stdio |
MCP_HTTP_PORT | HTTP サーバーのポートです。 | 3010 |
MCP_SESSION_MODE | HTTP セッションモード:auto、stateful、または stateless。 | stateless |
MCP_AUTH_MODE | 認証モード:none、jwt、または oauth。 | none |
MCP_LOG_LEVEL | ログレベル(RFC 5424)です。 | info |
LOGS_DIR | ログファイルのディレクトリです(Node.js のみ)。 | <project-root>/logs |
STORAGE_PROVIDER_TYPE | ストレージバックエンドです。 | in-memory |
OTEL_ENABLED | OpenTelemetry instrumentation を有効にします。 | false |
OTEL_EXPORTER_OTLP_ENDPOINT | トレース(/v1/traces)とメトリクス(/v1/metrics)のベース OTLP URL です。 | — |
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | OTLP ログエンドポイントです(設定されていない場合、ログは無効です)。 | — |
LOG_TOOL_FAILURE_PAYLOADS | キー名をマスキングして、失敗したツールの引数と結果を記録します。自由形式の値に含まれるシークレットはマスキングされません。 | false |
LOG_TOOL_FAILURE_PAYLOAD_MAX_BYTES | 記録するペイロードごとの最大バイト数です。 | 16384 |
オプションで上書きできる設定の一覧は .env.example を参照してください。
観測テーブルに対する SQL を有効にするには、CANVAS_PROVIDER_TYPE=duckdb に設定します。npm インストールと Docker イメージには DuckDB ランタイムが含まれます。ポータブル版の Claude Desktop バンドルにはネイティブバインディングが含まれません。キャンバスモードを使うには、npm または Docker でインストールしてください。
サーバーの実行
ローカル開発
-
ビルドして実行:
# One-time build bun run rebuild # Run the built server bun run start:stdio # or bun run start:http -
チェックとテストを実行:
bun run devcheck # Lint, format, typecheck, security bun run test # Vitest test suite bun run lint:mcp # Validate MCP definitions against spec
Docker
docker build -t federal-reserve-mcp-server .
docker run --rm -e FRED_API_KEY=your-key -e MCP_TRANSPORT_TYPE=http -p 3010:3010 federal-reserve-mcp-server
Dockerfile のデフォルトは、HTTP トランスポート、ステートレスセッションモードで、ログは /var/log/federal-reserve-mcp-server に記録されます。OpenTelemetry のピア依存関係はデフォルトでインストールされます。これらを省略するには、--build-arg OTEL_ENABLED=false を指定してビルドしてください。
プロジェクト構成
| ディレクトリ | 目的 |
|---|---|
src/index.ts | createApp() エントリーポイント。ツールを登録し、サービスを初期化します。 |
src/config | Zod による、サーバー固有の環境変数の解析と検証です。 |
src/mcp-server/tools | ツール定義(*.tool.ts)です。FRED ドメインと DataCanvas にまたがる 8 つのツールがあります。 |
src/services/fred | FRED API サービスです。HTTP クライアント、リトライ、429 の処理、キーの挿入を行います。 |
src/services/canvas-bridge | DataCanvas アダプターです。テーブル命名、TTL/来歴の追跡、SQL ゲートの追加機能を提供します。 |
tests/ | src/ と対応する単体テストおよび統合テストです。 |
docs/ | 設計および計画に関するドキュメントです。 |
開発ガイド
開発ガイドラインとアーキテクチャのルールについては、CLAUDE.md を参照してください。要点は次のとおりです。
- ハンドラーは例外をスローし、フレームワークが捕捉します。ツールのロジックでは
try/catchを使用しないでください - リクエスト単位のログには
ctx.log、テナント単位のストレージにはctx.stateを使用してください - 新しいツールは
src/mcp-server/tools/definitions/index.tsに登録してください - FRED API 呼び出しをラップします。生のレスポンスを検証し、ドメイン型に正規化してから、出力スキーマを返してください。不足しているフィールドを捏造してはいけません
貢献
Issue を歓迎します。提出前にチェックとテストを実行してください。
bun run devcheck
bun run test
ライセンス
Apache-2.0 — 詳細については LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。