mcpField
N
Nordic Economics Mcp

Nordic Economics Mcp

リモート
github.com/AIDataNordic金融データ021 週間前に更新
リポジトリ

Nordic Economics Mcp について

Nordic Financial MCP は、企業レポートや取引所発表、マクロ経済情報を扱う北欧金融データ検索サーバーです。セマンティック検索とキーワード検索を組み合わせ、企業情報の照会、PDF 抽出、リアルタイム電力価格の取得にも対応します。

主な機能

  1. 01北欧金融データのセマンティック検索
  2. 02企業・国・年度による絞り込み
  3. 03ハイブリッド検索と再ランキング
  4. 04企業登記情報の照会
  5. 05PDF テキストの抽出
  6. 06北欧のリアルタイム電力価格取得

活用シーン

  1. 01企業レポートや取引所発表の検索
  2. 02北欧のマクロ経済データの調査
  3. 03企業の登記状況と住所の確認
  4. 04インデックス未登録の PDF レポートの読解

MCP 対応

StreamableHTTP 経由で金融検索、企業情報、PDF 抽出、電力価格取得のツールを提供します。MCP クライアントは公開されたリモートエンドポイントに接続できます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.aidatanorge.no/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

7
パラメーター型必須説明
namestringいいえ応答に含める任意のラベル。例:'healthcheck'、'agent-1'。

詳細

北欧金融 MCP

smithery badge nordic_financial_mcp MCP server

自律型 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 AcceptableAccept ヘッダーに text/event-stream がありません次を送信します:Accept: application/json, text/event-stream
400 Bad Request: Missing session IDセッションが確立されていません最初に GET /mcp を実行し、返された mcp-session-id ヘッダーを使用します
-32602 Invalid request parameterstools/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 NordicsSE/NO/DK/FI年次・四半期報告書、First North 企業約 116k ベクトル
Oslo Børs NewswebNO取引所発表、2020 年~現在約 52k ベクトル
Nasdaq CopenhagenDK取引所発表、2020 年~現在約 8k ベクトル
Nasdaq HelsinkiFI取引所発表、2020 年~現在約 5k ベクトル
Nasdaq StockholmSE取引所発表、2020 年~現在進行中
CisionSE/NO/DK/FIプレスリリース約 20k ベクトル
GlobeNewswireNO/SE/DK/FIプレスリリース、月~金に毎時更新約 500 ベクトル
ENTSO-ENO/SE/DK/FI全入札ゾーンの前日電力価格約 24k ベクトル
商品・貨物輸送グローバル石油、ガス、金属、海運運賃(BDRY/FRO/ZIM プロキシ)25 四半期
ノルウェーのマクロ経済NorwayGDP、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:17XBRL年次報告書
月〜金 06:00yfinance — 株価と外国為替レート
毎日 06:15MFN Nordics — 四半期報告書とプレスリリース
月〜金 06:30ENTSO-E — エネルギーデータ
毎日 07:00Oslo 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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。