Semantic search over Nordic financial markets: filings, reports, and macro data for NO/SE/DK/FI.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
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
Add to your MCP client config:
Or with Claude Code:
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".
This server follows the StreamableHTTP MCP transport. A complete handshake is required before calling tools.
| Error | Cause | Solution |
|---|---|---|
406 Not Acceptable | Missing text/event-stream in Accept header | Send: Accept: application/json, text/event-stream |
400 Bad Request: Missing session ID | No session established | First GET /mcp, use returned mcp-session-id header |
-32602 Invalid request parameters | Missing initialize before tools/list | Complete steps 1-3 in order |
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.
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.
search_filingsSemantic 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_infoLook up a company in the official business registry.
parse_pdf_to_textDownload a PDF from a URL and extract all text, page by page.
get_current_power_priceReal-time day-ahead electricity spot prices for all Nordic bidding zones.
company_researchRun 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| Source | Geography | Content | Volume |
|---|---|---|---|
| XBRL ESEF (filings.xbrl.org) | NO/SE/DK/FI/IS | Annual reports, regulated markets, 2020βpresent | ~89k vectors |
| MFN Nordics | SE/NO/DK/FI | Annual & quarterly reports, First North companies | ~116k vectors |
| Oslo BΓΈrs Newsweb | NO | Exchange announcements, 2020βpresent | ~52k vectors |
| Nasdaq Copenhagen | DK | Exchange announcements, 2020βpresent | ~8k vectors |
| Nasdaq Helsinki | FI | Exchange announcements, 2020βpresent | ~5k vectors |
| Nasdaq Stockholm | SE | Exchange announcements, 2020βpresent | in progress |
| Cision | SE/NO/DK/FI | Press releases | ~20k vectors |
| GlobeNewswire | NO/SE/DK/FI | Press releases, updated hourly MonβFri | ~500 vectors |
| ENTSO-E | NO/SE/DK/FI | Day-ahead electricity prices, all bidding zones | ~24k vectors |
| Commodity & freight | Global | Oil, gas, metals, shipping rates (BDRY/FRO/ZIM proxies) | 25 quarters |
| Macro Norway | Norway | GDP, CPI, rates, housing, salmon, power | 24 quarters |
| Macro Nordics | SE/DK/FI | Rates, housing, credit, power | 72 quarters |
Total: 1,000,000+ vectors Β· Updated nightly
Data ingestion
intfloat/e5-large-v2 (1024d)Qdrant/bm25 via fastembedStorage & search
mmarco-mMiniLMv2-L12-H384-v1)Serving
/mcp endpoint)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.
Each data source has a dedicated ingest script with:
processed.txt log to avoid redundant re-fetchingnohup + cron scheduling for unattended overnight runssource, country, ticker, company_name, report_type, published_date, chunk_index, total_chunksChunking 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.
| Time | Job |
|---|---|
| 03:17 Sundays | XBRL annual reports |
| 06:00 MonβFri | yfinance β stock prices and FX rates |
| 06:15 daily | MFN Nordics β quarterly reports and press releases |
| 06:30 MonβFri | ENTSO-E β energy data |
| 07:00 daily | Oslo BΓΈrs Newsweb β exchange announcements |
| 08:00β18:00 hourly MonβFri | GlobeNewswire β press releases (NO/SE/DK/FI) |
| 09:00 daily | Query analysis report (email) |
nordic_company_data: 1,000,000+ vectors β XBRL, MFN, Newsweb, Cision, GlobeNewswire, ENTSO-E, commodity/freight, macrohttps://mcp.aidatanorge.no/mcphttps://mcp.aidatanorge.no/demoShowcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/nordic-financial-mcp)<a href="https://allmcps.com/mcp/nordic-financial-mcp"><img src="https://allmcps.com/api/badge/nordic-financial-mcp?style=directory" alt="Nordic Financial Mcp on AllMCPs" /></a>