UNPKG

fred-mcp-server

Version:

Federal Reserve Economic Data (FRED) MCP Server for fetching economic timeseries data with comprehensive test coverage

52 lines (51 loc) 2.08 kB
import { makeRequest } from "../common/request.js"; /** * Handler for retrieving Consumer Price Index for All Urban Consumers data from FRED */ export async function handleCPIAUCSL(input) { try { // CPIAUCSL is the series ID for Consumer Price Index for All Urban Consumers const seriesId = "CPIAUCSL"; // Prepare query parameters const queryParams = { series_id: seriesId }; // Add optional parameters if provided if (input.start_date) queryParams.observation_start = input.start_date; if (input.end_date) queryParams.observation_end = input.end_date; if (input.limit) queryParams.limit = input.limit; if (input.sort_order) queryParams.sort_order = input.sort_order; // Make the request to FRED API const response = await makeRequest("series/observations", queryParams); // Transform the data for easier consumption const formattedData = response.observations.map(obs => ({ date: obs.date, value: parseFloat(obs.value), units: "Index 1982-1984=100", })); const responseData = { title: "Consumer Price Index for All Urban Consumers: All Items in U.S. City Average", description: "The Consumer Price Index for All Urban Consumers: All Items (CPIAUCSL) is a measure of the average monthly change in the price for goods and services paid by urban consumers between any two time periods.", source: "Federal Reserve Economic Data (FRED)", series_id: seriesId, total_observations: response.count, data: formattedData }; return { content: [{ type: "text", text: JSON.stringify(responseData, null, 2) }] }; } catch (error) { if (error instanceof Error) { throw new Error(`Failed to retrieve CPIAUCSL data: ${error.message}`); } throw error; } }