프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

Gagelink

제작자: Adeniyikayodee버전 0.7.0i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.Adeniyikayodee/gagelink

설치

개요

제작자가 쓴 설명(영어 원문)

River level, streamflow, floods and basins from USGS, NOAA, Hub'Eau, UK Environment Agency, SWOT

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 기타
  • 입력해야 할 값: GAGELINK_API_KEY

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.

필요한 것

  • PyPIPython의 uv 설치(uvx 명령어용)

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요

{
  "mcpServers": {
    "gagelink": {
      "command": "uvx",
      "args": [
        "gagelink"
      ],
      "env": {
        "GAGELINK_API_KEY": "your-value"
      }
    }
  }
}

터미널에서 이 명령어를 실행하세요

claude mcp add gagelink --env GAGELINK_API_KEY=your-value -- uvx gagelink

실행하기 전에 빈 값을 채워 주세요.

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "gagelink": {
      "command": "uvx",
      "args": [
        "gagelink"
      ],
      "env": {
        "GAGELINK_API_KEY": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "gagelink": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "gagelink"
      ],
      "env": {
        "GAGELINK_API_KEY": "your-value"
      }
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

직접 입력할 값

  • GAGELINK_API_KEY 비밀 env
    USGS Water Data API key, free from https://api.waterdata.usgs.gov/signup. Optional: without one the service allows 50 requests per hour rather than 1000.

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 8일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 Adeniyikayodee 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

기타 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 18444개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 18444개 중 32%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 18444개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

Gagelink, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

입력해야 할 값: GAGELINK_API_KEY

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.7.0)은 2개월 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Python (uv)도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, Tethered Trust

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:↓ 주간 다운로드i★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Spec Driven Development

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

제작자: formulahendry초기↓ 66/주★ 44014개월 전 업데이트

내 컴퓨터에서 실행

Remote Desktop Commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

제작자: desktop-commander성장 중★ 2113일 전 업데이트

클라우드에서 실행✓ desktopcommander.app

Tethered Trust

Fit, compatibility and recall checks for AI agents before they buy: verdicts, evidence, receipts.

제작자: tetheredtrust.com아주 새로움오늘 업데이트

클라우드에서 실행✓ tetheredtrust.com

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

GageLink

Hydrology data for AI agents, with the reference frames kept attached.

River levels, streamflow, flood forecasts, drainage basins and satellite water levels from USGS, NOAA, Hub'Eau, the UK Environment Agency and SWOT. Every value arrives carrying its unit, the datum it was measured from, its timezone, and whether the record is provisional or approved.

mcp-name: io.github.Adeniyikayodee/gagelink

Pre-alpha. The API may change.

Install

pip install gagelink for the library. From an MCP client, with nothing installed:

{

"mcpServers": { "gagelink": { "command": "uvx", "args": ["--from", "gagelink", "gagelink-mcp"] } } }

Or open the .mcpb bundle, which carries the server and its dependencies in one file.

No account is needed. A free key raises the allowance from 50 requests an hour to 1,000; set it as GAGELINK_API_KEY.

What can it answer?

  • How high is the river, and how does that compare with flood stage?
  • How much freeboard is there between the water and a surveyed levee crest?
  • What is the flow now, and what fraction of the record peak is that?
  • What is forecast over the next few days, and does it cross a flood category?
  • What lies upstream or downstream along the river network?
  • How large is the basin draining to this point?
  • What did a station record over a date range, and has that record been revised?
  • What is the water surface elevation of a river with no gage on it?
  • Is a reading provisional or approved, and how old is it?

Why the frames matter

At Little Falls on the Potomac, a river stage of 3.02 ft is measured upward from the gage's own zero. A surveyed levee crest of 41 ft is measured upward from a national datum. Both are lengths in feet, so subtracting one from the other produces a number that reads as freeboard, and a units library will pass it.

The gage zero at this station sits 37.04 ft above NAVD88, so the stage is 40.06 ft on that datum and the freeboard is 0.94 ft. Subtracting without the offset gives 37.98 ft, which overstates the margin by a factor of 40 in the direction of calling a levee safe.

GageLink refuses that subtraction and returns the offset that makes it well defined. The same applies to satellite elevations, which sit on a geoid, and to modelled flows, which may have no measurement behind them.

python demo/freeboard.py runs the whole example offline from recorded responses.

Converting a datum

The offset is available for most stations, so the refusal can become an answer. Pass on_datum to describe_location and the station's offset is converted through NOAA's VDatum, with the uncertainty of the conversion returned beside it:

altitude_of_gage_datum        4860 ft (NGVD29)      Boulder Creek at mouth, CO

altitude_accuracy 10 ft, interpolated from a topographic map altitude_on_requested_datum 4863.061 ft (NAVD88) conversion_uncertainty 0.17 ft offset_uncertainty 10 ft

Two things this surfaces are easy to miss.

The offset has an accuracy of its own. Across 7,361 USGS stream stations sampled in four states, 3,397 publish an altitude for their gage datum. Of those, 72% are known no better than a foot. The commonest published accuracy is 15 ft, a third were interpolated from a topographic map, and about one in twenty is levelled to a hundredth. A freeboard is bounded by that figure whatever precision the stage was read to, so describe_location returns it alongside the method used to determine it.

Most stations are on the older datum. 58% of those altitudes are published on NGVD29 while a modern survey or lidar product is on NAVD88. Across the contiguous states the difference runs to feet.

on_datum also takes the tidal datums (MLLW, MLW, LMSL, MTL, DTL, MHW, MHHW) for questions about level relative to the tide, and get_satellite_passes takes it to move SWOT elevations off the EGM2008 geoid they are measured against. Both cover the contiguous United States. Outside that coverage the conversion is refused and the reason is stated.

