mcpField
A
Amtsblick

Amtsblick

远程服务
amtsblick.aicodelabs.dev地图与出行03 周前更新

关于 Amtsblick

Amtsblick 是一个私人开源 MCP 服务,将奥地利市镇位置与天气预报、河流水位数据结合。它面向需要简明本地状况及来源、时间和单位信息的 AI 助手,但并非官方预警服务。

主要功能

  1. 01按名称、代码或坐标查找市镇
  2. 02查看天气预报和短时降水
  3. 03查找附近水位站及河流水位
  4. 04按州归类水位升高情况
  5. 05提供来源、许可、时间和单位

适用场景

  1. 01查询奥地利市镇天气
  2. 02查找附近水位站及当前水位
  3. 03查看各州水位升高情况

MCP 相关

向 MCP 客户端提供地点查询、天气、降水和水位工具。响应包含来源与数据处理信息,并注明该服务不是官方预警服务。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://amtsblick.aicodelabs.dev/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 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
nugetAmtsblick0.1.3-beta

工具

8
参数类型必填说明
ortstring是Gemeindename, optional "Name, Bundesland"; oder fünfstellige GKZ; oder Koordinate "Breite, Länge", z. B. "48.04, 14.42". Bei einem Namen gilt die Prognose für den Gemeindemittelpunkt.
stundeninteger否Vorhersagezeitraum in Stunden ab jetzt, 1 bis 61. Standard 48.

详细介绍

Amtsblick

Amtsblick 是一个 MCP 服务,用于关联奥地利各地的官方数据。AI 助手询问一个市镇后,就能获取相关天气和水位数据——每项数据均附有来源说明、数据时间和单位。

Amtsblick 是一个私人开源项目,并非政府机构的官方服务。

第一阶段涵盖通用核心功能(地点目录、来源说明、缓存、请求配额)、天气模块(GeoSphere Austria)和水文模块(eHYD 水位站)。后续模块将采用相同模式推出。

免责声明。 Amtsblick 不是官方服务,也不是预警服务。回答内容转述第三方数据,可能存在延迟、不完整或错误,也不能替代官方的恶劣天气或洪水预警。应以 GeoSphere Austria 和各州的预警服务为准。软件按“原样”提供,不作任何保证(请参阅 LICENSE);使用者有责任自行确保遵守数据来源的使用条款。 Amtsblick 是一个私人项目。Statistik Austria、GeoSphere Austria、BMLUK 和各州的水文服务部门均未参与本项目,也不认可本项目或其数据处理方式。

工具

工具用途
ort_finden(text)按名称、GKZ 或坐标搜索市镇
quellen()来源、许可证、说明、上次获取时间和剩余请求配额
wetter_prognose(ort, stunden = 48)以 6 小时为间隔的预报及每日数据
niederschlag_jetzt(ort)未来 3 小时的降水量,按 15 分钟为间隔
lage_am_ort(ort)一次调用获取天气、临近预报和最近的水位站
pegel_in_der_naehe(ort, radius_km = 15)搜索半径范围内的水位站,按距离排序,最多 20 个
pegel_an_gewaesser(gewaesser)某条水道上的所有水位站
hochwasserlage(bundesland?)水流量达到较高水平的水位站,按级别分组

ort 可以是市镇名称(允许拼写错误;“St.”和“Sankt”视为相同),可选附加 "名称, 州",也可以是五位数的 GKZ 或坐标 "纬度, 经度"。如果名称有歧义,则返回候选列表,而非数据。

每个回答都是一个简洁的 JSON 对象。开头为 zusammenfassung 字段,末尾为 quellen 和 hinweise 字段。quellen 中的每项都包含来源、带许可证文本链接的许可证、规定的说明、链接、数据集、适用时的 DOI、数据时间,以及 Amtsblick 对数据处理方式的说明。

接入

共有四种方式。托管服务运行于 https://amtsblick.aicodelabs.dev;该软件包可在 NuGet.org 和 MCP Registry 中找到,标识符为 io.github.haraldrohan/amtsblick。

方式适用对象前提条件状态
通过 URL 添加连接器claude.ai、Claude Desktop、Claude 移动版无可用
MCP Bundle(.mcpb)Claude Desktop,本地运行无需 .NET可用(预览版)
通过 dnx 使用 NuGet 软件包Claude Code、VS Code、Visual Studio.NET 10 SDK可用(预览版)
从源代码运行开发.NET 10 SDK可用
联系地址

