Skip to main content
Glama
olaurendeau

mcp-camptocamp

by olaurendeau

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:

#

Route

Grade

Outings

1

Couloir Whymper

AD+

241

2

Couloir Couturier

D

92

3

Arête du Jardin

D-

33*

4

Arête des Grands Montets

D

24

5

Arête du Moine

AD+

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.

Related MCP server: bergauf

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

Client

Works?

Setup

Claude Desktop

Yes

Claude Desktop

Claude Code

Yes

Claude Code

ChatGPT desktop app, Codex CLI and Codex IDE extension

Yes

ChatGPT desktop app and Codex

Mistral Vibe Code CLI and VS Code extension

Yes

Mistral Vibe Code

Gemini CLI, Gemini Code Assist

Yes: CLI in a trusted folder, Code Assist in agent mode

Gemini CLI and Gemini Code Assist

Your own agent: OpenAI Agents SDK, Mistral Python SDK, google-genai

Yes

Agent SDKs

Cursor and other clients that start a local command

Yes

Getting started

Claude.ai custom connectors, Vibe Work

With an instance you host over HTTP (v1.4.0 or later)

Self-hosting over HTTP

ChatGPT on the web, Gemini API

No: remote servers only

Remote-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).

Tool

What it does

search_routes

Search routes by keyword, area, waypoint, activity, rating, elevation gain, route type or configuration; paged.

get_route

One route by ID: ratings, elevation, practical facts, description, areas, books, waypoints and recent outings.

search_waypoints

Search summits, huts, passes, crags and other waypoints by name and/or area, optionally by type; paged.

get_waypoint

One waypoint by ID: altitude, GPS coordinates, hut details, access, areas, routes, books and outings.

search_outings

Search trip reports by keyword, area, activity, ratings, conditions, elevation, dates, routes, waypoint or user.

search_user_outings

The outings a Camptocamp user is listed on, by user ID; an alias of search_outings.

get_outing

One outing by ID: reported ratings and conditions, weather, report text, participants and routes.

get_outings

Up 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_stats

Count search_outings matches by start month, year, condition (from v1.4.0), two of them or per route (not in v1.4.0)

search_areas

Search ranges, administrative subdivisions and countries by name; the ID is reusable as area_id.

get_area

One area by ID: type, summary and description.

search_books

Search guidebooks and other books by title, book type and activity; author and ISBN searches are unreliable.

get_book

One book by ID: author, editor, date, ISBN, languages, waypoints, articles; 50 routes/call (not in v1.4.0).

search_articles

Search articles (gear, technique, environment, stories) by keyword; by category, type and activity from v1.4.0.

get_article

One 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

Available Tools

6 tools
get_outingA

Get full details of a specific outing (trip report) from Camptocamp.org by its ID, including description, conditions, weather, participants, and associated routes.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesOuting ID from Camptocamp

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It indicates the tool returns detailed data but does not explicitly state it is a read-only, non-destructive operation. The absence of any hint about side effects or permissions leaves some ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the purpose and lists included details. Every word adds value; no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only one parameter and no output schema, the description is reasonably complete. It covers what the tool returns and how to identify the outing. It could mention the implicit read-only nature, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds little beyond restating the parameter's purpose. The description mentions 'by its ID' but does not provide additional context like format or constraints beyond the schema's exclusiveMinimum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves full details of a specific outing by ID, listing included fields like description, conditions, weather, participants, and routes. It distinguishes itself from sibling tools like get_route, get_waypoint, and search variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you have an outing ID and want complete details. While it doesn't explicitly state when not to use or name alternatives, the sibling tool names provide differentiation. No exclusions are needed given the focused purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_routeA

Get full details of a specific route from Camptocamp.org by its ID, including description, ratings, elevation data, and gear requirements.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRoute ID from Camptocamp

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must cover behavioral traits. It does not state that the tool is read-only, mention authentication needs, or disclose any side effects. This is a significant gap for a data retrieval tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that specifies the tool's action and output. It could be slightly more structured but is efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of one parameter and no output schema, the description is reasonably complete by listing key data categories. However, it could benefit from mentioning the response format or any limitations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with one parameter 'id' that is well-described. The description adds no additional parameter context beyond the schema, so it meets the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves full details of a specific route by ID, listing specific data fields like descriptions, ratings, and gear requirements. It distinguishes from siblings which search or get other entity types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the description: use when you have a route ID and need full details. However, no explicit guidance on when not to use or alternatives like search_routes is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_waypointA

