Nordic Financial MCP
[smithery badge] [nordic_financial_mcp MCP server]
A production-grade semantic search server for Nordic financial markets — built for autonomous AI agents. 1,000,000+ vectors across exchange filings, company reports, commodity prices, freight rates, energy data and press releases.
Search: Natural language queries over annual reports, quarterly reports, exchange announcements and macroeconomic summaries — filtered by company, ticker, country, sector or year. Two-stage hybrid retrieval (dense + sparse BM25, fused via RRF) with cross-encoder reranking for high-precision results.
Live endpoint: https://mcp.aidatanorge.no/mcp
Transport: streamable-http
Registry: Smithery · MCP Registry · Glama · mcp.so
Connect
Add to your MCP client config:
Or with Claude Code:
Quick Test
Try the live demo in your browser:
👉 https://mcp.aidatanorge.no/demo
No installation, no configuration. Just search for "Equinor dividend", "Swedish policy rate", or "salmon price Q3".
For MCP Client Developers
This server follows the StreamableHTTP MCP transport. A complete handshake is required before calling tools.
Full Handshake Example (Copy-Paste Ready)
Common Issues & Solutions
Python Example with MCP SDK
Why This Matters
This handshake is automatic in MCP-compliant clients like Claude Desktop, LangChain, and the MCP Python SDK. If you're building a custom client, following the sequence above ensures compatibility.
The /demo endpoint shows how a browser can perform the same handshake using JavaScript fetch() — view source for a working implementation.
What This Is
AIDataNorge is a full-stack data pipeline and semantic search system that ingests, processes, and indexes financial data from Nordic markets into a vector database optimized for AI agent queries. It exposes data through a Model Context Protocol (MCP) server, making it natively compatible with Claude, LangChain, and other LLM-based agents.
The system is designed with autonomous machine-to-machine consumption in mind, including support for emerging agent payment protocols. The database is updated nightly.
MCP Tools
search_filings
Semantic search over Nordic company filings, press releases and macroeconomic summaries.
Search pipeline: Dense embedding (intfloat/e5-large-v2, 1024d) + sparse BM25, fused via Reciprocal Rank Fusion (RRF), reranked by mmarco-mMiniLMv2-L12-H384-v1. Natural language queries in any language are supported.
get_company_info
Look up a company in the official business registry.
parse_pdf_to_text
Download a PDF from a URL and extract all text, page by page.
get_current_power_price
Real-time day-ahead electricity spot prices for all Nordic bidding zones.
company_research
Run multiple targeted searches in a single call and get raw results grouped by section. The caller defines all sections and queries and is responsible for synthesizing the output.
For a fully orchestrated due diligence report where AI plans the sections and synthesizes the narrative, use Alfred MCP instead.
ping
Data Coverage
Total: 1,000,000+ vectors · Updated nightly
Architecture
Technical Stack
Data ingestion
- Python with Playwright for JavaScript-rendered IR pages and MFN feed
- PyMuPDF (fitz) for PDF text extraction
- Paragraph-aware chunking (512-token chunks, 100-token overlap)
- Dense embeddings:
intfloat/e5-large-v2 (1024d)
- Sparse embeddings:
Qdrant/bm25 via fastembed
Storage & search
- Qdrant vector database (self-hosted)
- Hybrid dense+sparse retrieval with Reciprocal Rank Fusion (RRF)
- Cross-encoder reranking (
mmarco-mMiniLMv2-L12-H384-v1)
Serving
- FastMCP 3.2 over HTTP (
/mcp endpoint)
- Cloudflare Tunnel — rate limited to 60 req/min per IP
- Compatible with Claude, LangChain, and any MCP-capable agent
Infrastructure
- Ubuntu Server 24 LTS, self-hosted
- 16 GB RAM
- Automated cron jobs for continuous ingestion
- Bitcoin full node (LND) for Lightning Network payments
- DigiByte full node with DigiRail and DigiDollar Oracle node
Agent Payment Infrastructure
The system is built with autonomous agent monetization in mind, supporting three complementary payment protocols:
x402 Micropayments
A pay-per-call variant of the server (mcp_server_x402.py) is implemented using the x402 protocol — the HTTP 402 payment standard for autonomous agents. Agents receive a payment requirement response, pay in USDC on Base, and retry automatically. Currently paused — x402 functionality will be integrated directly into the main server (mcp_server.py) in a future release.
Lightning Network (L402)
Running a full Bitcoin node with LND enables L402 — the HTTP payment protocol for autonomous agents. Agents can discover the API, receive a Lightning invoice, pay in millisatoshis, and get access — all without human intervention. Infrastructure in place, monetization layer in development.
DigiRail / DigiDollar
Also running a DigiByte full node with DigiRail (an agent payment protocol similar to L402) and a DigiDollar Oracle node. DigiDollar is the world's first UTXO-native decentralized stablecoin, implemented directly in DigiByte Core v9.26. The oracle node contributes to the decentralized price feed that maintains DigiDollar's USD peg — 15 of 30 randomly selected oracle nodes must reach consensus every ~25 minutes using Schnorr signatures.
This multi-protocol payment infrastructure (x402/Base + Bitcoin/Lightning + DigiByte/DigiRail) positions AIDataNorge to serve agents operating across different payment ecosystems.
Ingest Pipeline Design
Each data source has a dedicated ingest script with:
- Idempotent processing via MD5-based point IDs (upsert-safe)
processed.txt log to avoid redundant re-fetching
nohup + cron scheduling for unattended overnight runs
- Structured payload per chunk:
source, country, ticker, company_name, report_type, published_date, chunk_index, total_chunks
Chunking strategy: paragraphs are accumulated until reaching the 512-token model window. Chunks never split mid-sentence. 100-token overlap ensures context continuity across chunk boundaries.
Cron Schedule
Monitoring & Activity
Check server health
Check MCP server process
Check MCP query activity
Check Cloudflare tunnel
Skills Demonstrated
- RAG system design — end-to-end pipeline from raw data to semantic search
- Hybrid retrieval — dense+sparse embeddings with RRF fusion and cross-encoder reranking
- Web scraping at scale — Playwright, RSS feeds, REST APIs, PDF extraction
- Vector database operations — Qdrant, embedding models, reranking
- MCP server development — FastMCP, tool design for LLM agents
- Agent payment protocols — x402, L402, DigiRail
- Linux server administration — process management, cron, systemd
- Blockchain infrastructure — Bitcoin full node + LND, DigiByte full node + oracle
- Python engineering — async pipelines, error handling, idempotent design
- Financial data domain knowledge — Nordic exchanges, regulatory filings, macro data
Status (May 2026)
nordic_company_data: 1,000,000+ vectors — XBRL, MFN, Newsweb, Cision, GlobeNewswire, ENTSO-E, commodity/freight, macro
- MCP server: live at
https://mcp.aidatanorge.no/mcp
- Published: Smithery · MCP Registry · Glama · mcp.so
- x402 pay-per-call: implemented, currently paused — will be integrated into main server
- L402 / DigiRail: infrastructure in place, monetization layer in development
- Live demo:
https://mcp.aidatanorge.no/demo