mcpField
C
Camptocamp

Camptocamp

Local
github.com/olaurendeauMaps & Travel1Updated 3w ago

About Camptocamp

Camptocamp is an MCP server for mountaineers and outdoor enthusiasts, giving LLMs read-only access to public Camptocamp.org data. It omits unavailable values rather than guessing and includes source links.

Key features

  1. 01Search routes and view grades and descriptions
  2. 02Look up summits, huts, and altitudes
  3. 03Find trip reports and recent conditions
  4. 04Search areas, guidebooks, and articles

Use cases

  1. 01Check a summit altitude or route rating
  2. 02Review recent conditions reported for a route
  3. 03Find climbing routes in an area
  4. 04Look up related guidebooks and articles

MCP support

The MCP server exposes mountaineering data from the public Camptocamp API through read-only tools. Tool results include Camptocamp.org links for citation.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"olaurendeau-mcp-camptocamp": {
"command": "npx",
"args": [
"-y",
"@olaurendeau/mcp-camptocamp"
]
}
}
}
Run commandnpx -y @olaurendeau/mcp-camptocamp

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@olaurendeau/mcp-camptocamp1.4.0
ocighcr.io/olaurendeau/mcp-camptocamp:1.4.0

Tools

15

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
langenumNoLanguage of titles and texts, one of: fr, en, de, it, es, ca, eu, sl, zh (default fr)fr | en | de | it | es | ca | eu | sl | zh
limitintegerNoMaximum number of results
querystringNoSearch query for routes (e.g. 'Mont Blanc voie normale'). Matches route names ('<summit> : <route title>') only, not descriptions
offsetintegerNoNumber of results to skip, for paging (offset + limit ≤ 10,000)
area_idintegerNoCamptocamp area ID from search_areas (e.g. 14403 for Écrins)
activityenumNoActivity, one of: skitouring, snow_ice_mixed, mountain_climbing, rock_climbing, ice_climbing, hiking, snowshoeing, paragliding, mountain_biking, via_ferrata, slackliningskitouring | snow_ice_mixed | mountain_climbing | rock_climbing | ice_climbing | hiking | snowshoeing | paragliding | mountain_biking | via_ferrata | slacklining
rating_maxstringNoHardest rating to include, from the scale of rating_system (e.g. 'AD' for global_rating)
rating_minstringNoEasiest rating to include, from the scale of rating_system (e.g. '3.1' for ski_rating)
route_typesarrayNoRoute types, matching any of: return_same_way, loop, loop_hut, traverse, raid, expedition
waypoint_idintegerNoCamptocamp waypoint ID from search_waypoints: routes associated with this summit, hut, crag… (e.g. 37916 for Mont Pourri)
configurationarrayNoTerrain configurations, matching any of: edge, pillar, face, corridor, goulotte, glacier (edge = arête/ridge). Tagging is incomplete: routes without a configuration are excluded, and some ridges are tagged pillar or glacier. For ridges, also search query: 'arête', which matches names only and so also lists routes on summits whose name contains 'arête'
rating_systemenumNoRating system to filter on, with rating_min and/or rating_max (inclusive bounds, one system per call; ski_rating is the Toponeige ski rating). Valid values per system, easiest first: ski_rating: 1.1, 1.2, 1.3, 2.1, 2.2, 2.3, 3.1, 3.2, 3.3, 4.1, 4.2, 4.3, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6; ski_exposition: E1, E2, E3, E4; labande_ski_rating: S1, S2, S3, S4, S5, S6, S7; labande_global_rating: F, F+, PD-, PD, PD+, AD-, AD, AD+, D-, D, D+, TD-, TD, TD+, ED-, ED, ED+, ED4, ED5, ED6, ED7; global_rating: F, F+, PD-, PD, PD+, AD-, AD, AD+, D-, D, D+, TD-, TD, TD+, ED-, ED, ED+, ED4, ED5, ED6, ED7; engagement_rating: I, II, III, IV, V, VI; risk_rating: X1, X2, X3, X4, X5; equipment_rating: P1, P1+, P2, P2+, P3, P3+, P4, P4+; rock_free_rating: 2, 3a, 3b, 3c, 4a, 4b, 4c, 5a, 5a+, 5b, 5b+, 5c, 5c+, 6a, 6a+, 6b, 6b+, 6c, 6c+, 7a, 7a+, 7b, 7b+, 7c, 7c+, 8a, 8a+, 8b, 8b+, 8c, 8c+, 9a, 9a+, 9b, 9b+, 9c, 9c+; rock_required_rating: 2, 3a, 3b, 3c, 4a, 4b, 4c, 5a, 5a+, 5b, 5b+, 5c, 5c+, 6a, 6a+, 6b, 6b+, 6c, 6c+, 7a, 7a+, 7b, 7b+, 7c, 7c+, 8a, 8a+, 8b, 8b+, 8c, 8c+, 9a, 9a+, 9b, 9b+, 9c, 9c+; exposition_rock_rating: E1, E2, E3, E4, E5, E6; aid_rating: A0, A0+, A1, A1+, A2, A2+, A3, A3+, A4, A4+, A5, A5+; ice_rating: 1, 2, 3, 3+, 4, 4+, 5, 5+, 6, 6+, 7, 7+; mixed_rating: M1, M2, M3, M3+, M4, M4+, M5, M5+, M6, M6+, M7, M7+, M8, M8+, M9, M9+, M10, M10+, M11, M11+, M12, M12+; via_ferrata_rating: K1, K2, K3, K4, K5, K6; hiking_rating: T1, T2, T3, T4, T5; hiking_mtb_exposition: E1, E2, E3, E4; snowshoe_rating: R1, R2, R3, R4, R5; mtb_up_rating: M1, M2, M3, M4, M5; mtb_down_rating: V1, V2, V3, V4, V5. Routes without a value for the chosen rating are excluded.ski_rating | ski_exposition | labande_ski_rating | labande_global_rating | global_rating | engagement_rating | risk_rating | equipment_rating | rock_free_rating | rock_required_rating | exposition_rock_rating | aid_rating | ice_rating | mixed_rating | via_ferrata_rating | hiking_rating | hiking_mtb_exposition | snowshoe_rating | mtb_up_rating | mtb_down_rating
height_diff_up_maxintegerNoHighest elevation gain in metres, inclusive (routes without an elevation gain are excluded)
height_diff_up_minintegerNoLowest elevation gain in metres, inclusive (routes without an elevation gain are excluded)

