Skip to main content
Glama

SVV-MCP-unofficial

⚠️ 非官方项目。 这是一个社区构建的 MCP 服务器,并非由挪威公共道路管理局(Statens vegvesen,SVV)创建、运营或以任何方式关联。"SVV" 仅用于描述该服务器使用的数据来源。所提供的数据来自挪威公共道路管理局自己的开放 DATEX II 端点,使用须遵守其条款(见许可)。

MCP 服务器(Model Context Protocol),通过 DATEX II 让 LLM 访问挪威公共道路管理局的开放实时数据:

  • 🌡️ 气象测量数据,来自道路管理局的气象站(路面温度、气温、风、露点),并自动提示湿滑路面

  • 🌦️ 天气预报(逐小时,未来 24 小时)

  • 📷 路网沿线网络摄像头

  • 🚗 主要路段的实时行程时间

  • ⚠️ 交通信息(事故、道路施工、封闭、山体滑坡/洪水等)

  • 🔧 内置故障排查工具,可显示原始 XML 结构,因为 NPRA 的架构可能会发生变化

所有 DATEX 端点都需要在挪威公共道路管理局注册用户(免费)。 在此申请访问权限 →


目录


Related MCP server: aria-mcp-trafik-dk

本地快速开始

需要 Python 3.10+。

git clone https://github.com/<ditt-brukernavn>/svv-mcp-unofficial.git
cd svv-mcp-unofficial
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt

cp .env.example .env
# rediger .env og fyll inn DATEX_USERNAME / DATEX_PASSWORD

export $(grep -v '^#' .env | xargs)   # eller bruk python-dotenv
python server.py

如果环境中未设置 PORT,服务器将通过 stdio 启动——便于使用 MCP Inspector 进行本地测试:

npx @modelcontextprotocol/inspector python server.py

设置 GitHub 仓库

  1. 在 GitHub 上创建一个新的(空)仓库,例如 svv-mcp-unofficial

  2. 推送代码:

    cd svv-mcp-unofficial
    git init
    git add .
    git commit -m "Initial commit: svv-mcp-unofficial server"
    git branch -M main
    git remote add origin https://github.com/<ditt-brukernavn>/svv-mcp-unofficial.git
    git push -u origin main
  3. 重要: .env 已在 .gitignore 中——请务必确认你永远不会提交真实的 DATEX 用户名/密码。请改为提交 .env.example(不含值),该文件已存在于仓库中。

登录模式:共享账户 vs. 每用户

服务器支持两种模式,由是否设置 SVV_MCP_PUBLIC_URL 决定:

共享账户

多用户(OAuth)

环境变量

DATEX_USERNAME / DATEX_PASSWORD

SVV_MCP_PUBLIC_URL, CREDENTIAL_ENCRYPTION_KEY

使用谁的 DATEX 账户

你的,由所有人共享

每个用户自己的

新用户引导

首次使用自己的 DATEX 密码登录

需要 Railway 卷

是(存储加密的凭据)

多用户模式 允许你与他人共享一个 Railway URL,而无需他们拥有自己的服务器:当有人将连接器添加到 Claude 时,他们会被发送到服务器自托管的登录页面(/login),在那里粘贴自己的 DATEX 用户名/密码,并看到如何获取这些信息的链接。凭据以加密形式(Fernet)存储在 Railway 卷上的 SQLite 文件中,并与 MCP 服务器颁发给 Claude 的令牌关联。

