Skip to main content
Glama
wesbos

Currency Converter MCP

by wesbos

get_latest_rates

Fetch current exchange rates for currency conversion using the Frankfurter API. Specify base currency and target symbols to obtain real-time rate data.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
baseNoBase currency code (default: EUR)
symbolsNoComma-separated currency codes to limit results (e.g., USD,GBP,JPY)

Implementation Reference

  • The handler function that fetches the latest exchange rates from the Frankfurter API using the provided base currency and symbols, handles errors, and returns the response as a ToolResponse.
    export async function getLatestRates(
    	input: GetLatestRatesInput,
    ): Promise<ToolResponse> {
    	const { 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}/latest${params.toString() ? `?${params.toString()}` : ""}`;
    		const response = await fetch(url);
    
    		if (!response.ok) {
    			return {
    				content: [
    					{
    						type: "text",
    						text: `Error: Unable to fetch exchange 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 exchange rates - ${error instanceof Error ? error.message : "Unknown error"}`,
    				},
    			],
    		};
    	}
    }
  • Input schema using Zod for validating base currency (optional, 3-letter code) and symbols (optional comma-separated list).
    export const getLatestRatesSchema = {
    	base: z
    		.string()
    		.length(3)
    		.optional()
    		.describe("Base currency code (default: EUR)"),
    	symbols: z
    		.string()
    		.optional()
    		.describe(
    			"Comma-separated currency codes to limit results (e.g., USD,GBP,JPY)",
    		),
    };
  • src/index.ts:29-31 (registration)
    Registers the 'get_latest_rates' tool with the MCP server, providing the schema and handler function.
    this.server.tool("get_latest_rates", getLatestRatesSchema, async (input) =>
      getLatestRates(input),
    );

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/wesbos/currency-conversion-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server