Details

From the project README

mcp-camptocamp

An MCP server that lets an LLM look up mountain routes, summits, huts and trip reports on Camptocamp.org instead of guessing them.

CI Contract npm version npm downloads MCP registry Node License GHCR

What it does

Ask an LLM for the altitude of a summit or the rating of a ski tour and it may answer from memory, and get it wrong. This server gives it read-only access to Camptocamp.org, the collaborative mountaineering site: routes with their ratings and descriptions, summits and huts with their altitudes, trip reports with the conditions people found, areas, guidebooks and articles. Every tool output comes from the public Camptocamp API, with the camptocamp.org link to cite, and a value Camptocamp does not have is left out, never guessed. It needs no account and no API key.

An example conversation from October 2026, run against the published server (v1.3.0); the answer's table is cut to its first 5 rows:

Prompt: Give me the top 10 of most climbed routes on l'aiguille verte. With a very concise response

Called camptocamp 20 times

Top 10 routes on the Aiguille Verte, ranked by the number of camptocamp outings logged since the site began:

#RouteGradeOutings
1Couloir WhymperAD+241
2Couloir CouturierD92
3Arête du JardinD-33*
4Arête des Grands MontetsD24
5Arête du MoineAD+22*
…5 more rows

* Two counts are inflated. The Arête du Jardin figure includes traverses that stop at the Aiguille du Jardin without reaching the Verte. The Arête du Moine figure includes outings where it was only the descent route.

These are camptocamp reports, not actual ascents.

Quick start

The server runs on your machine, started by your MCP client over stdio. Run it with npx, which needs Node.js 22 or later, or with Docker.

npx. Clients configured with an mcpServers JSON object, such as Claude Desktop (claude_desktop_config.json), Gemini CLI (settings.json) or Cursor (.cursor/mcp.json), take this entry:

{
  "mcpServers": {
    "camptocamp": {
      "command": "npx",
      "args": ["-y", "@olaurendeau/mcp-camptocamp"]
    }
  }
}

In Claude Code, one command adds it for every project:

claude mcp add --transport stdio --scope user camptocamp -- npx -y @olaurendeau/mcp-camptocamp

Docker. Use this entry instead; the image runs on amd64 and arm64:

