mcpField
O
open-signals

open-signals

远程服务
open-signals.civops.io法律与政务01 天前更新

关于 open-signals

open-signals 为地图开发者和使用公共事务、环境数据的 Agent 提供数据目录与服务。它将数据整理为带来源、获取时间和许可信息的读数,并提供命令行、REST、MCP 与 GeoJSON 接口。

主要功能

  1. 01公共数据源目录
  2. 02含来源和许可信息的标准化读数
  3. 03灾害、水文、天气等数据抓取器
  4. 04REST API 与 OpenAPI 描述
  5. 05GeoJSON 图层和静态数据集
  6. 06用于查找数据源和抓取数据的命令行

适用场景

  1. 01编写抓取器前核对数据源覆盖范围和许可
  2. 02获取地震或洪水读数并用于地图
  3. 03浏览当前水位或天气数据
  4. 04通过 MCP 向 Agent 提供公共数据集

MCP 相关

提供基于可流式 HTTP 的无状态只读 MCP 服务,地址为 `/mcp`。工具可搜索数据源、获取读数和地点,并列出图层与数据集或读取数据集分片。

配置

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

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

工具

9
参数类型必填说明
querystring否用于匹配名称、ID、覆盖范围、主题和许可证说明的词语。
topicstring否一个主题,例如 weather、water、fires、flights、energy。
licenseenum否public_domain | open | non_commercial | restricted | unknown
fetchableboolean否true:仅限此服务当前可获取的数据源;false:仅限已编入目录的数据源。

详细介绍

open-signals

面向地图和 Agent 的公共数据。每条读数都标明了来源、获取时间和所适用的许可。

open-signals 由三个部分组成:

  • 目录:公共数据源目录(catalog/sources.json)。每个条目都列出 API、覆盖范围、更新频率、所需密钥和许可。涵盖天气、水文、海冰、灾害、航班、船舶、卫星、能源、排放、申报、贸易等。编写另一个数据获取器之前,可以先查阅这个列表。

  • 数据获取器:用于获取我们当前读取的数据源。每个获取器都会将上游响应转换为统一格式,即 读数:

    { "id": "noaa-coops:9063085:2026-10-10", "at": "2026-10-10", "metric": "water_level",
      "value": 2.762, "unit": "ft above LWD",
      "summary": "Lake Erie at Toledo 2026-10-10: mean 2.76 ft above low water datum (…)",
      "place": { "id": "coops-toledo", "name": "Lake Erie at Toledo", "lat": 41.6936, "lng": -83.4723 },
      "fields": { "station": "9063085", "datum": "LWD", "readings": 155 },
      "source": { "id": "noaa-coops", "name": "NOAA CO-OPS water levels", "url": "https://tidesandcurrents.noaa.gov/…",
                  "fetched_at": "2026-10-10T19:12:03Z", "license": "public_domain" } }
    
  • 接入方式:CLI、带有 OpenAPI 描述的 REST API、供 Agent 使用的 MCP 服务,以及 GeoJSON 地图图层。没有运行时依赖;需要 Node 20 或更高版本。

使用方法

公共实例运行于 **https://open-signals.civops.io**(REST 位于 /v1,MCP 位于 /mcp)。它只提供公共领域和开源数据,不保存上游密钥,并按 IP 限流。试试 https://open-signals.civops.io/v1/layers/volcanoes?elevated=true。

git clone https://github.com/Civops-Platform/open-signals && cd open-signals   # Node 20+, no npm install needed
alias open-signals='node bin/open-signals.mjs'
open-signals sources fires                     # search the catalogue
open-signals sources --topic water --fetchable
open-signals fetch usgs-earthquakes --min 4.5 --window week
open-signals fetch noaa-coops --coops 8518750   # any CO-OPS station
open-signals fetch open-meteo --lat 41.5 --lng -81.7
open-signals layer water_level                 # GeoJSON
open-signals serve --port 3290                 # REST + MCP

fetch 和 layer 会在你的计算机上运行,并使用你自己的密钥(NASS_API_KEY、EBIRD_API_KEY)。CLI 会打印每个数据源的许可,让你了解可以如何使用获取的数据。

REST
GET /v1/sources?query=&topic=&license=&fetchable=搜索目录
GET /v1/sources/{id}单个条目
GET /v1/hubs收集数据源的项目(见下文)
GET /v1/places?tag=以 GeoJSON 格式提供的命名地点
GET /v1/readings?source={id}&place=&tag=&lat=&lng=&coops=&usgs=&ebird=&state=&bbox=&metric=&since=&limit=读数
GET /v1/layers · GET /v1/layers/{id}?date=以 GeoJSON 格式提供的地图图层
GET /openapi.json完整描述
CESMII i3X

相同图层也作为只读的 CESMII i3X 1.0 端点提供,地址为 https://open-signals.civops.io/i3x/v1。地址空间包含一个根目录、每个图层对应一个文件夹,以及每个地点或事件对应一个对象。每个对象的值是其最新读数(值、质量、时间戳),并附有来源和许可;其历史记录包含该地点的所有读数。订阅支持同步和服务器发送事件流。

