Skip to main content
Glama
devshark

Exchange Rate MCP Server

by devshark
README.md
# Exchange Rate MCP Server (Python)

This is a Python implementation of a Model Context Protocol (MCP) server that provides current exchange rates from a reliable source.

## Overview

This server implements the Model Context Protocol to provide real-time exchange rate data. It can be used by AI models to get up-to-date currency exchange information.

## Features

- Provides current exchange rates for various currencies
- Configurable base currency (defaults to USD)
- Uses the exchangerate.host API as a data source
- Includes client examples and Ollama integration

## Installation

```bash
# Clone the repository
git clone git@github.com:devshark/exchange-rate-mcp.git
cd exchange-rate-mcp

# Create a virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Copy the example environment file and edit as needed
cp .env.example .env
```

## Configuration

Edit the `.env` file to configure:

- `PORT`: The port on which the server will run (default: 3000)
- `EXCHANGE_API_KEY`: Your API key for the exchange rate service (optional)

**Note about API Keys:**
- The server will work without an API key using free public APIs
- For testing purposes, you can leave the `EXCHANGE_API_KEY` empty
- If the API is unavailable, the server will fall back to mock data

## Usage

### Starting the Server

```bash
python server.py
```

The server will start on the port specified in your `.env` file (default: 3000).

### Testing with the Client

```bash
python client.py
```

This will send a request to the MCP server and display the response.

### Testing with Ollama Integration

First, make sure you have Ollama installed and the gemma3:27b model downloaded:

```bash
ollama pull gemma3:27b
```

Then run the Ollama client:

```bash
python ollama_client.py
```

This will:
1. Fetch exchange rates from the MCP server
2. Format them into a prompt
3. Send the prompt to Ollama
4. Display and save the response

## API

The server exposes an MCP endpoint that accepts JSON-RPC 2.0 requests with the following methods:

### listTools

Lists available tools on the server.

Example request:
```json
{
  "jsonrpc": "2.0",
  "id": "1",
  "method": "listTools",
  "params": {}
}
```

### callTool

Calls a specific tool with parameters.

Example request:
```json
{
  "jsonrpc": "2.0",
  "id": "1",
  "method": "callTool",
  "params": {
    "name": "exchange-rates",
    "parameters": {
      "base": "EUR",
      "symbols": ["USD", "GBP", "JPY"]
    }
  }
}
```

Example response:
```json
{
  "jsonrpc": "2.0",
  "id": "1",
  "result": {
    "content": {
      "base": "EUR",
      "date": "2025-04-12",
      "rates": {
        "USD": 1.0923,
        "GBP": 0.8578,
        "JPY": 163.27
      }
    },
    "metadata": {
      "source": "exchange-rate-mcp",
      "timestamp": "2025-04-12T12:25:30.123Z",
      "baseCurrency": "EUR",
      "symbols": "USD,GBP,JPY"
    }
  }
}
```

## License

[MIT](LICENSE)

## Author

© Anthony Lim