User-Agent 为 Amtsblick/<version> (+<Repo-URL>; <Kontaktadresse>)。联系地址属于各实例的运营者,因此不会列在代码仓库中。本地运行 Amtsblick 的用户可通过环境变量 Amtsblick__Kontakt 设置该地址。 **未设置联系地址时,水文模块不会获取任何数据;**天气和地点搜索仍可正常使用。托管服务的联系地址由运营者设置。

claude.ai、Claude Desktop 和 Claude 移动版:通过 URL 添加连接器

依次选择“设置”→“连接器”→“添加自定义连接器”,并将 URL 设为 https://amtsblick.aicodelabs.dev/mcp。无需登录。

Claude Desktop 本地安装:MCP Bundle

从 GitHub Release 下载 amtsblick-<version>-<plattform>.mcpb 文件并双击。Claude Desktop 会在安装时询问联系地址。无需安装 .NET。 平台:win-x64、osx-arm64(Apple Silicon)、osx-x64(Intel Mac)、linux-x64;每个约 45 MB。

首次启动时,Amtsblick 会一次性下载 Statistik Austria 的市镇边界数据(约 90 MB 下载量,占用 60 MB 磁盘空间,耗时一到两分钟)。在此之前,工具会提示市镇数据正在加载。之后,数据会存放在 %LOCALAPPDATA%\Amtsblick 或 ~/.local/share/Amtsblick 下。

Claude Code
# gehosteter Server
claude mcp add --transport http amtsblick https://amtsblick.aicodelabs.dev/mcp

# lokal über NuGet
claude mcp add amtsblick --env [email protected] -- dnx [email protected] --yes
VS Code 和 Visual Studio

在 .vscode/mcp.json 或 .mcp.json 中:

{
  "servers": {
    "amtsblick": {
      "type": "stdio",
      "command": "dnx",
      "args": ["[email protected]", "--yes"],
      "env": { "Amtsblick__Kontakt": "[email protected]" }
    }
  }
}

对于托管服务,请改用 { "type": "http", "url": "https://amtsblick.aicodelabs.dev/mcp" }。 当前软件包版本请见 NuGet.org。

从源代码构建

前提条件:.NET 10 SDK。

dotnet build -c Release
dotnet test

服务在没有参数时通过 stdio 启动。要在 Claude Code 中使用,请在根目录下创建 .mcp.json 文件(该文件已从 Git 中排除,因为其中包含联系地址):

{
  "mcpServers": {
    "amtsblick": {
      "type": "stdio",
      "command": "dotnet",
      "args": ["C:\Pfad\zu\Amtsblick\src\Amtsblick.Server\bin\Release\net10.0\Amtsblick.Server.dll"],
      "env": { "Amtsblick__Kontakt": "[email protected]" }
    }
  }
}

对于 Claude Desktop,请将同一条配置放入 claude_desktop_config.json。只要有客户端加载了该服务,DLL 就会被锁定;在重新构建前,请关闭客户端,或从副本启动服务(dotnet publish -o <Ordner>)。

服务会在首次启动时自行下载市镇数据。也可以手动执行 scripts/import-gemeinden.sh(Windows:scripts\import-gemeinden.ps1);数据会存放在仓库的 data/ 下。

自行托管

# direkt
[email protected] dotnet run --project src/Amtsblick.Server -c Release -- --http

# als Container
docker build -t amtsblick .
docker run --rm -p 8080:8080 -e [email protected] amtsblick

