Wise Currency Converter MCP Server
Provides real-time and historical currency conversion using the Wise API, with support for 40 major currencies and automatic cross-rate calculation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Wise Currency Converter MCP Serverconvert 100 USD to EUR"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 buildConfiguration
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 keySecurity 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.jsAvailable 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 converttarget_currency(string, required): Target currency codedate(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.jsDevelopment
# 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.jsProject 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 configurationArchitecture
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 toolsconvert_currencyA
Convert an amount from one currency to another using Wise exchange rates
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date for historical rate (YYYY-MM-DD format). If not provided, uses current rate | |
| amount | Yes | Amount to convert | |
| source_currency | Yes | Source currency code (e.g., USD, EUR, GBP) | |
| target_currency | Yes | Target currency code (e.g., USD, EUR, GBP) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v1.0.0- First observed
convert_currency - First observed
list_currencies
TDQS
Scored across 2 tools
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.
Both tool names follow a consistent verb_noun pattern in snake_case: convert_currency and list_currencies. This is a clear, predictable naming convention.
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.
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
Related MCP Connectors
Live & historical FX rates and currency conversion for AI agents. No API keys.
Live & historical FX rates and currency conversion for AI agents. No API keys.
Convert currencies, get FX rates, and query historical ECB exchange rate data.
Convert currencies and fetch blended FX rates from 50+ institutional sources.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides 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.5MIT
- FlicenseNot gradedqualityDmaintenanceProvides 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.-
- AlicenseNot gradedqualityCmaintenanceWraps the Frankfurter API to enable currency exchange rate queries and conversions through natural language.6MIT
- FlicenseAqualityDmaintenanceEnables AI assistants to query Wise account balances, exchange rates, transfers, and recipients via the Wise API.206-