Tools

ToolWhat it does
find_locationsFind monitoring stations
describe_locationStation metadata and reference frames
get_latestThe latest reading for each parameter
get_seriesA time series over a date range
slice_seriesWork with part of a retrieved series
get_peaksAnnual peak flows
get_forecastForecasts and flood thresholds
get_model_forecastModelled flow for ungaged reaches
get_satellite_passesWater levels measured from orbit
navigate_networkUpstream and downstream stations
get_basinThe contributing drainage basin
lookup_parameterResolve a parameter code
export_manifestEverything that answered the question

All thirteen are read-only and annotated as such, so a client asks for consent once.

Results come back as structured data against each tool's output schema, so a unit, datum or grade is a field the client can read directly.

A series is returned as a handle with a summary. A year of 15-minute record is 35,000 values, and no answer needs them in a context window.

Prompts

A tool list says what can be called. It does not say what to call first, and the datum rule above is an order of operations rather than a call. Four prompts state the ones that go wrong when a model assembles them itself.

PromptWhat it walks through
freeboard_checkFetch the offset, then difference, then bound the answer
flood_statusStage against flood category, now and over the forecast
find_a_stationThe filter the relevant agency actually matches on
reproducible_answerAnswer, then export the manifest

Resources

The tables that do not change between calls, readable without spending a request against the hourly allowance.

ResourceWhat is in it
gagelink://instructionsThe four rules that decide whether an answer is right
gagelink://parametersThe common parameter codes and what each measures
gagelink://datumsEvery datum named here, and which can be converted onto
gagelink://coverageWhich tools answer for which country, and what each service omits
gagelink://manifestThis conversation's ledger, without a tool call

gagelink://parameter/{code} and gagelink://datum/{name} are templates, and their variables complete: the server answers completion/complete for them and for the prompt arguments with a closed set of values. The specification scopes completion to prompt arguments and resource template variables, which is why those two vocabularies are exposed as templates as well as inside the tool schemas.

Coverage

RegionServicesAvailable
United StatesUSGS, NOAA NWPS, NOAA National Water Model, NLDI, VDatumAll thirteen tools
FranceHub'EauSearch, metadata, latest readings, time series
United KingdomEnvironment AgencySearch, metadata, latest readings
GlobalSWOTSatellite water surface elevation

ERA5, GRACE, CAMELS and HydroBASINS are available to library callers.

Each service publishes a different amount, and the tools say which. Hub'Eau states no unit on any value, so levels in millimetres and flows in litres per second are labelled here from a recorded table. The Environment Agency publishes no record grade on live data, so age is the only staleness signal for a UK reading.

To find a UK station, find_locations takes country=GB. The agency matches river and town in full and in its own spelling, so River Thames returns stations and Thames returns none. Free text matched against the station name is the filter to use when the agency's spelling is unknown.

Protocol support

GageLink serves MCP revision 2026-07-28 and the three handshake revisions before it (2025-06-18, 2025-03-26, 2024-11-05). It declares tools, prompts, resources and completions, and declares listChanged false on all of them: every list is built at import, so a client that subscribed would be waiting on a notification that cannot come.

The 2026 revision removed the initialize handshake. Every request carries its own version and capabilities, so a client calls a tool on its first message and learns what the server is through server/discover. Clients on the earlier revisions continue to open a session and keep it.

Because a connection no longer implies a conversation, a client that wants a ledger of its own names one in _meta:

{"_meta": {"io.github.adeniyikayodee.gagelink/conversation": "whatever-you-call-it"}}

Each name gets its own manifest, quantities and checks. A client that sends no name shares the default.

For clients that cannot start a local process:

gagelink-mcp --http          # http://127.0.0.1:8765/mcp

This binds to loopback and checks the Origin header. It has no authentication, so --host on a reachable interface gives away your hourly allowance.

Reproducible answers

Every retrieval is recorded with its URL, the time it was made, and a hash of the response body. export_manifest returns that record, and a session can be replayed later in three modes:

  • offline uses the archived bodies
  • strict checks the live service returns identical data
  • revision_aware separates a changed answer caused by an official record revision from one caused by changed code

The third mode exists because hydrology data is revised. A provisional measurement is often approved or corrected months later, so an answer can change for reasons that have nothing to do with the code. revision_aware tells the two causes apart.

Values are also checked against the ledger, so an answer can be audited:

[ok]         3.02 ft        from get_latest.00065

[ok] 2960 ft3/s from get_latest.00060 [UNSOURCED] 116000 ft3/s no tool output produced this value

Benchmark

waterbench measures whether the interface changes what a model gets right. It runs the same nine tasks under three conditions: raw API responses, structured results with the metadata stripped, and the full toolkit.

First results, gpt-oss-120b, eight replicates, 216 runs:

ConditionCorrect
Raw API61/72
Structured, no metadata63/72
GageLink70/72

Six of the nine tasks sit at ceiling, which is a finding about the suite. Where it separates, the causes are legible. Two long-record tasks sent 49,864 and 42,006 prompt tokens through raw JSON against 5,462 and 2,384 through the toolkit. On the opaque-unit task, stripping the reference frames sent seven of eight runs into the recorded trap, answering with the USGS discharge of 3010 ft³/s where the forecast service had published 2.95 kcfs.

One model and a small suite, so these numbers are an early signal about the interface. A general claim would need more models and more tasks.

Development

python3 -m venv .venv

.venv/bin/pip install -e ".[dev]" .venv/bin/pytest

Requires Python 3.10 or later. The suite answers from recorded fixtures and needs no network access. `mypy src/gagelink

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기