We Built a Free MCP Server for European Financial Data

By NexusForge 3 min read
  • mcp-server
  • open-source
  • ecb
  • eurostat
  • eu-finance
  • launch
On this page

Key facts

  • eu-finance is published to npm as @nexusforgetools/eu-finance and registered in Anthropic's official MCP registry.

    npm / Anthropic MCP Registry · Verified 2026-04-16

  • The server uses Redis caching (TTL 1h for rates, 6h for inflation, 24h for GDP) to avoid hammering upstream ECB and Eurostat APIs.

    NexusForge GitHub — mcp-eu-finance · Verified 2026-04-16

  • The free plan allows 100 calls per day with no API key required.

    NexusForge Pricing · Verified 2026-04-16

The Model Context Protocol arrived in late 2024 and immediately changed how AI agents access external data. Instead of brittle function calls or prompt-injected context, MCP gives agents structured, typed tools that behave predictably.

We built eu-finance as the first server in the NexusForge portfolio. Here’s what we learned.

The problem

AI agents are terrible at current financial data — and for good reason. Training data has a cutoff. ECB rates change every six weeks. Inflation prints monthly. EUR/USD moves every second.

The options before MCP were bad:

  1. Paste data into the prompt (fragile, doesn’t scale)
  2. Build a custom function call integration (maintenance burden)
  3. Accept stale answers (not acceptable for financial use)

MCP changes the architecture. The server handles data fetching. The agent handles reasoning. Clean separation.

What we built

Six tools covering the European financial data that agents most commonly need:

get_ecb_rates — the three ECB key interest rates (deposit facility, main refi, marginal lending). Sourced from the ECB API directly. Updated within 1 hour of any change.

get_euro_exchange — EUR exchange rates against 30+ currencies via the ECB and Frankfurter API. Updated hourly.

get_eu_inflation — HICP inflation by EU member state from Eurostat. Monthly data, cached for 6 hours.

get_eu_gdp — Quarterly GDP growth by country from Eurostat. Cached for 24 hours to match the publication cadence.

get_eu_unemployment — Monthly unemployment by country. Eurostat source.

compare_eu_economies — Multi-indicator cross-country comparison. One call, structured output.

Technical decisions

No database. Every call fetches from ECB/Eurostat in real time. Redis caches responses to avoid hammering the upstream APIs. TTL varies by data type: 1h for rates, 6h for inflation, 24h for GDP. This keeps the architecture stateless and the data fresh.

Dual transport. The server runs in stdio mode for local MCP clients (Claude Desktop, Claude Code, Cursor) and HTTP/SSE mode for remote deployments. The same binary handles both. Set MCP_TRANSPORT=http PORT=3001 for HTTP mode.

TypeScript strict + Zod. Every tool parameter is validated with Zod before hitting the upstream API. Every response is typed. The SDK enforces this at the protocol level.

Official SDK. We use @modelcontextprotocol/sdk — the reference implementation from Anthropic. No custom protocol code.

Distribution

The server is published to:

  • npm as @nexusforgetools/eu-finance — install via npx -y @nexusforgetools/eu-finance
  • Anthropic’s official MCP registry at io.github.nexusforge-tools/mcp-eu-finance
  • Glama.ai, mcp.so, Smithery — the main MCP discovery platforms

Getting into Anthropic’s registry was straightforward: submit via mcp-publisher, provide a valid smithery.yaml, and have a clean npx experience. Claude Code’s claude mcp add command pulls directly from this registry.

What we discovered about MCP UX

The quality of the tool description matters more than the implementation. Agents decide whether to call a tool based on its description. We rewrote the descriptions twice before they consistently triggered on the right questions.

Caching is non-negotiable. Without Redis, a single comparison query touching 5 countries × 3 indicators would fire 15 upstream API calls. With caching, it fires 0–3 depending on what’s already cached.

The SDMX format from ECB and Eurostat is hostile to agents. The raw response is XML with nested series keys. We parse it entirely before returning JSON. The agent never sees SDMX.

Free + freemium

eu-finance is free at 100 calls/day, no API key required. The free plan exists to build distribution and trust. The business model is in Pro (€29/month, 5K calls/day) and Scale (€199/month, 50K calls/day) — unlocking higher limits and the rest of the NexusForge server portfolio as it launches.

The next server in the portfolio is web-enrichment: structured web scraping via Playwright. That one has real compute costs, which is why it’s behind a paywall.

Try it

# Claude Code
claude mcp add eu-finance -- npx -y @nexusforgetools/eu-finance

# Claude Desktop — add to claude_desktop_config.json
{
  "mcpServers": {
    "eu-finance": {
      "command": "npx",
      "args": ["-y", "@nexusforgetools/eu-finance"]
    }
  }
}

Source: github.com/nexusforge-tools/mcp-eu-finance

Frequently Asked Questions

Is eu-finance open source?

Yes. The server source is on GitHub at github.com/nexusforge-tools/mcp-eu-finance under MIT license.

Why European data specifically?

ECB and Eurostat provide high-quality, freely accessible APIs. They're a perfect foundation for demonstrating what structured MCP tools look like — clean responses, no hallucination on data that's easily verifiable.

What is the business model?

eu-finance is free up to 100 calls/day. The server is a product-led growth entry point into the NexusForge portfolio. Pro (€29/month) and Scale (€199/month) plans unlock higher limits and access to additional servers.

Ready to try NexusForge? Get started free →

Get Started

Sources

  1. [1] Model Context Protocol specification
  2. [2] ECB Statistical Data Warehouse API
  3. [3] mcp-eu-finance source on GitHub

Was this guide helpful?