Get full details of a specific waypoint from Camptocamp.org by its ID, including altitude, GPS coordinates, and description.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWaypoint ID from Camptocamp

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must cover behavioral traits. It only states that the tool returns full details and lists a few fields, but does not disclose whether the operation is read-only, has rate limits, authentication requirements, or error handling behavior. The description minimally describes output but not side effects or constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the core purpose and output details without any waste. It is front-loaded with the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has only one parameter and no output schema, the description adequately covers what the tool does and what it returns (altitude, GPS coordinates, description). However, the phrase 'full details' is vague and could be more precise about all possible fields (e.g., name, type). Still, it provides sufficient context for a simple retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema's 'Waypoint ID from Camptocamp'; it merely says 'by its ID'. No extra context for parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb ('Get full details'), the resource ('specific waypoint from Camptocamp.org'), and the key data fields ('altitude, GPS coordinates, and description'). It distinguishes itself from sibling tools like get_outing and search_waypoints by focusing on a single waypoint by ID.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when retrieving details of a known waypoint by its ID, but it lacks explicit guidance on when to use this tool versus alternatives like search_waypoints (which might be used for searching by criteria). No when-not-to-use or prerequisite information is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_routesA

Search for mountain routes on Camptocamp.org. Returns a list of matching routes with basic info (ID, title, activities, elevation, rating).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results
queryYesSearch query for routes (e.g. 'Mont Blanc voie normale')

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It discloses the output fields but lacks details on pagination, ordering, rate limits, or other behavioral traits beyond the basic search and list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states purpose, second describes output. Front-loaded and no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with no output schema and no annotations, the description provides adequate basic info but lacks details on ordering, pagination, and error handling. It is minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds marginal value. It includes an example for the query parameter, but the schema already provides descriptions for both parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches for mountain routes on Camptocamp.org and lists the returned fields (ID, title, activities, elevation, rating). It distinguishes from siblings like get_route (single route) and search_waypoints (different resource).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for searching routes but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_user_outingsA

List outings (trip reports) published by a Camptocamp user. Returns outings with ID, title, activities, date, elevation, and rating. Use the user_id from the Camptocamp profile URL (e.g. u=430052).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results
user_idYesCamptocamp user ID (e.g. 430052 for username o.laurendeau)

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the returned fields but does not disclose behavioral traits like pagination, ordering, rate limits, or side effects. This is adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with purpose and output details, and contains no fluff. Every sentence is essential.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with no output schema, the description covers purpose, parameters, and return fields. However, it lacks details on pagination behavior (e.g., if limit implies cursor-based pagination) and error conditions. Some context is missing for full autonomous use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds value by explaining how to derive the user_id parameter from a profile URL. The limit parameter is not elaborated beyond the schema, but the overall semantics are well-supported.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists outings (trip reports) by a Camptocamp user, specifying the return fields. It distinguishes from sibling tools like get_outing (single outing) and search_routes (different resource).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains how to obtain the user_id from the profile URL, providing clear context. However, it does not explicitly mention when not to use this tool or point to alternatives for other needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_waypointsA

Search for waypoints (summits, shelters, huts, bivouacs) on Camptocamp.org. Returns a list of matching waypoints with basic info (ID, title, type, elevation).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results
queryYesSearch query for waypoints (e.g. 'Mont Blanc', 'refuge Goûter')

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It states returns basic info (ID, title, type, elevation) but does not disclose search behavior (e.g., case sensitivity, partial matching, ordering, pagination). Not misleading but could be more transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with purpose, no unnecessary words. Efficient and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with 2 parameters and no output schema, the description covers what it returns and gives examples. However, it omits mentioning the limit parameter (though schema covers it) and any ordering or result behavior. Still fairly complete given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions already provided. The description adds example queries ('Mont Blanc', 'refuge Goûter') which is helpful but does not significantly enhance understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it searches for waypoints (summits, shelters, huts, bivouacs) on Camptocamp.org and returns matching results with basic info. It uses specific verb 'search' and resource 'waypoints', distinguishing from sibling tools like get_waypoint (retrieves single waypoint).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives (e.g., get_waypoint for exact ID search). The purpose is clear, but the description does not provide context for selection among sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.0
    • First observedget_outing
    • First observedget_route
    • First observedget_waypoint
    • First observedsearch_routes
    • First observedsearch_user_outings
    • First observedsearch_waypoints

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct entity (outing, route, waypoint) and action (get by ID, search). There is no overlap, and descriptions clearly differentiate them.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern: 'get_' for retrieval and 'search_' for listing. Noun forms are plural for generic searches and 'user_outings' is a clear compound noun.

Tool Count5/5

With 6 tools covering the three core entities (outing, route, waypoint) with retrieval and search, the count is well-scoped and appropriate for the server's purpose.

Completeness3/5

The server lacks a general search for outings, only allowing search by user. This is a notable gap for a trip report platform where browsing all outings is essential.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Provides spatial context and geographic data access for LLMs through France's Géoplateforme services, including geocoding, altitude queries, administrative boundaries, cadastral data, and vector data exploration.
    10
    18 npm
    28
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Lets an LLM plan hikes anywhere in Switzerland by combining named routes, elevation profiles, weather forecasts, and public transport.
    7
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to retrieve Italian Alpine and Apennine hiking data, including numbered trails, refuges, avalanche bulletins, and mountain weather forecasts, through MCP tools, resources, and prompts.
    9
    1
    MIT