CESMII 一致性测试套件(构建 6,运行于 2026 年 10 月 10 日)评定其为 i3X 1.0 Compatible:通过 50 项,失败 0 项,跳过 10 项(报告)。跳过的测试是写入测试;完全符合规范需要支持写入,而重新发布公共数据的服务没有需要写入的内容。

规范要求对数据端点进行身份验证,因此提供了一个免费的公共只读令牌: os-public-read(发送 Authorization: Bearer os-public-read)。GET /i3x/v1/info 无需身份验证。

静态数据集

变化缓慢的数据以 GeoJSON 文件形式提供,而不是实时获取:过去 20 年的野火过火范围 (NIFC WFIGS 和 USFS MTBS,每个州一个文件)、各县公共土地占比(USGS PAD-US 4.1)、联邦露营地(RIDB)和火险天气站(RAWS),均属于公共领域。GET /v1/datasets 会列出这些数据集及其来源、许可和分块;GET /v1/datasets/{id}/{part} 会返回一个分块(两位字母的州代码,或 all)。部署时将 OPEN_SIGNALS_DATA_DIR 指向一个包含这些文件和 index.json 的文件夹;格式说明见 src/datasets.js。

MCP

POST /mcp 使用可流式 HTTP 传输(JSON-RPC 2.0)。它是无状态的,无需身份验证。所有工具均为只读:

  • search_sources、get_source、list_hubs、list_places
  • get_readings、list_layers、get_layer
  • list_datasets、get_dataset_part

将其添加到客户端:

{ "mcpServers": { "open-signals": { "type": "http", "url": "https://open-signals.civops.io/mcp" } } }

许可:服务将重新发布的内容

代码采用 Apache-2.0 许可。数据并非由我们拥有,无法由我们重新授权。 每个来源都保留自己的条款,读取时也会一并附带许可。运行中的服务会重新发布数据,因此会执行以下限制:

许可示例是否提供
public_domainNOAA、USGS、USDA、NASA FIRMS、SEC始终提供
openCC BY、ODbL(OpenStreetMap、adsb.lol、ECMWF、GDELT)始终提供;同时附带署名信息
non_commercialOpen-Meteo 免费套餐、eBird、OpenSky仅在设置 OPEN_SIGNALS_NONCOMMERCIAL=1 时提供(即你运行的是非商业部署)
restrictedGoogle 3D Tiles、TomTom永不提供
unknown尚未审核的任何内容永不提供

被拒绝的来源会返回 451,并说明许可及拒绝原因。使用 CLI 为自己获取内容不属于重新发布,因此不受此限制。

当前的获取器

