MCP ready

MCP Server — connect AI to interest rate data

Give Claude, Cursor, or any MCP-compatible agent live access to central bank policy rates, interbank benchmarks, and treasury yields for 50+ countries — no scraping, no stale training data.

What is MCP, and why does it matter?

The Model Context Protocol (MCP) lets AI assistants call external tools and fetch live data mid-conversation, instead of relying on outdated training data. Point an MCP-compatible agent at our endpoint and it can pull real interest rate data — current or historical — the moment you ask.

Example: ask Claude "What's the spread between SOFR and EURIBOR 3M right now?" and it calls the latest tool automatically — no manual API calls, no copy-pasting JSON.

Live data

50+ countries, updated on each institution's own publication schedule.

Natural language

Ask questions in plain English — the agent maps them to the right tool.

Same API quota

MCP calls use your existing plan. One tool call = one API request.

Available MCP tools

Seven tools, one per REST endpoint — see the full API reference for parameters.

symbols

List all 44+ available rate symbols with metadata (category, country, currency, frequency). Use this first to discover valid symbol names.

latest

Most recent value for one or more symbols, with the exact observation date and currency per symbol.

historical

Value of one or more symbols on a specific past date, with an optional `nearest` fallback for daily symbols on weekends/holidays.

timeseries

Full history of one or more symbols between two dates, keyed by observation date — ideal for charting.

fluctuation

Start/end value, absolute and percentage change, and min/max over a date range, for one or more symbols.

ohlc

Open/High/Low/Close aggregates over weekly, monthly, or quarterly periods, computed from daily observations.

convert

Compare total interest cost of a loan amount under two different rate symbols over a given term.

Getting started

One endpoint for every client. Authenticate with your API key as a header or query parameter — no separate MCP credential to manage.

MCP endpoint

https://mcp.interestratesapi.com/mcp

Two ways to authenticate, depending on your client:

  • OAuth (recommended for Claude/Cursor): just add the endpoint URL below — no key to copy anywhere. The client detects that authentication is required, opens a login popup, and you approve the connection. See the Claude/Cursor sections below.
  • Static key (for CLI tools and scripts): send it as Authorization: Bearer YOUR_API_KEY or X-API-Key: YOUR_API_KEY.

We don't support putting the key directly in the URL as ?apikey= for Claude specifically — Claude Desktop and claude.ai strip query-string credentials from connector URLs before connecting, and the MCP spec recommends against URL-embedded tokens anyway (they end up in logs and browser history). Use OAuth or a header instead.

Need a key first? Register for a free trial, then grab it from your dashboard.

Connect Claude Desktop / claude.ai

This uses OAuth — Claude detects it automatically and shows a sign-in prompt. There's no key or client ID to paste anywhere.

  1. 1Open Settings → Connectors → Add custom connector (same steps on claude.ai and in Claude Desktop — it's saved to your account either way).
  2. 2Name it (e.g. Interest Rates API) and paste the Remote MCP server URL:
Remote MCP server URL
https://mcp.interestratesapi.com/mcp
  1. 3Leave Authentication and OAuth client on their defaults — Claude detects OAuth support on its own (you'll see a Detected badge). No manual client ID is needed: this server supports Dynamic Client Registration, so Claude registers itself automatically.
  2. 4Click Add, then Connect. You'll be redirected to sign in at interestratesapi.com (or create an account if you don't have one), then asked to approve the connection.
  3. 5Try asking: "What's the current Fed Funds Rate?"

Connect Claude Code (CLI)

Two options — pick whichever fits how you work.

Option A: OAuth (opens a browser to sign in)

bash
claude mcp add --transport http interestratesapi https://mcp.interestratesapi.com/mcp

Then run /mcp inside a session, select the server, and choose Authenticate.

Option B: static key (no browser needed)

bash
claude mcp add --transport http interestratesapi https://mcp.interestratesapi.com/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"

Verify either way with claude mcp list from the terminal.

Connect Cursor

In Cursor Settings → MCP → Add Custom MCP Server, paste the URL below. Cursor detects OAuth support and prompts you to sign in — no key needed for this path.

Server URL
https://mcp.interestratesapi.com/mcp

Prefer a static key instead? Add this to ~/.cursor/mcp.json instead of using the OAuth prompt:

mcp.json
{
  "mcpServers": {
    "interestratesapi": {
      "url": "https://mcp.interestratesapi.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Save, then fully quit and reopen Cursor. Try: "What's the current Fed Funds Rate?"

Python example

A minimal client that calls the latest tool over MCP's JSON-RPC 2.0 protocol.

get_latest_rate.py
import httpx
import json
import asyncio

MCP_SERVER_URL = "https://mcp.interestratesapi.com/mcp"
API_KEY = "YOUR_API_KEY"

async def call_mcp_tool(tool_name: str, arguments: dict):
    async with httpx.AsyncClient(timeout=30) as client:
        init_response = await client.post(
            MCP_SERVER_URL,
            headers={"Authorization": f"Bearer {API_KEY}"},
            json={
                "jsonrpc": "2.0",
                "id": "1",
                "method": "initialize",
                "params": {
                    "protocolVersion": "2024-11-05",
                    "capabilities": {},
                    "clientInfo": {"name": "PythonClient", "version": "1.0.0"},
                },
            },
        )
        session_id = init_response.headers.get("Mcp-Session-Id")

        response = await client.post(
            MCP_SERVER_URL,
            headers={"Authorization": f"Bearer {API_KEY}", "Mcp-Session-Id": session_id},
            json={
                "jsonrpc": "2.0",
                "id": "2",
                "method": "tools/call",
                "params": {"name": tool_name, "arguments": arguments},
            },
        )
        return response.json()

async def main():
    result = await call_mcp_tool("latest", {"symbols": "FED_FUNDS,SOFR"})
    print(json.dumps(result, indent=2))

asyncio.run(main())

Frequently asked questions

Two ways: (1) OAuth — just add the URL as a custom connector in Claude or Cursor and sign in when prompted, no key to copy; or (2) a static key via an Authorization: Bearer YOUR_API_KEY or X-API-Key header, for CLI tools and scripts. We don't support a key embedded in the URL (?apikey=) for Claude specifically — Claude Desktop/claude.ai strip query-string credentials from connector URLs, so that path silently fails there.
No. This server supports Dynamic Client Registration (RFC 7591) — Claude, Claude Code, and Cursor all register themselves automatically the first time you connect. Just paste the server URL.
Yes. Each MCP tool call is one API request and counts toward your plan's monthly quota, the same as a REST call — whether it was authenticated with a key or an OAuth token.
Yes — call POST /oauth/token with grant_type=client_credentials to exchange your key for a short-lived bearer token with no browser involved. See /auth.md for details.
Yes. Any client that speaks the Model Context Protocol (JSON-RPC 2.0 over HTTP) can connect — Claude, Cursor, custom Python/Node clients, and anything else that supports remote MCP servers.