hut-reservation-mcp
Write-safe MCP server for searching availability and preparing SAC hut reservations
Install / Use
claude mcp add domwoe -- npx -y github:domwoe/hut-reservation-mcpIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Our assessment of hut-reservation-mcp
hut-reservation-mcp scores 75/100 on our quality scale, 2329th of 3,348 Development & Engineering skills we index.
Its MCP Server is 14 KB long, well organised into 21 sections with 15 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated about 3 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
- Our last check on 2026-09-27 found the source still online.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 85/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-09-28. Automated pattern scan on 2026-09-28. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
hut-reservation-mcp compared with similar skills
All 4 of these similar skills score higher than hut-reservation-mcp; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| hut-reservation-mcp (this skill)by domwoe | 75 | 3 | 3mo ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 86.0k | 13d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.0k | today | CLAUDE.md |
| rufloby ruvnet | 100 | 73.4k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.2k | today | CLAUDE.md |
Frequently asked questions
- How do I install hut-reservation-mcp?
- Run
claude mcp add domwoe -- npx -y github:domwoe/hut-reservation-mcp. The install tabs above show the steps for each supported agent. - Which AI agents does hut-reservation-mcp work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is hut-reservation-mcp safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is MIT-licensed and scores 85/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is hut-reservation-mcp still maintained?
- The repository was last updated about 3 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
Skill content
View source on GitHub🏔️ hut-reservation MCP
Find, check, and book Swiss Alpine Club (SAC) huts straight from your AI agent — write-safe by default.
A Model Context Protocol server that gives any MCP-capable agent (Claude, Codex, Cursor, …) the ability to search huts on hut-reservation.org, check exact-date availability, and prepare bookings and cancellations.
Ask your agent things like:
- "Find huts within 20 km of Zermatt that have space for 2 people on 12 July."
- "Is the Cabane du Mont Fort free next weekend?"
- "Draft a booking for the Britanniahütte for 2 nights and give me the confirmation link."
- "List my upcoming hut reservations."
Why write-safe? Bookings and cancellations never fire blind. By default the server prepares a draft and hands you a browser URL to confirm the final step yourself — so an agent can do all the searching and legwork without the risk of an accidental, hard-to-reverse reservation. Confirmed upstream writes are opt-in. See Safety model.
Quick start
npx hut-reservation-mcp
The server speaks MCP over stdio, so you normally don't run it by hand — you point your MCP client at it and let the client spawn it. Pick your client below.
<details> <summary><strong>Claude Code</strong></summary>claude mcp add hut-reservation -- npx -y hut-reservation-mcp
Restart Claude Code after adding so the server is respawned, then check /mcp.
Add this to your claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"hut-reservation": {
"command": "npx",
"args": ["-y", "hut-reservation-mcp"]
}
}
}
Restart Claude Desktop after editing the file.
</details> <details> <summary><strong>Codex</strong></summary>codex mcp add hut-reservation -- npx -y hut-reservation-mcp
Codex stores the server in config.toml. Start a new Codex session (MCP tools aren't injected into a running turn), then confirm with /mcp in the TUI.
Most clients accept a config of this shape:
{
"mcpServers": {
"hut-reservation": {
"command": "npx",
"args": ["-y", "hut-reservation-mcp"],
"env": {
"HUT_RESERVATION_CACHE_DIR": "$HOME/.cache/hut-reservation-mcp"
}
}
}
}
</details>
The package ships with a bundled hut catalog so search_huts and search_hut_availability work immediately without logging in. Availability lookups are also unauthenticated. You'll get a warning in results that the bundled catalog may be stale — run refresh_hut_catalog with credentials to update it. Booking, cancellation, listing your reservations, and refreshing the catalog require authentication. See Configuration & authentication.
Tools
All tool-facing dates use ISO YYYY-MM-DD. The server translates to the upstream Swiss DD.MM.YYYY format internally.
| Tool | Purpose | Auth required | Writes? |
| --- | --- | :---: | :---: |
| auth_status | Report login, catalog, geocoder, area-cache, and draft-cache readiness. Run this first when diagnosing setup. | No | — |
| search_huts | Search cached huts by text, country, canton, or distance around coordinates. Uses bundled catalog if no local cache. | No¹ | — |
| search_hut_availability | Search exact-period availability for matched huts. Availability lookups are unauthenticated. | No¹ | — |
| refresh_hut_catalog | Refresh cached hut metadata from the upstream hut list. Replaces the bundled catalog with fresh data. | Yes | — |
| refresh_area_cache | Refresh canton/country area data via a reverse geocoder. Needs NOMINATIM_BASE_URL, not login. | No² | — |
| prepare_booking | Create a safe booking draft (does not confirm). | Yes | — |
| confirm_booking | Confirm a prepared booking, or return a browser handoff URL. | Yes | ⚠️ |
| list_bookings | List your reservations via the authenticated endpoint. | Yes | — |
| prepare_cancellation | Create a safe cancellation draft (does not confirm). | Yes | — |
| confirm_cancellation | Confirm a prepared cancellation, or return a browser handoff URL. | Yes | ⚠️ |
¹ Works without credentials using the bundled catalog. Results include a staleness warning; run refresh_hut_catalog with credentials to update.
² Requires a configured Nominatim-compatible geocoder (NOMINATIM_BASE_URL), but no hut-reservation.org login.
⚠️ Confirmation tools return a browser handoff URL by default. They only perform a real upstream write when experimental writes are explicitly enabled and a raw payload is supplied.
search_hut_availability checks every matched hut by default. Set maxCandidates only when you intentionally want a faster partial search; partial responses include truncated, totalCandidates, checkedCandidates, and a warning.
Suggested workflows
Find huts with availability (no login needed for steps 1–2)
search_huts→ 2.search_hut_availability. The bundled catalog is used automatically if no local cache exists; watch for the staleness warning.- Optionally: authenticate →
refresh_hut_catalog→ repeat for the latest hut list. - For canton filters: configure a reverse geocoder →
refresh_area_cache(no login needed).
Prepare a booking
- Search huts + availability → 2.
prepare_booking→ 3. review the draft → 4.confirm_booking→ 5. complete the browser handoff (unless experimental writes are enabled).
Prepare a cancellation
- Authenticate → 2.
list_bookings→ 3.prepare_cancellation→ 4. review the draft → 5.confirm_cancellation→ 6. complete the browser handoff (unless experimental writes are enabled).
Safety model
High-risk upstream writes are intentionally conservative. The public SPA exposes preBook, submit, myReservations, reservationSummary, delete/{id}, and partial-cancellation-fee endpoints, but the full booking-form payload is not documented — so blind automated writes would be fragile and risky.
By default, confirm_booking and confirm_cancellation return a browser handoff URL instead of writing. A real write requires both:
HUT_RESERVATION_EXPERIMENTAL_WRITES=true, and- a caller-supplied raw payload.
Treat session cookies, XSRF tokens, passwords, and raw booking payloads as bearer credentials. Keep them in ignored local files, your MCP client's env config, or a secret manager. Never commit them.
Configuration & authentication
Do I need to authenticate?
No — searching works out of the box. The package bundles a hut catalog, and hut availability is a public endpoint, so you can find huts and check dates with zero setup. Add credentials only when you want fresher data or to touch your own reservations.
| What you want to do | Tools | Credentials |
| --- | --- | :---: |
| Search huts & check availability | search_huts, search_hut_availability | Not needed (uses the bundled catalog) |
| Update the catalog to the latest hut list | refresh_hut_catalog | Required |
| Get canton filters | refresh_area_cache | Not needed — but requires a geocoder |
| List your reservations | list_bookings | Required |
| Prepare / confirm a booking or cancellation | prepare_booking, confirm_booking, … | Required |
The bundled catalog only changes when huts open, close, or get renamed — rarely. Search results flag when it's getting old so your agent can suggest a refresh_hut_catalog.
Which auth mode?
⚠️ If you log in to hut-reservation.org via the Swiss Alpine Club (i.e. your account is an SAC account), you must use
sacmode. Thestandardusername/password flow only works for native hut-reservation.org accounts; an SAC-linked email will authenticate but the session is rejected as "Invalid Session". When in doubt, usesac.
standard — a native hut-reservation.org account (username + password):
HUT_RESERVATION_AUTH_MODE=standard
HUT_RESERVATION_USERNAME=person@example.com
HUT_RESERVATION_PASSWORD=...
sac — an SAC account, via browser-session cookies. Log in at hut-reservation.org through SAC in your browser, then open DevTools → Application → Cookies → https://www.hut-reservation.org and copy the SESSION and XSRF-TOKEN values:
HUT_RESERVATION_AUTH_MODE=sac
HUT_RESERVATION_SESSION_COOKIE=...
HUT_RESERVATION_XSRF_TOKEN=...
# or, equivalently, both in one header:
# HUT_RESERVATION_COOKIE_HEADER="SESSION=...; XSRF-TOKEN=..."
SAC cookies expire — when catalog refresh starts failing with an auth error, grab fresh cookie values from the browser.
Setting these variables with the npx install
Because your MCP client (not your shell) spawns the server, set credentials in the client config rather than relying on a shell environment. Two options:
1. Inline in the client's env block (or -e KEY=val with claude mcp add):
{
"mcpServers": {
"hut-reservation": {
"command": "npx",
"args": ["-y", "hut-reservation-mcp"],
"env": {
"HUT_RESERVATION_AUTH_MODE": "sac",
"HUT_RESERVATION_SESSION_COOKIE": "...",
"HUT_RESERVATION_XSRF_TOKEN": "..."
}
}
}
}
2. Point at a .env file by absolute path — keeps secrets out of the client config:
"env": { "HUT_RESERVATION_DOTENV_PATH": "/Users/me/.config/hut-reservation/.env" }
The server auto-loads .env from its working directory too, but under npx that directory is unpredictable, so prefer HUT_RESERVATION_DOTENV_PATH. Values from the env block override values from the .env file. See .env.example for a template, and treat cookies, tokens, and passwords as secrets — never commit them.
All environment variables
| Variable | Description |
| --- | --- |
| HUT_RESERVATION_AUTH_MODE | standard (username/password) or sac (browser-session cookies). |
| HUT_RESERVATION_USERNAME / HUT_RESERVATION_PASSWORD | Standard hut-reservation.org credentials. |
| HUT_RESERVATION_SESSION_COOKIE / HUT_RESERVATION_XSRF_TOKEN | SAC SESSION and XSRF-TOKEN cookie values. |
| HUT_RESERVATION_COOKIE_HEADER | Combined cookie header, e.g. SESSION=...; XSRF-TOKEN=.... |
| HUT_RESERVATION_CACHE_DIR | Cache directory. Defaults to ~/.cache/hut-reservation-mcp. |
| HUT_RESERVATION_REQUEST_TIMEOUT_MS | Upstream request timeout (ms). Default 15000. |
| HUT_RESERVATION_EXPERIMENTAL_WRITES | true to allow raw-payload confirmed writes. Default false. |
| HUT_RESERVATION_DOTENV_PATH / HUT_RESERVATION_DOTENV_DISABLED | Point at a specific .env, or disable dotenv loading. |
| NOMINATIM_BASE_URL | Reverse geocoder base URL. Required before refresh_area_cache can geocode. |
| NOMINATIM_USER_AGENT / NOMINATIM_EMAIL / NOMINATIM_MIN_INTERVAL_MS | Identifying User-Agent, contact email, and rate limit for geocoder requests. |
Reverse geocoder (optional, for canton filters)
NOMINATIM_BASE_URL=https://your-nominatim.example
NOMINATIM_USER_AGENT="hut-reservation-mcp/0.1.0 you@example.com"
NOMINATIM_MIN_INTERVAL_MS=1000
The server never uses public Nominatim implicitly. Configure an explicit provider and identifying User-Agent before calling refresh_area_cache. Follow the provider's usage policy, c
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
86.0kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ruflo
73.4k🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
CowAgent
47.2kOpen-source super AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