MCP 端点为 /mcp(Streamable HTTP,无状态),状态信息位于 /health。 服务会在 / 提供简短的欢迎页,在 /datenschutz 提供隐私声明。 直接启动时,服务监听 http://localhost:5210;在容器中则监听端口 8080。

  • **HTTPS:**由托管服务商或前置反向代理提供;服务本身仅使用 HTTP。
  • **无需身份验证:**服务仅读取公开数据。为此,系统会按客户端 IP 限流(Http:AnfragenProMinute,默认值为 60);超过限制时会返回 429。
  • **Origin 检查:**仅接受来自 Http:ErlaubteUrspruenge(默认值为 https://claude.ai、https://claude.com)和 localhost 的浏览器请求,否则返回 403。不带 Origin 标头的请求(服务器到服务器)不受限制。
  • 主机名:AllowedHosts 应填写公开主机名,而不是 *(防止 DNS 重绑定)。在反向代理后运行时,请启用 Http:HinterProxy,以便限流使用 X-Forwarded-For 中的客户端 IP。
  • **日志:**仅记录方法、路径、状态码和耗时。不记录 IP 地址、请求内容或地点。
  • **预加载水位数据:**容器中已启用 Module:Wasser:Vorladen;数据集每小时获取一次,获取频率仍为每小时一次。
  • **自有实例:**自行托管 Amtsblick 的用户即为该实例的运营者。请设置 Http:Betreiber,填写自己的信息,并在构建前用自己的隐私声明替换 DATENSCHUTZ.md;仓库中的文件适用于项目所有者运营的实例。

配置

src/Amtsblick.Server/appsettings.json 中的 Amtsblick 节;每项设置也可以通过 环境变量设置(将 : 替换为 __)。

设置默认值含义
Kontakt空User-Agent 的联系地址;Wasser 模块必填
RepoUrlhttps://github.com/haraldrohan/AmtsblickUser-Agent 中的项目 URL
DatenVerzeichnis空市镇数据和最新水位的存放位置;为空 = 仓库中的 data/,否则为用户本地应用数据文件夹中的 Amtsblick
AutoImporttrue启动时自动加载缺失的市镇数据
Module:Wetter:AktivtrueWetter 模块及其 lage_am_ort
Module:Wasser:AktivtrueWasser 模块
Module:Wasser:Vorladenfalse仅托管时:在后台每小时预加载水位
Http:AnfragenProMinute60HTTP 传输中按客户端 IP 限制的速率
Http:ErlaubteUrspruengehttps://claude.ai、https://claude.com接受其浏览器请求的来源
Http:HinterProxyfalse从前置代理的 X-Forwarded-For 获取客户端 IP
Http:Betreiber空用于在首页公开显示的运营者姓名、地址和联系方式

启动时关闭的模块不会注册:其工具不会显示,也不会进行任何请求。Module:Wasser:Aktiv 还会立即生效:如果在程序文件旁的 appsettings.json 中将该值设为 false,运行期间就会停止所有后续 eHYD 请求,无需重启。

数据来源与许可证声明

仅接入以下获准的数据来源。它们均采用 CC BY 4.0 许可,因此在注明来源的前提下也可自由用于商业用途。数据仍受来源许可约束(参见 NOTICE);代码采用 MIT 许可。

来源数据集声明(须逐字采用)依据
Statistik AustriaOGDEXT_GEM_1、OGDEXT_POLBEZ_1数据来源:Statistik Austria — data.statistik.gv.at使用条款
GeoSphere Austrianwp-v2-1h-1km(DOI)、nowcast-v1-15min-1km(DOI)数据来源:GeoSphere Austria - https://data.hub.geosphere.at使用条款,各数据集的许可证
eHYD(权利人:BMLUK 和各联邦州)i000501:pegel_aktuell数据来源:ehyd.gv.atINSPIRE 元数据

每条回答都会以两种方式履行 CC BY 4.0 的义务:摘要末尾会附上声明、许可证文本链接,以及数据经过换算和汇总或整理的补充说明;quellen 字段中则会详细说明:按要求逐字注明来源、附上许可证文本链接和来源链接,并说明 Amtsblick 做了哪些更改:

  • Statistik Austria:根据边界计算市镇中心点,统一区名的拼写,并补充维也纳整体数据。
  • GeoSphere Austria:换算单位;此外,针对预测数据,根据 u/v 计算风速,并将数值汇总为时间段和每日数值。
  • eHYD:将状态码转换为位置、趋势和时效性信息,补充市镇和距离,并按地点、水体或水位筛选。

转发或发布回答的人须承担提供这些信息的责任。为此,每条 Wetter 回答都会注明“非官方恶劣天气警报。”,每条 Pegel 回答都会注明“非官方警报。请以各州的警报服务为准。”

限制与请求模式

GeoSphere Austria(Wetter)
  • Dataset API 的限制:每秒 5 次、每小时 240 次,由整个实例共享;超出后,API 会返回 429。
  • Amtsblick 每秒最多发出 4 次请求,并读取 x-ratelimit-remaining-hour 和 x-ratelimit-remaining-second。可通过 quellen() 查询当前状态。
  • 剩余请求少于 20 次时,只会从缓存中返回结果;响应中会说明这一点。
  • 缓存键由数据集和坐标组成,坐标四舍五入至 0.01°;如果使用地名,则采用市镇中心点。预报有效期为 3 小时,或直到元数据报告有更新的运行结果;Nowcast 有效期为 15 分钟。对同一点的并发请求会共享一次数据获取。
  • 每个数据集的元数据(last_forecast_reftime)最多每 15 分钟检查一次。如果 Nowcast 运行结果已超过一小时,niederschlag_jetzt 会提示“Nowcast 当前不是最新的”,并改用小时预报。
  • 获取失败后,同一点在一分钟内不会再次发起请求。
  • 如果 GeoSphere 响应缓慢,工具调用最多等待 8 秒获取数据(等待元数据最多 3 秒),然后用已有数据作答——例如,niederschlag_jetzt 会使用预报中的小时值。数据获取会在后台继续完成,并填充缓存以供下次查询使用;不会为此发起第二次获取。
  • 获取的参数:预报 2t, tp, rain, sf, snowlmt, 10u, 10v, 10fg, tcc, sund;Nowcast rr, pt, t2m, ff, fx。单位转换包括 kg/m² → mm(1:1)、m/s → km/h、10u/10v → 速度和方向、秒 → 分钟。天气符号 sy 不会输出;降水类型 pt 仅以原始值提供,因为 GeoSphere 未发布官方代码表。
eHYD (Peg​​el)

gis.lfrz.gv.at 的 robots.txt 内容为 User-agent: * / Disallow: /。它规范的是对网站的抓取;API 的使用则受此服务公布的许可(CC BY 4.0)约束。Amtsblick 不会抓取网站,而是恰好调用作为开放数据服务公布的端点,并谨慎地遵循以下规则:

  • 每 60 分钟最多获取一次完整数据集。 托管版的所有用户共用这次获取。最新数据和上次尝试的时间存储在 data/pegel_aktuell.json 中,因此即使重启也会遵守间隔限制——这对 stdio 尤为重要,因为客户端每次启动程序时都会重启服务。使用独立数据目录的多个安装分别计数。
  • 首次调用工具时会触发获取,之后 60 分钟内只读取缓存。并发调用会等待同一次获取完成。
  • 未调用工具时不会进行获取,即使实例正在运行也一样。后台计时器(Module:Wasser:Vorladen)用于托管运行,默认关闭。
  • 即使尝试失败,也计为当小时的一次获取;不会重试。下一次尝试之前会返回上次的数据,并标记为 veraltet: true。
  • 只访问三个固定地址:/collections(调用一次以获取 Collection ID,之后会将其保存)、/collections/{id}/items,以及仅在 OGC API 不可用时访问 WFS 图层 i000501:pegel_aktuell。不会跟踪响应中的链接。如果主机返回 403 或 429,则不会改用第二种方式重试。
  • 每个请求都会附带包含联系地址的 User-Agent;未提供联系地址时不会进行获取。
  • 可通过配置立即关闭此模块(见上文)。

每个 Pegel 响应都会注明上次获取数据的时间;这些数据可能比水文服务的数据晚最多一小时。水位状态(低水位/中水位、流量增大、洪水等级 1–3)、趋势和数据时效性均取自来源中的 gesamtcode。Amtsblick 不会自行计算预警等级;未记录的代码会显示为“未知”。

两项服务的预先检查记录见 docs/vorab-pruefung.md。

Statistik Austria(市镇)

仅由导入脚本获取,运行期间不会获取。地理数据将维也纳列为 23 个市辖区;Amtsblick 会补充“维也纳”(GKZ 90001),以内城区中心点作为位置,方便用户查找整座城市。

数据保护(隐私政策)

Amtsblick 不会存储请求或用户数据,也不会发送遥测信息。内存中仅保存来源最近获取的数据,磁盘上仅保存市镇数据和最新 Pegel 数据。发送给数据源的只有坐标(四舍五入到 0.01°)或完整数据集获取请求。托管服务器只记录方法、路径、状态码和耗时,不记录 IP 地址。完整说明见 DATENSCHUTZ.md,提供德语和英语版本;托管服务器通过 /datenschutz 提供该说明。

架构

src/Amtsblick.Core            Ortsmodell, Quellenvermerk, Cache, HTTP-Basis, Kontingent, Kern-Tools
src/Amtsblick.Modules.Wetter  GeoSphere-Adapter und Tools
src/Amtsblick.Modules.Wasser  eHYD-Adapter und Tools
src/Amtsblick.Server          MCP-Host (stdio und Streamable HTTP), lage_am_ort, Import, NuGet-Paket
tests/                        Tests je Projekt; Fixtures sind gespeicherte Antworten der echten Dienste
scripts/                      Import der Referenzdaten, Bau der Programmdateien und MCP Bundles
packaging/                    Manifest für das MCP Bundle
docs/                         Prüfprotokoll, Stand der Auslieferung
infra/                        Einrichtung und Beschreibung des Hostings in Azure
data/                         importierte Referenzdaten (nicht eingecheckt)

所有测试均可在完全离线的情况下运行。

许可证

代码:MIT。数据:遵循各来源的许可证,见 NOTICE。

贡献指南:CONTRIBUTING.md。

评论

支持 Markdown

第一次接触 MCP?

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

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