source说明key
usgs-earthquakes全球地震,按时间窗口和最低震级筛选—
usgs-volcanoes每座受监测美国火山的警报级别和航空颜色代码—
noaa-nwps区域范围内每个 NOAA 水文站的河流水位和洪水类别(实测和预测)—
epa-echo各州受 EPA 监管的主要设施,包括合规状态和罚款—
openfda-recalls过去 60 天的 FDA 食品、药品和器械召回信息,按企业 ZIP 邮编筛选—
usaspending过去 30 天金额最高的 100 项联邦新合同授予,按履约地点 ZIP 邮编筛选—
gbif过去两周全球开放许可(CC0、CC-BY)的野生动植物观测数据,按类别和区域范围筛选—
nasa-eonet全球开放自然事件(风暴、野火、火山、洪水、冰),最新位置—
world-bank按国家查询世界银行指标,位置取首都:GDP 增长、通胀、制造业、出口、FDI、失业率—
emsc全球 EMSC-CSEM 地震,欧洲地区最密集(CC BY 4.0),按时间窗口和最低震级筛选—
noaa-ibtracs所有活动热带气旋的最新最佳路径定位,涵盖所有海盆—
eurostat各国工业生产(指数或同比),最新月份,位置取首都—
gem-trackersGlobal Energy Monitor Global Integrated Power Tracker(CC BY 4.0,2026-08 版本):按国家、燃料和状态查询 50 MW 及以上的运营中或在建电厂(取代自 2021 年起未更新的 WRI 数据库)—
openfema过去 90 天的 FEMA 灾害声明,位置取县(或州)中心点—
usda-ams-barge密西西比河、伊利诺伊河、俄亥俄河和阿肯色河七座船闸的每周下行谷物吨位(USDA AMS,数据来自 USACE LPMS)—
bts-border-crossings美国与加拿大、美国与墨西哥各入境口岸的入境卡车、火车和车辆数量,最新月份—
epa-tri有毒物质排放清单:各州每个设施的现场排放量,最新报告年度—
epa-campdEPA 无需密钥的批量文件中,各州每个设施的电厂 CO2、SO2 和 NOx 排放量,最新月份—
noaa-coops任意 CO-OPS 站点的水位(五大湖站点为 LWD,潮汐站点为 MLLW)—
usgs-water任意 USGS 水文站的河流流量和水位—
glerl五大湖冰盖范围(12 月至 5 月)—
usda-nass全国及各州每周作物生长进度和状况NASS_API_KEY(免费)
open-meteo任意地点过去 92 天及未来 7 天的逐日天气—(非商业用途)
waterfowl-wsi基于 Open-Meteo 的鸭类天气严重指数(Schummer et al. 2010)—(非商业用途)
ebird过去 7 天在 eBird 区域内报告的水禽EBIRD_API_KEY(免费,非商业用途)
open-meteo-floodGloFAS 全球约百个大型河流地点的今日河流流量,附每周变化和 30 天集合预报最高值—(非商业用途)
open-meteo-airCAMS 模型预测的 150 个大城市当前空气质量:美国 AQI、欧洲 AQI、PM2.5、PM10—(非商业用途)
adsb-lol来自 adsb.lol 接收器网络的实时飞机信息(ODbL):任意点周围的飞机(mode=area)、全球所有被标记为军用的飞机(mode=military),或根据飞机位置精度推断的每个 1° 网格单元 GPS 干扰情况(mode=gps,采用 GPSJam 方法)。绝不提供参与 FAA LADD 和 PIA 隐私计划的飞机信息—
nasa-firms来自无需密钥的全球文件的 NASA FIRMS VIIRS 热点探测:过去 24 小时的火情(mode=fires)、最近 7 天中至少 3 天出现热点的约 1 km 热点(mode=persistent,派生数据:工业、火炬、火山),以及 Global Energy Monitor 四个跟踪器中每个热点地点的高温天数、所有者和母公司:高炉和 DRI 钢铁厂(mode=steel)、水泥窑(mode=cement)、化工厂(mode=chemicals)以及油气田(mode=oil_gas,火炬燃烧),以上均为派生数据—
nws-alerts当前有效的 National Weather Service 监视、警告和公告;每项警报在每个县对应一个点;可按州、类别或事件筛选—
usbr-riseBureau of Reclamation 在西部约 215 座水库的每日蓄水量(RISE),附每周变化;可按 Reclamation 区域筛选—
digitraffic-ais芬兰水域和波罗的海北部的实时船舶位置(Fintraffic,CC BY 4.0),附名称、类型和目的地;绝不提供游艇信息—
corroboration派生数据:同一事件由两个或一个独立来源观测到。USGS 和 EMSC 的地震(转发的 USGS 网络解算结果只计一次),以及美国野火事件与 FIRMS 卫星热点的比对—
smithsonian-gvpSmithsonian Volcanoes of the World:全球自 1900 年以来喷发过的火山,以及当前正在喷发的火山—(非商业用途)
观测值、建模值或推导值

传感器读数和据此得出的结论并不是一回事,因此每条读数都会注明它属于哪一种。没有 basis 表示数据由某种设备观测到(例如仪表、地震仪或接收器)。basis: "modelled" 表示数据由模型输出(例如 Open-Meteo 天气、GloFAS 流量、CAMS 空气质量)。basis: "derived" 表示数据由其他读数推断得出,并通过 derived_from 说明来源(例如根据飞机 NACp 推断的 GPS 干扰、根据建模天气得出的鸭子天气严重程度指数、根据 FIRMS 探测结果得出的持续高温和钢铁厂热量,以及关联佐证:将同一事件的两个来源配对,并说明表面上的第二个来源何时只是在转发第一个来源)。图层要素始终带有 basis。

目录中的其余来源已列出,但尚未获取数据。添加数据获取器是最有用的贡献;请参阅 CONTRIBUTING.md。

枢纽

catalog/hubs.json 列出了我们关注的项目,方便我们每次无需从头搜索:

  • God's Eye View(Bilawal Sidhu 和 Sameh Khamis)
  • World Monitor
  • OSIRIS 和 WorldWideView
  • Shadowbroker、ULTOR 和 Gemini / Claude Earth(基于 God's Eye View 方案的社区构建版本)
  • 官方 MCP Registry 和 awesome-mcp-servers
  • Source Cooperative、AWS Open Data 注册表、Data.gov 和 public-apis

通过其中某个项目找到来源时,该来源条目会在 found_via 中记录这一信息。

运行

npm test                  # offline, upstreams stubbed
npm run test:live         # every fetcher against its real upstream, then REST and MCP
PORT=3290 npm start
变量含义
PORT默认值为 3290
OPEN_SIGNALS_NONCOMMERCIAL=1此部署为非商业用途,可重新发布非商业来源的数据
RATE_LIMIT_PER_MIN按客户端 IP 限制,默认值为 60
TRUST_PROXY=1通过代理时,从 X-Forwarded-For 读取客户端 IP

响应会按来源、地点和参数缓存在内存中(地震数据缓存 2 分钟,每周更新的来源最长缓存 6 小时),以免给上游造成过多请求。

不作保证

open-signals 会转发公共机构和项目发布的内容,不作改动。上游的读数可能延迟、尚属初步数据、经过修订或存在错误。本项目按“原样”提供(参见 LICENSE),不得用于导航、安全保障或任何无法容忍错误读数的决策。

评论

支持 Markdown

第一次接触 MCP?

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

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