mcpField
N
Nordic Economics Mcp

Nordic Economics Mcp

远程服务
github.com/AIDataNordic金融数据021 周前更新
代码仓库

关于 Nordic Economics Mcp

Nordic Financial MCP 是面向 AI Agent 的北欧金融数据搜索服务,覆盖公司报告、公告和宏观经济内容。它结合语义与关键词检索,并提供公司查询、PDF 文本提取和实时电价工具。

主要功能

  1. 01跨北欧金融数据语义搜索
  2. 02按公司、国家和年份筛选
  3. 03混合检索与交叉编码器重排
  4. 04查询公司注册信息
  5. 05提取 PDF 文本
  6. 06获取北欧实时电价

适用场景

  1. 01查找公司报告和交易所公告
  2. 02研究北欧宏观经济数据
  3. 03查询公司注册状态与地址
  4. 04读取未编入索引的 PDF 报告

MCP 相关

该 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'

详细介绍

Nordic Financial MCP

smithery badge nordic_financial_mcp MCP server

面向北欧金融市场的生产级语义搜索服务——专为自主 AI Agent 打造。包含 1,000,000+ 个向量,涵盖交易所公告、公司报告、大宗商品价格、运费、能源数据和新闻稿。

搜索: 使用自然语言查询年报、季报、交易所公告和宏观经济摘要,并按公司、股票代码、国家、行业或年份筛选。采用两阶段混合检索(密集检索 + 稀疏 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 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 Agent 查询优化的向量数据库中。它通过模型上下文协议(MCP)服务公开数据,可原生兼容 Claude、LangChain 及其他基于 LLM 的 Agent。

该系统旨在支持自主的机器对机器数据使用,并支持新兴的 Agent 支付协议。数据库每晚更新。


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,通过倒数排名融合(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

在一次调用中运行多个定向搜索,并按部分对原始结果分组。调用方定义所有部分和查询,并负责综合输出。

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 个季度
挪威宏观数据挪威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

技术栈

数据摄取

  • 使用 Python 和 Playwright 处理由 JavaScript 渲染的 IR 页面及 MFN 信息流
  • 使用 PyMuPDF (fitz) 提取 PDF 文本
  • 按段落切分(每块 512 个令牌,重叠 100 个令牌)
  • 稠密嵌入:intfloat/e5-large-v2 (1024d)
  • 稀疏嵌入:通过 fastembed 使用 Qdrant/bm25

存储与搜索

  • Qdrant 向量数据库(可自托管)
  • 使用倒数排名融合(RRF)的稠密与稀疏混合检索
  • 交叉编码器重排序(mmarco-mMiniLMv2-L12-H384-v1)

服务

  • 基于 HTTP 的 FastMCP 3.2(/mcp 端点)
  • Cloudflare Tunnel — 每个 IP 每分钟限流 60 次请求
  • 兼容 Claude、LangChain 及任何支持 MCP 的 Agent

基础设施

  • Ubuntu Server 24 LTS,可自托管
  • 16 GB RAM
  • 使用自动化 cron 作业持续摄取数据
  • 用于 Lightning Network 支付的 Bitcoin 全节点(LND)
  • 配备 DigiRail 和 DigiDollar Oracle 节点的 DigiByte 全节点

Agent 支付基础设施

该系统专为自主 Agent 变现而构建,支持三种互补的支付协议:

x402 微支付
使用 x402 协议 实现了按调用付费的服务变体(mcp_server_x402.py)——这是面向自主 Agent 的 HTTP 402 支付标准。Agent 会收到支付要求响应,在 Base 上使用 USDC 付款,然后自动重试。目前已暂停——未来版本将把 x402 功能直接集成到主服务(mcp_server.py)中。

闪电网络(L402)
运行完整的 Bitcoin 节点并启用 LND,即可使用 L402——面向自主 Agent 的 HTTP 支付协议。Agent 可以发现 API、接收闪电网络发票、以毫聪付款并获得访问权限,全程无需人工干预。基础设施已就绪,变现层正在开发中。

DigiRail / DigiDollar
此外,还运行 DigiByte 完整节点及 DigiRail(一种类似 L402 的 Agent 支付协议),并运行 DigiDollar Oracle 节点。DigiDollar 是全球首个 UTXO 原生去中心化稳定币,直接在 DigiByte Core v9.26 中实现。Oracle 节点为去中心化价格馈送提供支持,以维持 DigiDollar 与美元挂钩——每隔约 25 分钟,随机选出的 30 个 Oracle 节点中必须有 15 个使用 Schnorr 签名达成共识。

这套多协议支付基础设施(x402/Base + Bitcoin/Lightning + DigiByte/DigiRail)使 AIDataNorge 能够服务于运行在不同支付生态系统中的 Agent。


数据摄取流水线设计

每个数据源都有专用的数据摄取脚本,具备:

  • 通过基于 MD5 的点 ID 实现幂等处理(安全执行 upsert)
  • 使用 processed.txt 日志避免重复获取数据
  • 使用 nohup + cron 调度,在夜间无人值守运行
  • 每个数据块都包含结构化负载:source、country、ticker、company_name、report_type、published_date、chunk_index、total_chunks

分块策略:累积段落,直到达到 512-token 模型窗口。分块绝不会在句子中间截断。100-token 的重叠部分可确保跨块边界的上下文连贯性。


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、面向大模型 Agent 的工具设计
  • Agent 支付协议 — x402、L402、DigiRail
  • Linux 服务管理 — 进程管理、cron、systemd
  • 区块链基础设施 — Bitcoin 完整节点 + LND、DigiByte 完整节点 + Oracle
  • 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。