在 Railway 上设置多用户模式

  1. 在服务上添加一个,挂载到 /data(Railway 仪表板:Settings → Volumes → New Volume,挂载路径 /data)。

  2. 生成加密密钥:

    python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
  3. 在服务上设置变量:

    • SVV_MCP_PUBLIC_URL = 你的 Railway URL(例如 https://svv-mcp-unofficial-production.up.railway.app

    • CREDENTIAL_ENCRYPTION_KEY = 步骤 2 中的密钥

    • SVV_MCP_DB_PATH = /data/svv_mcp.db

    • 在此模式下不要设置 DATEX_USERNAME/DATEX_PASSWORD

  4. 重新部署。/mcp 现在需要 OAuth;/login 是自托管的登录页面。

在分享 URL 之前测试 OAuth 流程

这是项目中最复杂的部分,应手动测试一次:

npx @modelcontextprotocol/inspector

将 Inspector 指向 https://<你的域名>/mcp,选择身份验证,并完成整个流程(被发送到 /login,填写测试值,被送回,工具调用正常工作)。如果出错,请检查 Railway 日志——auth.py 中的授权服务器代码使用 SDK 的 OAuthAuthorizationServerProvider 接口,该接口在不同 SDK 版本之间可能存在字段名差异;日志将准确显示哪个方法/字段不匹配。

部署到 Railway

方案 A — 通过 Railway 仪表板(最简单):

  1. 登录 railway.appNew ProjectDeploy from GitHub repo

  2. 选择你的 svv-mcp-unofficial 仓库。Railway 会自动找到 Dockerfile

  3. 转到服务上的 Variables,为所需模式添加变量(见上表)。

  4. Railway 会自动设置 PORT——服务器随后以 Streamable HTTP 模式启动并监听 0.0.0.0:$PORT

  5. Settings → Networking 下,点击 Generate Domain 获取公共 URL(例如 https://svv-mcp-unofficial-production.up.railway.app)。

  6. MCP 端点即为:https://<你的域名>/mcp

方案 B — 通过 Railway CLI:

npm i -g @railway/cli
railway login
railway init
railway up
railway variables --set "DATEX_USERNAME=..." --set "DATEX_PASSWORD=..."
railway domain

服务器使用 Streamable HTTP(而非 SSE),这是当前规范中推荐用于外部 MCP 服务器的传输方式。

连接服务器

Claude.ai / Claude 应用(自定义连接器)

  1. 转到 Settings → Connectors → Add custom connector

  2. 粘贴你的 Railway URL,例如 https://<你的域名>/mcp

  3. 给它起个名字,例如"挪威公共道路管理局"。

  4. 在对话中的工具/连接器下将其打开。

共享账户模式: 无需额外步骤——DATEX_USERNAME/DATEX_PASSWORD 在服务器上,不在对话中。

多用户模式: 首次连接时,Claude 会自动将你发送到服务器上的 /login 页面。在那里填写你自己的 DATEX 用户名/密码(该页面还会显示如果你还没有的话如何获取,以及 DATEX 访问权限实际能给你哪些工具)。如果你不想获取 DATEX 访问权限,可以选择"无需账户继续"——这样你只能使用 hent_apen_vegdata(NVDB,无需登录)。

Claude Desktop(stdio,本地)

添加到 claude_desktop_config.json

{
  "mcpServers": {
    "vegvesen": {
      "command": "python",
      "args": ["/full/path/til/svv-mcp-unofficial/server.py"],
      "env": {
        "DATEX_USERNAME": "...",
        "DATEX_PASSWORD": "..."
      }
    }
  }
}

(多用户模式需要 HTTP,无法通过 stdio 工作。)

其他 MCP 客户端

任何支持 Streamable HTTP 的客户端都可以直接指向 https://<你的域名>/mcp

可用工具

工具

描述

hent_vaermalinger

来自道路气象站的实时气象测量数据,含湿滑路面提示

hent_vaerstasjoner

气象站的位置(坐标/道路/名称)

hent_vaerprognose

逐小时天气预报,未来 24 小时

hent_vaerprognose_punkter

预报点的位置

hent_webkamera

路网沿线网络摄像头概览

hent_reisetider

主要路段的实时行程时间

hent_reisetid_strekninger

测量行程时间的路段几何/名称

hent_trafikkmeldinger

事故、道路施工、封闭、山体滑坡/洪水等

inspiser_datex_publikasjon

故障排查:显示来自给定 DATEX 端点的原始标签结构

hent_apen_vegdata

来自 NVDB 的开放道路数据(限速、休息区、AADT 等)——不需要 DATEX 登录

所有"hent"工具都接受相同的参数:

  • sokeord(可选)——按所有字段值过滤,例如 "E18""Hemsedal"

  • maks_antall(默认 10)——响应中的最大记录数

  • format"markdown"(可读)或 "json"(结构化)

故障排查

  • "401 未授权" → 服务器上 DATEX_USERNAME/DATEX_PASSWORD 缺失或错误(共享账户模式),或者用户需要重新连接以登录(多用户模式)。

  • 结果为空/意外 → 对相关发布内容运行 inspiser_datex_publikasjon(见 server.pyDATEX_ENDPOINTS 键的表格),查看 NPRA 当前发送的确切 XML 标签,并在需要时调整相关工具中的 candidate_tags

  • 超时 → NPRA 的 DATEX 节点可能暂时不可用;稍后重试,或查看 vegvesen.no 上的运营公告。

  • 连接时出现 OAuth 错误(多用户模式) → 查看 Railway 日志和上面的"测试 OAuth 流程"部分。

许可

数据根据挪威公共数据许可(NLOD)提供。 使用数据时请注明挪威公共道路管理局为来源,正如 NPRA 所要求的那样。

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to query Norges Bank's open data API for exchange rates, policy rates, government securities, money market data, bank liquidity, and regional network survey data.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides access to real-time Danish road traffic events, roadworks, and queues via public data from Vejdirektoratet, enabling AI assistants to check road conditions without any API keys.
    3
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time access to Swedish road weather, traffic cameras, road conditions, and traffic flow data from Trafikverket (Swedish Transport Administration). Enables users to query weather stations, cameras, traffic situations, and flow data through natural language.
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides access to Norway's nationwide public transport data (all modes) via the Entur API, enabling queries about routes, stops, and departures through natural language.
    6
    MIT

View all related MCP servers

Related MCP Connectors

  • Norwegian transport (Entur) and geodata (Kartverket): trips, departures, addresses, elevation.

  • Entur MCP — Norway public transport, nationwide, all modes (developer.entur.org)

  • Weather forecasts from MET Norway (Yr): geocoding plus hourly forecasts worldwide.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mythso/svv-mcp-unofficial'

If you have feedback or need assistance with the MCP directory API, please join our Discord server