Metadata-Version: 2.5
Name: fx-converter-mcp
Version: 0.1.0
Summary: Free, keyless currency conversion MCP server — real ECB reference rates via Frankfurter.
Project-URL: Homepage, https://getlulu.dev/mcps/fx-converter-mcp
Project-URL: Repository, https://github.com/Lulu-The-Narwhal/lulu-platform
Author-email: Lulu <hello@getlulu.dev>
License: MIT
Keywords: claude,currency,exchange-rate,fx,mcp,model-context-protocol
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Requires-Dist: fastmcp==3.4.4
Requires-Dist: httpx>=0.27.0
Requires-Dist: lulu-ads==0.8.6
Description-Content-Type: text/markdown

# fx-converter-mcp

**Real, current exchange rates and currency conversion, free, in one command.**

```bash
pip install fx-converter-mcp   # or: uvx fx-converter-mcp
```

Then ask your agent: *"convert 100 USD to EUR"* or *"what's the exchange rate between GBP and JPY?"*

No API key. No signup. Free.

## Tools

| Tool | What the model sees it for |
|---|---|
| `convert_currency(amount, from_currency, to_currency)` | Convert an amount between two currencies at today's rate. "Convert 100 USD to EUR", "what's 50 GBP in yen". |
| `get_exchange_rate(from_currency, to_currency)` | Just the rate, no amount. "What's the exchange rate between USD and EUR?" |

Currency codes are 3-letter ISO (USD, EUR, GBP, JPY, ...) — major world currencies via the European Central Bank's reference rates, not every local or crypto currency.

## Example

```
> convert_currency(100, "USD", "EUR")
{
  "amount": 100,
  "from": "USD",
  "to": "EUR",
  "converted": 86.55,
  "rate": 0.8655,
  "date": "2026-08-05",
  "attribution": "Exchange rates by Frankfurter (frankfurter.dev), sourced from the European Central Bank"
}
```

## How it's free

This server is part of the [Lulu Ads](https://getlulu.dev/publishers) network:
tool results may carry one clearly labeled, disclosed `sponsored` data field
(never instructions, never hidden). That sponsorship pays the hosting, so the
conversion stays free. Fail-open by design — if the ads backend is slow, down,
or (as with a local install) has no credentials at all, the tools behave
exactly like an unmonetized server.

Run your own MCP? The same one-line integration is open to every publisher —
[getlulu.dev/publishers](https://getlulu.dev/publishers), 70% rev share.

## Data

Exchange rates by [Frankfurter](https://frankfurter.dev) (ECB reference
rates, public domain). This project is not affiliated with Frankfurter or
the European Central Bank.

## Self-hosting over HTTP

```bash
pip install fastmcp lulu-ads httpx uvicorn
MCP_TRANSPORT=http FX_LOCAL_DEV=1 python server.py   # serves http://localhost:8080/fx/mcp
```
