Nordic Economics Mcp について
Nordic Financial MCP は、企業レポートや取引所発表、マクロ経済情報を扱う北欧金融データ検索サーバーです。セマンティック検索とキーワード検索を組み合わせ、企業情報の照会、PDF 抽出、リアルタイム電力価格の取得にも対応します。
主な機能
- 01北欧金融データのセマンティック検索
- 02企業・国・年度による絞り込み
- 03ハイブリッド検索と再ランキング
- 04企業登記情報の照会
- 05PDF テキストの抽出
- 06北欧のリアルタイム電力価格取得
活用シーン
- 01企業レポートや取引所発表の検索
- 02北欧のマクロ経済データの調査
- 03企業の登記状況と住所の確認
- 04インデックス未登録の PDF レポートの読解
MCP 対応
StreamableHTTP 経由で金融検索、企業情報、PDF 抽出、電力価格取得のツールを提供します。MCP クライアントは公開されたリモートエンドポイントに接続できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.aidatanorge.no/mcpclaude mcp add --transport http nordic_financial_mcp https://mcp.aidatanorge.no/mcp{"mcpServers":{"nordic_financial_mcp":{"type":"http","url":"https://mcp.aidatanorge.no/mcp"}}}Cursor で開く{"servers":{"nordic_financial_mcp":{"type":"http","url":"https://mcp.aidatanorge.no/mcp"}}}VS Code で開く{"mcpServers":{"nordic_financial_mcp":{"type":"http","url":"https://mcp.aidatanorge.no/mcp"}}}{"mcpServers":{"nordic_financial_mcp":{"serverUrl":"https://mcp.aidatanorge.no/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
7| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| name | string | いいえ | 応答に含める任意のラベル。例:'healthcheck'、'agent-1'。 |
詳細
北欧金融 MCP
自律型 AI エージェント向けに構築された、北欧金融市場向けの本番環境対応セマンティック検索サーバーです。取引所への届出書類、企業レポート、商品価格、運賃、エネルギーデータ、プレスリリースにわたる 1,000,000 件以上のベクトルを備えています。
検索: 年次報告書、四半期報告書、取引所の発表、マクロ経済サマリーを自然言語で検索できます。企業、ティッカー、国、セクター、年で絞り込めます。2 段階のハイブリッド検索(高密度 + 疎な BM25、RRF による統合)とクロスエンコーダーによる再ランク付けで、高精度な結果を得られます。
ライブエンドポイント: https://mcp.aidatanorge.no/mcp
トランスポート: streamable-http
レジストリ: Smithery · MCP Registry · Glama · mcp.so
接続
MCP クライアントの設定に追加します:
{
"mcpServers": {
"nordic-financial": {
"type": "streamable-http",
"url": "https://mcp.aidatanorge.no/mcp"
}
}
}
または Claude Code を使用する場合:
claude mcp add --transport http nordic-financial https://mcp.aidatanorge.no/mcp
クイックテスト
ブラウザーでライブデモをお試しください:
👉 https://mcp.aidatanorge.no/demo
インストールも設定も不要です。「Equinor dividend」、「Swedish policy rate」、「salmon price Q3」などを検索するだけです。
MCP クライアント開発者向け
このサーバーは StreamableHTTP MCP トランスポートに準拠しています。ツールを呼び出す前に、ハンドシェイクを完了する必要があります。
ハンドシェイクの完全な例(コピーしてすぐに使用できます)
# 1. Create session and capture session ID
SESSION_ID=$(curl -X GET https://mcp.aidatanorge.no/mcp \
-H "Accept: application/json, text/event-stream" \
-s -i | grep -i "mcp-session-id" | awk '{print $2}' | tr -d '\r')
echo "Session ID: $SESSION_ID"
# 2. Initialize session
curl -X POST https://mcp.aidatanorge.no/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: $SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {"name": "example-client", "version": "1.0"}
}
}'
# 3. Send initialized notification
curl -X POST https://mcp.aidatanorge.no/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: $SESSION_ID" \
-d '{"jsonrpc": "2.0", "method": "notifications/initialized"}'
# 4. List available tools
curl -X POST https://mcp.aidatanorge.no/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: $SESSION_ID" \
-d '{"jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {}}'
# 5. Perform a search
curl -X POST https://mcp.aidatanorge.no/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: $SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "search_filings",
"arguments": {"query": "Equinor dividend", "limit": 3}
}
}'
よくある問題と解決方法
| エラー | 原因 | 解決方法 |
|---|---|---|
406 Not Acceptable | Accept ヘッダーに text/event-stream がありません | 次を送信します:Accept: application/json, text/event-stream |
400 Bad Request: Missing session ID | セッションが確立されていません | 最初に GET /mcp を実行し、返された mcp-session-id ヘッダーを使用します |
-32602 Invalid request parameters | tools/list の前に initialize がありません | 手順 1~3 を順番に完了します |
MCP SDK を使った Python の例
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async with streamablehttp_client("https://mcp.aidatanorge.no/mcp") as transport:
async with ClientSession(*transport) as session:
await session.initialize()
tools = await session.list_tools()
result = await session.call_tool(
"search_filings",
{"query": "Norwegian housing market Q3 2024", "country": "NO"}
)
print(result.content[0].text)
これが重要な理由
このハンドシェイクは、Claude Desktop、LangChain、MCP Python SDK などの MCP 準拠クライアントでは自動的に実行されます。カスタムクライアントを構築する場合は、上記の手順に従うことで互換性を確保できます。
/demo エンドポイントでは、ブラウザーで JavaScript の fetch() を使って同じハンドシェイクを実行する方法を確認できます。動作する実装についてはソースをご覧ください。
このシステムについて
AIDataNorge は、北欧市場の金融データを取り込み、処理して、AI エージェントからのクエリに最適化されたベクトルデータベースにインデックス化する、フルスタックのデータパイプライン兼セマンティック検索システムです。Model Context Protocol(MCP)サーバーを通じてデータを提供するため、Claude、LangChain、その他の LLM ベースのエージェントとネイティブに互換性があります。
このシステムは、自律型のマシン間利用を念頭に設計されており、新たに登場しているエージェント決済プロトコルにも対応しています。データベースは毎晩更新されます。
MCP ツール
search_filings
北欧企業の届出書類、プレスリリース、マクロ経済サマリーをセマンティック検索します。
search_filings(
query="Nordea net interest margin outlook 2025",
report_type="quarterly_report", # annual_report | quarterly_report | press_release | macro_summary
country="SE", # NO | SE | DK | FI
ticker="NDA", # optional — filter by company ticker
fiscal_year=2025, # optional — filter by year
sector="energy", # optional — seafood | energy | shipping
limit=10 # default 5, max 20
)
# Returns semantically ranked text chunks with rerank_score, hybrid_score, vector_score,
# company, ticker, country, fiscal_year, report_type, filing_date and full text.
検索パイプライン: 高密度埋め込み(intfloat/e5-large-v2、1024d)+ 疎な BM25 を Reciprocal Rank Fusion(RRF)で統合し、mmarco-mMiniLMv2-L12-H384-v1 で再ランク付けします。あらゆる言語での自然言語クエリに対応しています。
get_company_info
公式企業登録簿で企業を検索します。
get_company_info(
identifier="923609016", # org/CVR/business ID
country="NO" # NO (Brønnøysund) | DK (CVR) | FI (PRH)
)
# Returns company name, status and registered address.
parse_pdf_to_text
URL から PDF をダウンロードし、ページごとにすべてのテキストを抽出します。
parse_pdf_to_text(
pdf_url="https://example.com/annual_report_2024.pdf"
)
# Returns extracted text with page separators.
# Useful for reading report attachments not indexed in the main database.
get_current_power_price
北欧のすべての入札ゾーンにおける、リアルタイムの前日電力スポット価格を取得します。
get_current_power_price(
zone="NO1", # NO1–NO5, SE1–SE4, DK1, DK2, FI
include_tomorrow=False # fetch tomorrow's prices if available (published ~13:00 CET)
)
# Returns EUR/kWh — current hour price + full hourly breakdown + daily min/max/avg.
# Norwegian zones sourced from hvakosterstrommen.no, others directly from ENTSO-E.
# Handles both PT60M (hourly) and PT15M (15-min) resolutions.
company_research
1 回の呼び出しで複数の対象を絞った検索を実行し、セクションごとにグループ化された生の結果を取得します。呼び出し元がすべてのセクションとクエリを定義し、出力を統合する責任を負います。
company_research(
company="Equinor",
sections=[
{"name": "financials", "query": "Equinor revenue EBITDA operating profit 2024", "ticker": "EQNR"},
{"name": "risk", "query": "Equinor climate regulatory risk stranded assets", "ticker": "EQNR"},
{"name": "macro", "query": "Brent crude oil price energy sector Norway 2024", "limit": 3},
{"name": "news", "query": "Equinor press release dividend acquisition 2024", "ticker": "EQNR"}
]
)
# Returns: {company, generated_at, sections} — one entry per section with ranked text chunks.
# All sections are searched in parallel. Up to 8 sections, max 10 results each.
# Use ticker on company-specific sections to avoid false positives from documents
# that merely mention the company as a customer or competitor.
AI がセクションを計画し、説明を統合する、オーケストレーションされた完全なデューデリジェンスレポートが必要な場合は、代わりに Alfred MCP をご利用ください。
ping
ping(name="world")
# Returns: "Hello world! Nordic MCP server is running."
データの対象範囲
| ソース | 地域 | コンテンツ | 量 |
|---|---|---|---|
| XBRL ESEF (filings.xbrl.org) | NO/SE/DK/FI/IS | 年次報告書、規制対象市場、2020 年~現在 | 約 89k ベクトル |
| MFN Nordics | SE/NO/DK/FI | 年次・四半期報告書、First North 企業 | 約 116k ベクトル |
| Oslo Børs Newsweb | NO | 取引所発表、2020 年~現在 | 約 52k ベクトル |
| Nasdaq Copenhagen | DK | 取引所発表、2020 年~現在 | 約 8k ベクトル |
| Nasdaq Helsinki | FI | 取引所発表、2020 年~現在 | 約 5k ベクトル |
| Nasdaq Stockholm | SE | 取引所発表、2020 年~現在 | 進行中 |
| Cision | SE/NO/DK/FI | プレスリリース | 約 20k ベクトル |
| GlobeNewswire | NO/SE/DK/FI | プレスリリース、月~金に毎時更新 | 約 500 ベクトル |
| ENTSO-E | NO/SE/DK/FI | 全入札ゾーンの前日電力価格 | 約 24k ベクトル |
| 商品・貨物輸送 | グローバル | 石油、ガス、金属、海運運賃(BDRY/FRO/ZIM プロキシ) | 25 四半期 |
| ノルウェーのマクロ経済 | Norway | GDP、CPI、金利、住宅、サーモン、電力 | 24 四半期 |
| 北欧のマクロ経済 | SE/DK/FI | 金利、住宅、信用、電力 | 72 四半期 |
合計:1,000,000 件以上のベクトル · 毎晩更新
アーキテクチャ
Data Sources Pipeline Serving
───────────────── ───────────────── ─────────────────
XBRL ESEF → Python ingest scripts → Qdrant
MFN Nordics → + Playwright scraping → Vector Database
Oslo Børs Newsweb → + PDF extraction → (1,000,000+ vectors)
Nasdaq Copenhagen → + Chunking → ↓
Cision / GlobeNewswire →
SSB / Norges Bank → + Chunking → ↓
SSB / Norges Bank → + Dense embeddings → MCP Server
SCB / DST / stat.fi →
→ (e5-large-v2, 1024d) → (FastMCP 3.2)
→ + Sparse BM25 → ↓
→ + RRF fusion → AI Agents / LLMs
技術スタック
データ取り込み
- JavaScript でレンダリングされる IR ページおよび MFN フィード向けの Playwright を使用した Python
- PDF テキスト抽出用の PyMuPDF (fitz)
- 段落を考慮したチャンク分割(512 トークンのチャンク、100 トークンのオーバーラップ)
- 密ベクトル埋め込み:
intfloat/e5-large-v2(1024d) - スパース埋め込み:fastembed 経由の
Qdrant/bm25
ストレージと検索
- Qdrant ベクトルデータベース(セルフホスト)
- Reciprocal Rank Fusion(RRF)による密ベクトルとスパースベクトルのハイブリッド検索
- クロスエンコーダーによる再ランキング(
mmarco-mMiniLMv2-L12-H384-v1)
提供
- HTTP 経由の FastMCP 3.2(
/mcpエンドポイント) - Cloudflare Tunnel — IP ごとに 60 req/min にレート制限
- Claude、LangChain、および MCP 対応のあらゆるエージェントと互換
インフラストラクチャ
- Ubuntu Server 24 LTS、セルフホスト
- 16 GB RAM
- 継続的な取り込みのための自動 cron ジョブ
- Lightning Network の支払いに対応する Bitcoin フルノード(LND)
- DigiRail および DigiDollar Oracle ノードを備えた DigiByte フルノード
エージェント決済インフラストラクチャ
このシステムは、自律型エージェントの収益化を念頭に構築されており、相互に補完する3つの決済プロトコルに対応しています。
x402 マイクロペイメント
サーバーの従量課金版(mcp_server_x402.py)は、自律型エージェント向けのHTTP 402決済標準であるx402プロトコルを使用して実装されています。エージェントは決済要求のレスポンスを受け取り、Base上でUSDCを支払い、自動的に再試行します。現在は一時停止中です。今後のリリースで、x402機能をメインサーバー(mcp_server.py)に直接統合する予定です。
Lightning Network(L402)
LNDを使用してフルBitcoinノードを稼働させることで、自律型エージェント向けのHTTP決済プロトコルであるL402を利用できます。エージェントはAPIを検出し、Lightning請求書を受け取り、ミリサトシ単位で支払い、人間の介入なしにアクセスできます。インフラストラクチャは整備済みで、収益化レイヤーは開発中です。
DigiRail / DigiDollar
また、DigiRail(L402に類似したエージェント決済プロトコル)を備えたDigiByteフルノードと、DigiDollarオラクルノードも稼働しています。DigiDollarは、DigiByte Core v9.26に直接実装された、世界初のUTXOネイティブな分散型ステーブルコインです。オラクルノードは、DigiDollarの米ドルペッグを維持する分散型価格フィードに貢献しています。ランダムに選ばれた30のオラクルノードのうち15が、シュノア署名を使用して約25分ごとにコンセンサスに到達する必要があります。
このマルチプロトコル決済インフラストラクチャ(x402/Base + Bitcoin/Lightning + DigiByte/DigiRail)により、AIDataNorgeは異なる決済エコシステムで稼働するエージェントにサービスを提供できます。
取り込みパイプラインの設計
各データソースには、専用の取り込みスクリプトがあります。主な特徴は以下のとおりです。
- MD5ベースのポイントIDによる冪等な処理(upsertに安全)
- 再取得を避けるための
processed.txtログ - 無人で夜間実行するための
nohupとcronによるスケジュール設定 - チャンクごとの構造化ペイロード:
source、country、ticker、company_name、report_type、published_date、chunk_index、total_chunks
チャンク分割の方針:段落を蓄積し、モデルの512トークンのウィンドウに達するまで続けます。チャンクが文の途中で分割されることはありません。100トークンのオーバーラップにより、チャンク境界をまたいだ文脈の連続性を確保します。
cronスケジュール
| 時刻 | ジョブ |
|---|---|
| 日曜日 03:17 | XBRL年次報告書 |
| 月〜金 06:00 | yfinance — 株価と外国為替レート |
| 毎日 06:15 | MFN Nordics — 四半期報告書とプレスリリース |
| 月〜金 06:30 | ENTSO-E — エネルギーデータ |
| 毎日 07:00 | Oslo Børs Newsweb — 取引所発表 |
| 月〜金 08:00〜18:00(毎時) | GlobeNewswire — プレスリリース(NO/SE/DK/FI) |
| 毎日 09:00 | クエリ分析レポート(メール) |
モニタリングとアクティビティ
サーバーの稼働状況を確認
# Qdrant responding?
curl http://localhost:6333
# Vector count
curl http://localhost:6333/collections/nordic_company_data | python3 -m json.tool
MCP サーバープロセスを確認
ps aux | grep mcp_server.py
MCPクエリアクティビティを確認
# Tail live log
tail -f ~/logs/mcp_server.log
# Run full query analysis
cd ~/norsk-mcp-server && venv/bin/python3 analyze_queries.py
Cloudflareトンネルを確認
journalctl -u cloudflared --since "1 hour ago" | tail -50
実証されるスキル
- RAGシステム設計 — 生データからセマンティック検索までのエンドツーエンドパイプライン
- ハイブリッド検索 — RRF融合とクロスエンコーダーによる再ランキングを用いた密ベクトル・疎ベクトル埋め込み
- 大規模なウェブスクレイピング — Playwright、RSSフィード、REST API、PDF抽出
- ベクトルデータベース運用 — Qdrant、埋め込みモデル、再ランキング
- MCP サーバー開発 — FastMCP、LLMエージェント向けのツール設計
- エージェント決済プロトコル — x402、L402、DigiRail
- Linuxサーバー管理 — プロセス管理、cron、systemd
- ブロックチェーンインフラストラクチャ — BitcoinフルノードとLND、DigiByteフルノードとオラクル
- Pythonエンジニアリング — 非同期パイプライン、エラー処理、冪等な設計
- 金融データ分野の知識 — 北欧の取引所、規制関連の提出書類、マクロデータ
ステータス(2026年5月)
nordic_company_data:1,000,000 件以上のベクトル — XBRL、MFN、Newsweb、Cision、GlobeNewswire、ENTSO-E、商品・貨物、マクロ経済- MCP サーバー:
https://mcp.aidatanorge.no/mcpで稼働中 - 公開先:Smithery · MCP Registry · Glama · mcp.so
- x402 の従量課金:実装済み、現在は一時停止中 — メインサーバーに統合予定
- L402 / DigiRail:インフラは整備済み、収益化レイヤーを開発中
- ライブデモ:
https://mcp.aidatanorge.no/demo
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。