{
  "mcpServers": {
    "camptocamp": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "ghcr.io/olaurendeau/mcp-camptocamp:latest"]
    }
  }
}

The first start downloads the package or the image, which can outlast a client's startup timeout. Getting started shows how to download it beforehand, a smoke test, and the Docker command for Claude Code; Troubleshooting helps when the server does not show up.

The server is listed in the official MCP registry as io.github.olaurendeau/mcp-camptocamp.

Supported clients

ClientWorks?Setup
Claude DesktopYesClaude Desktop
Claude CodeYesClaude Code
ChatGPT desktop app, Codex CLI and Codex IDE extensionYesChatGPT desktop app and Codex
Mistral Vibe Code CLI and VS Code extensionYesMistral Vibe Code
Gemini CLI, Gemini Code AssistYes: CLI in a trusted folder, Code Assist in agent modeGemini CLI and Gemini Code Assist
Your own agent: OpenAI Agents SDK, Mistral Python SDK, google-genaiYesAgent SDKs
Cursor and other clients that start a local commandYesGetting started
Claude.ai custom connectors, Vibe WorkWith an instance you host over HTTP (v1.4.0 or later)Self-hosting over HTTP
ChatGPT on the web, Gemini APINo: remote servers onlyRemote-only clients

The support matrix lists the clients covered by the client pages and the agent SDK guide, with the date each page was last checked against the vendor's docs.

Tools

15 read-only tools: one search and one detail tool per kind of Camptocamp document, a shortcut for a user's outings, get_outings, to read several outings in one call, and outing_stats, to count outings by month, year or condition (these two from v1.4.0). Search results give IDs; the get_* tools take an ID. Every tool takes lang, the language of titles and texts (fr by default; v1.3.0 or later).

ToolWhat it does
search_routesSearch routes by keyword, area, waypoint, activity, rating, elevation gain, route type or configuration; paged.
get_routeOne route by ID: ratings, elevation, practical facts, description, areas, books, waypoints and recent outings.
search_waypointsSearch summits, huts, passes, crags and other waypoints by name and/or area, optionally by type; paged.
get_waypointOne waypoint by ID: altitude, GPS coordinates, hut details, access, areas, routes, books and outings.
search_outingsSearch trip reports by keyword, area, activity, ratings, conditions, elevation, dates, routes, waypoint or user.
search_user_outingsThe outings a Camptocamp user is listed on, by user ID; an alias of search_outings.
get_outingOne outing by ID: reported ratings and conditions, weather, report text, participants and routes.
get_outingsUp to 10 outings by ID in get_outing format (from v1.4.0); sections cut at 2,000, up to 8,000 (not in v1.4.0).
outing_statsCount search_outings matches by start month, year, condition (from v1.4.0), two of them or per route (not in v1.4.0)
search_areasSearch ranges, administrative subdivisions and countries by name; the ID is reusable as area_id.
get_areaOne area by ID: type, summary and description.
search_booksSearch guidebooks and other books by title, book type and activity; author and ISBN searches are unreliable.
get_bookOne book by ID: author, editor, date, ISBN, languages, waypoints, articles; 50 routes/call (not in v1.4.0).
search_articlesSearch articles (gear, technique, environment, stories) by keyword; by category, type and activity from v1.4.0.
get_articleOne article by ID: text, author, type, and the routes, waypoints, articles, outings and books linked to it.

Each tool page gives its inputs, generated from the registered schema, its output format, a real example and its limits: see the tool reference.

Guides

  • Using the tools with an LLM: which tools to chain for a region, a summit altitude, a hut, recent conditions or guidebooks; what each output line means; and a real June ski-tour example.
  • System prompt: a prompt to paste into your agent, so the model quotes Camptocamp, cites it and says when a value is missing.
  • Self-hosting over HTTP: host an instance behind a secret token for clients that only take a URL, such as Claude.ai and Vibe Work (v1.4.0 or later).
  • Documentation index: every page, by topic.

Development

Everything runs in Docker, through the Makefile: no local Node.js is needed. make check runs the same steps as the CI checks job: format, lint, type check, tests with enforced coverage thresholds (95 % of lines, functions and statements, 90 % of branches), build and hook tests. Every change lands through a reviewed pull request: see CONTRIBUTING.md (in French), and Development for the make targets, the live API contract tests, releases and the stack.

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.