Skip to main content
Glama

SVV-MCP-unofficial

⚠️ Неофициальный проект. Это MCP-сервер, созданный сообществом, и он не создан, не управляется и не связан с Statens vegvesen (SVV) каким-либо образом. «SVV» в названии описывает лишь то, какой источник данных использует сервер. Передаваемые данные получены из собственных открытых конечных точек DATEX II Statens vegvesen, и их использование регулируется их условиями (см. Лицензия).

MCP-сервер (Model Context Protocol), который предоставляет LLM доступ к открытым данным реального времени Statens vegvesen через DATEX II:

  • 🌡️ Метеоизмерения с метеостанций дорожного ведомства (температура дорожного покрытия, температура воздуха, ветер, точка росы), с автоматическим предупреждением о скользком дорожном покрытии

  • 🌦️ Прогнозы погоды (почасовые, на 24 часа вперед)

  • 📷 Веб-камеры вдоль дорожной сети

  • 🚗 Время в пути в реальном времени на основных участках

  • ⚠️ Дорожные сообщения (аварии, дорожные работы, закрытия, оползни/наводнения и т. д.)

  • 🔧 Встроенный инструмент диагностики, показывающий необработанную XML-структуру, поскольку схемы NPRA могут меняться

Все конечные точки DATEX требуют зарегистрированного пользователя у Statens vegvesen (бесплатно). Запросить доступ здесь →


Содержание


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

Нет

Да (хранит зашифрованные учетные данные)

Многопользовательский режим позволяет вам делиться одним URL Railway с другими без необходимости собственного сервера: когда кто-то добавляет коннектор в Claude, они перенаправляются на страницу входа, которую сервер размещает сам (/login), где они вставляют свои собственные имя пользователя/пароль DATEX и видят ссылку о том, как их получить. Учетные данные хранятся зашифрованными (Fernet) в файле SQLite на томе Railway, привязанном к токену, который MCP-сервер выдает Claude.

Настройка многопользовательского режима на Railway

  1. Добавьте том на сервис, смонтированный на /data (панель Railway: Settings → Volumes → New Volume, mount path /data).

  2. Сгенерируйте ключ шифрования:

    python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
  3. Задайте переменные на сервисе:

    • SVV_MCP_PUBLIC_URL = ваш URL Railway (например, 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 — это самостоятельно размещенная страница входа.

Тестирование потока OAuth перед тем, как делиться URL

Это самая сложная часть проекта, и ее следует один раз протестировать вручную:

npx @modelcontextprotocol/inspector

Направьте Inspector на https://<ваш-домен>/mcp, выберите аутентификацию и пройдите весь поток (перенаправление на /login, заполнение тестовых значений, возврат, вызовы инструментов работают). Проверьте логи Railway, если что-то не работает — код сервера авторизации в auth.py использует интерфейс OAuthAuthorizationServerProvider из SDK, который может иметь расхождения в именах полей между версиями 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. Вставьте ваш URL Railway, например https://<ваш-домен>/mcp

  3. Дайте ему имя, например «Statens vegvesen».

  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 (ограничения скорости, места отдыха, СГД и т. д.) — не требует входа в DATEX

Все инструменты «hent» принимают одинаковые параметры:

  • sokeord (необязательно) — фильтрует по всем значениям полей, например "E18", "Hemsedal"

  • maks_antall (по умолчанию 10) — максимальное количество записей в ответе

  • format"markdown" (читаемый) или "json" (структурированный)

Устранение неполадок

  • «401 Не авторизован»DATEX_USERNAME/DATEX_PASSWORD отсутствуют или неверны на сервере (режим общей учетной записи), или пользователю необходимо переподключиться для входа (многопользовательский режим).

  • Пустые/неожиданные результаты → запустите inspiser_datex_publikasjon для соответствующей публикации (см. ключи DATEX_ENDPOINTS в таблице выше в server.py), чтобы увидеть, какие именно XML-теги NPRA отправляет прямо сейчас, и при необходимости скорректируйте candidate_tags в соответствующем инструменте.

  • Таймаут → узел DATEX NPRA может быть временно недоступен; попробуйте снова через некоторое время или проверьте сообщения о работе на vegvesen.no.

  • Ошибки OAuth при подключении (многопользовательский режим) → см. логи Railway и раздел «Тестирование потока OAuth» выше.

Лицензия

Данные доступны по Норвежской лицензии на публичные данные (NLOD). Указывайте Statens vegvesen как источник при использовании данных, как просит 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