get_historical_rates
Retrieve exchange rates for specific past dates to analyze currency value changes over time. Specify date, base currency, and target currencies.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date in YYYY-MM-DD format | |
| base | No | Base currency code (default: EUR) | |
| symbols | No | Comma-separated currency codes to limit results |
Implementation Reference
- src/tools/get_historical_rates.ts:32-76 (handler)The main tool handler function that fetches historical exchange rates from the Frankfurter API, handles parameters, makes the fetch request, and returns formatted response or error.export async function getHistoricalRates( input: GetHistoricalRatesInput, ): Promise<ToolResponse> { const { date, base, symbols } = input; try { const params = new URLSearchParams(); if (base) params.append("base", base.toUpperCase()); if (symbols) params.append("symbols", symbols.toUpperCase()); const url = `${FRANKFURTER_API_BASE}/${date}${params.toString() ? `?${params.toString()}` : ""}`; const response = await fetch(url); if (!response.ok) { return { content: [ { type: "text", text: `Error: Unable to fetch historical rates. Status: ${response.status}`, }, ], }; } const data = (await response.json()) as ExchangeRateResponse; return { content: [ { type: "text", text: JSON.stringify(data), }, ], }; } catch (error) { return { content: [ { type: "text", text: `Error: Failed to fetch historical rates - ${error instanceof Error ? error.message : "Unknown error"}`, }, ], }; } }
- Input schema using Zod for validating the date (YYYY-MM-DD), optional base currency (3-letter code), and optional symbols (comma-separated currencies).export const getHistoricalRatesSchema = { date: z .string() .regex(/^\d{4}-\d{2}-\d{2}$/) .describe("Date in YYYY-MM-DD format"), base: z .string() .length(3) .optional() .describe("Base currency code (default: EUR)"), symbols: z .string() .optional() .describe("Comma-separated currency codes to limit results"), };
- src/index.ts:37-41 (registration)Registration of the 'get_historical_rates' tool in the MCP server using the schema and handler function.this.server.tool( "get_historical_rates", getHistoricalRatesSchema, async (input) => getHistoricalRates(input), );