Skip to main content
Glama
alexalok

Wise Currency Converter MCP Server

by alexalok

Wise Currency Converter MCP Server

A Model Context Protocol (MCP) server that provides currency conversion using the Wise API.

Prerequisites

You need a Wise API key to use this server. Get your API key from Wise API.

Related MCP server: FX Currency MCP Server

Features

  • Convert Currency: Convert amounts between different currencies using real-time or historical Wise exchange rates

  • List Currencies: Get a list of all supported currency codes

  • Rate Caching: Built-in caching to minimize API calls

  • Cross-rate Calculation: Automatic fallback to USD-based cross-rate calculation when direct rates are unavailable

Installation

npm install
npm run build

Configuration

API Key Setup

Set your Wise API key as an environment variable:

export WISE_API_KEY="your-api-key-here"

Or copy the example environment file and add your key:

cp .env.example .env
# Edit .env and add your API key

Security Note: Never commit your API key to version control. The .gitignore file is configured to exclude .env files.

Usage

As an MCP Server

The server runs on stdio and can be used with any MCP client:

node dist/index.js

Available Tools

1. convert_currency

Converts an amount from one currency to another.

Parameters:

  • source_currency (string, required): Source currency code (e.g., USD, EUR, GBP)

  • amount (number, required): Amount to convert

  • target_currency (string, required): Target currency code

  • date (string, optional): Date for historical rate in YYYY-MM-DD format

Example Response:

{
  "source_currency": "USD",
  "source_amount": 100,
  "target_currency": "EUR",
  "target_amount": 92.45,
  "exchange_rate": 0.9245,
  "date": "2024-01-15"
}

2. list_currencies

Returns a list of all supported currency codes.

Example Response:

{
  "currencies": ["USD", "EUR", "GBP", "JPY", ...],
  "total": 40
}

Configuration with Claude Desktop

To use this MCP server with Claude Desktop, add it to your config file:

macOS

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "wise-currency": {
      "command": "node",
      "args": ["/path/to/wise-currency-converter-mcp/dist/index.js"],
      "env": {
        "WISE_API_KEY": "your-api-key-here"
      }
    }
  }
}

Windows

Edit %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "wise-currency": {
      "command": "node",
      "args": ["C:\\path\\to\\wise-currency-converter-mcp\\dist\\index.js"],
      "env": {
        "WISE_API_KEY": "your-api-key-here"
      }
    }
  }
}

Supported Currencies

The server supports 40 major world currencies including:

  • USD, EUR, GBP, JPY, AUD, CAD, CHF, CNY, SEK, NZD

  • MXN, SGD, HKD, NOK, KRW, TRY, RUB, INR, BRL, ZAR

  • And 20 more...

Testing

Test the server functionality:

# Run the test script
WISE_API_KEY="your-api-key" node test.js

Development

# Install dependencies
npm install

# Build the project
npm run build

# Watch for changes during development
npm run dev

# Run the server directly for testing
WISE_API_KEY="your-api-key" node dist/index.js

Project Structure

wise-currency-converter-mcp/
├── src/
│   ├── index.ts         # MCP server implementation
│   ├── wise-client.ts   # Wise API client with caching
│   └── types.ts         # TypeScript type definitions
├── dist/                # Compiled JavaScript output
├── test.js             # Test script for validation
├── .env.example        # Example environment configuration
├── .gitignore          # Git ignore rules
├── package.json        # Node.js dependencies
└── tsconfig.json       # TypeScript configuration

Architecture

  • TypeScript: Full type safety and better IDE support

  • MCP SDK: Official Model Context Protocol SDK for server implementation

  • Wise API: Real-time and historical exchange rates

  • Caching: 1-minute TTL cache to reduce API calls

  • Error Handling: Graceful fallback to cross-rate calculation

  • Security: API key stored in environment variables, sanitized error logging

Troubleshooting

API Key Issues

  • Ensure your API key is correctly set in the environment

  • Check that the API key has the necessary permissions for rate queries

  • The server will warn if no API key is detected

Connection Issues

  • Verify the Wise API endpoint is accessible

  • Check network connectivity

  • Review error messages in the console output

License

MIT

Available Tools

2 tools
convert_currencyA

Convert an amount from one currency to another using Wise exchange rates

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate for historical rate (YYYY-MM-DD format). If not provided, uses current rate
amountYesAmount to convert
source_currencyYesSource currency code (e.g., USD, EUR, GBP)
target_currencyYesTarget currency code (e.g., USD, EUR, GBP)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses a key behavioral trait (use of Wise exchange rates), which adds specificity. However, it does not describe the return value, handling of source=target, or whether the result includes the rate, leaving gaps for an agent to infer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the action and object. It contains no filler and every word contributes to the meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and no annotations, so the description must explain what is returned. It does not mention the return format or that the date parameter is optional (though in schema). This leaves the agent without a complete picture of the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with descriptions for all four parameters. The tool description adds no new parameter meaning beyond what the schema already provides—it simply reinforces the role of amount and currencies. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's verb ('Convert'), resource ('an amount from one currency to another'), and a differentiator ('using Wise exchange rates'). This unambiguously distinguishes it from the sibling tool list_currencies, which lists currencies rather than converting them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for currency conversion, and the sibling tool name makes the alternative clear (list_currencies for listing). However, it does not explicitly state when to use (e.g., 'Use this for converting amounts') or exclude cases like when historical rates are needed, though the schema partially covers the date parameter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_currenciesA

Get a list of all supported currency codes

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of disclosure. It honestly states that the tool returns all supported currency codes without claiming side effects. However, it omits details like response format or ordering, which could be relevant for an agent, but for a simple read-only list the description is fairly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no unnecessary words. It gets straight to the point and is easily parsed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's extreme simplicity (zero parameters, no output schema, no nested objects), the description is complete enough for an agent to select and invoke it correctly. No additional context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema coverage is 100% vacuously. There is nothing to add beyond the schema, so the description does not need to explain parameter semantics. As per guidelines, zero params warrant a baseline score of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Get' and a clear resource 'supported currency codes', making the tool's purpose unambiguous. It is also clearly distinct from the sibling tool convert_currency, which performs conversion rather than listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool is used to retrieve available currency codes, presumably before using convert_currency, but it does not explicitly state when to use it over the sibling or any conditions. Usage guidance is implied rather than clearly articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv1.0.0
    • First observedconvert_currency
    • First observedlist_currencies

TDQS

A4.3/5.0

Scored across 2 tools

Disambiguation5/5

The two tools serve completely distinct purposes: one converts amounts between currencies, the other lists supported currency codes. There is no possible confusion between them.

Naming Consistency5/5

Both tool names follow a consistent verb_noun pattern in snake_case: convert_currency and list_currencies. This is a clear, predictable naming convention.

Tool Count5/5

With only two tools, the server is tightly scoped to its purpose. Each tool is essential and earns its place: one performs the core conversion, the other provides necessary reference data. This is exactly the right size for a currency converter.

Completeness5/5

The tool surface fully covers the domain of currency conversion. There are no obvious gaps: users can list all supported currencies and convert between any pair. No additional operations are needed for a basic yet complete converter.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides access to currency exchange rates and conversion tools using the Frankfurter API, including latest rates, historical data, and time series from sources like the European Central Bank.
    5
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time and historical foreign exchange rates for 31+ currencies, enabling currency conversion, historical rate lookups, and time series analysis using data from the Frankfurter API.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Wraps the Frankfurter API to enable currency exchange rate queries and conversions through natural language.
    6
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to query Wise account balances, exchange rates, transfers, and recipients via the Wise API.
    20
    6
    -