io.github.chrischall/alltrails-mcp
NPM · ALLTRAILS-MCP
Unofficial AllTrails MCP for Claude — search trails, get details, reviews, photos, saved lists
Available components
Last scanned (9 hours ago)
Scores higher than 77% of npm servers
Category Maps and Location
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security63
- No malware found by supply-chain analysis.Pass
- Known CVEs could not be checked: the version this server declares is not published in its registry.Unverified
- No install/post-install scripts declared.Pass
- Dependency health could not be checked: the version this server declares is not published in its registry.Unverified
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to chrischall/alltrails-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability70
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 2388 tokens (~183/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 13 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 −11
- Known CVEs: pass → unverified ▼ security
- Stability: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Security disclosure: unverified → fail ▼ functional
- Dependency health: 1.00 → unverified ▼ functional
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Package version: 3.1.11 → 3.2.1 functional
- Package version: 3.1.11 → 3.2.0 functional
- 1 Nov 26 0
- Package version: 3.1.8 → 3.1.11 functional
- 30 Oct 26 0
- Security disclosure: fail → unverified ▼ functional
- 28 Oct 26 0
- Stability: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Package version: 3.1.10 → 3.1.11 functional
- 18 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 17 Oct 26 −12
- Malware scan: pass → unverified ▼ security
- Known CVEs: partial → pass ▲ security
- Stability: 0.93 → pass security
- Dependency health: partial → 1.00 functional
- Package version: 3.1.9 → 3.1.10 functional
- 16 Oct 26 −4
- Stability: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Known CVEs: pass → partial ▼ security
- Schema quality: 155 → 177 ▼ functional
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Dependency health: 1.00 → partial functional
- Stability: pass → 0.93 functional
- Package version: 3.1.8 → 3.1.9 functional
- 14 Oct 26 +46
- Injection markers: unverified → pass ▲ security
- Stability: unverified → pass ▲ security
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Analysed npm/alltrails-mcp@3.2.1
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | chrischall/alltrails-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/chrischall/alltrails-mcp/.github/workflows/release-please.yml@refs/heads/main |
| Rekor log index | 3691538975 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:1e81d33527190dad9220ff46f1a193c0467f340bee4353e6c9087246458863c762934436e7a029918ae4f0295866b3e8d00ba002f1a7695dc279903cd |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
alltrails_get_activity_feed Get AllTrails activity feed ~352
Get an AllTrails user's activity feed (recorded hikes and posts). Defaults to the signed-in user; pass a userId to target a specific public profile. Without a feed argument this returns the feed DIRECTORY (the available feeds: local, timeline (following), personal (own posts)) — pass feed to get the actual items. Returns slim projections by default; pass view:"full" for the whole records, or view:"brief" for one line per item (brief reads the timeline when no feed is named).
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque nextCursor from a previous page, for pagination |
| feed | string | – | Which feed to read: local (nearby activity), timeline (people you follow), personal (own posts). Omit to list the available feeds. |
| maxItems | integer | – | Max items per page (server-side) |
| userId | string | – | Numeric AllTrails user id. Defaults to the signed-in user. |
| view | string | – | Response shape. "compact" (default) returns { count, hasNextPage, nextCursor, items: [{ type, timestamp, description, user, trail, activity, review }] } — and the no-feed directory as { name, display… |
No output schema declared.
No examples provided.
alltrails_get_list_items Get AllTrails list items ~207
Get the trails saved in an AllTrails list by its numeric list id (from alltrails_list_user_lists, or a public "list" record from alltrails_search). Items are sparse references: each carries a trailId (hydrate with alltrails_get_trail), the curator's order, and any notes — not trail details. Returns slim { trailId, type, order, notes, addedAt } entries sorted by order by default; pass view:"full" for the whole records.
| Name | Type | Req | Description |
|---|---|---|---|
| listId | string | yes | Numeric AllTrails list id |
| view | string | – | Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact returns { count, items: [{ trailId, type, order, n… |
No output schema declared.
No examples provided.
alltrails_get_profile Get AllTrails profile ~133
Get the signed-in AllTrails user profile (via /api/alltrails/me). Requires a signed-in session. Returns identity fields { id, username, slug, firstName, lastName, location, isPro } by default; pass view:"full" for the whole record (includes email and account settings).
| Name | Type | Req | Description |
|---|---|---|---|
| view | string | – | Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact returns the identity fields only; "full" returns A… |
No output schema declared.
No examples provided.
alltrails_get_trail Get AllTrails trail ~240
Get details for a single AllTrails trail by its numeric trail id. Returns name, location, length, elevation gain, difficulty, rating, route type, and (at higher detail levels) route geometry. Returns a slim projection by default (name, overview, length in m+mi, elevation gain, difficulty, rating, route type, location); pass view:"full" for the whole record and geometry.
| Name | Type | Req | Description |
|---|---|---|---|
| detail | string | – | Detail level. "medium" (default) is a good overview; "offline" includes full route geometry. |
| trailId | string | yes | Numeric AllTrails trail id (e.g. "10236086") |
| view | string | – | Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact returns { name, overview, length in m+mi, elevatio… |
No output schema declared.
No examples provided.
alltrails_get_trail_gpx Export AllTrails trail GPX ~83
Export an AllTrails trail's route as a GPX 1.1 document (track points with per-point elevation), built from the trail's offline-detail route geometry. Returns raw GPX XML suitable for saving to a .gpx file or importing into navigation apps.
| Name | Type | Req | Description |
|---|---|---|---|
| trailId | string | yes | Numeric AllTrails trail id |
No output schema declared.
No examples provided.
alltrails_get_trail_photos Get AllTrails trail photos ~180
Get photos for an AllTrails trail by its numeric trail id. Returns just { id, title, likeCount, user, uploadedAt, url } per photo by default — the url serves the actual image; pass view:"full" for the whole records.
| Name | Type | Req | Description |
|---|---|---|---|
| trailId | string | yes | Numeric AllTrails trail id |
| view | string | – | Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact returns { count, photos: [{ id, title, likeCount,… |
No output schema declared.
No examples provided.
alltrails_get_trail_reviews Get AllTrails trail reviews ~157
Get user reviews for an AllTrails trail by its numeric trail id. Returns just { user, rating, comment } per review by default; pass view:"full" for the whole records.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max reviews to return (default 20) |
| trailId | string | yes | Numeric AllTrails trail id |
| view | string | – | Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact returns { count, reviews: [{ user, rating, comment… |
No output schema declared.
No examples provided.
alltrails_get_trail_weather Get AllTrails trail weather ~43
Get the weather overview for an AllTrails trail by its numeric trail id.
| Name | Type | Req | Description |
|---|---|---|---|
| trailId | string | yes | Numeric AllTrails trail id |
No output schema declared.
No examples provided.
alltrails_healthcheck Verify the ContextMint Bridge connection end-to-end ~152
Round-trips a small public www.alltrails.com URL (/api/alltrails/v3/trails/10236086?detail=basic) through ContextMint Bridge (your signed-in browser tab) and returns diagnostics: the bridge's role (host/peer/null), port, version, the extension link (linked / pair pending / not attached / never answered), the elapsed round-trip time, and a plain-English hint distinguishing 'bridge never came up' from 'extension not connected' from 'this browser can't serve a capability' from 'real www.alltrails.com-side problem'. Read-only, no auth required. Call this when a real tool fails and you want to know which hop broke.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
alltrails_list_completed_trails List AllTrails completed trails ~158
List the trails an AllTrails user has marked completed. Defaults to the signed-in user; pass a userId to target a specific public profile. Returns slim trail summaries (name, length, elevation, difficulty, rating) by default; pass view:"full" for the whole records.
| Name | Type | Req | Description |
|---|---|---|---|
| userId | string | – | Numeric AllTrails user id. Defaults to the signed-in user. |
| view | string | – | Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact returns { count, trails: [...] } in the same slim… |
No output schema declared.
No examples provided.
alltrails_list_user_lists List AllTrails user lists ~165
List an AllTrails user's saved lists (favorites, custom lists). Defaults to the signed-in user; pass a userId to target a specific public profile. Returns slim { id, name, itemCount, visibility } entries by default (feed an id to alltrails_get_list_items); pass view:"full" for the whole records.
| Name | Type | Req | Description |
|---|---|---|---|
| userId | string | – | Numeric AllTrails user id. Defaults to the signed-in user. |
| view | string | – | Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact returns { count, lists: [{ id, name, itemCount, vi… |
No output schema declared.
No examples provided.
alltrails_resolve_location Resolve AllTrails location ~182
Resolve a place name to AllTrails location records — country / state / city / area / point of interest — with each one's kind, coordinates, URL slug, and disambiguation label. Useful for pinning down which "Oregon" (state vs the towns) or getting a place's coordinates/slug. NOTE: the returned id is an Algolia search id and is NOT the id the trail-listing tools take; to find trails for a place, feed the resolved name back into alltrails_search.
| Name | Type | Req | Description |
|---|---|---|---|
| kinds | array | – | Which place kinds to return (default: all — country, state, city, area, poi) |
| limit | integer | – | Max results to return (default 10) |
| query | string | yes | Place name to resolve, e.g. "portland oregon" or "zion" |
No output schema declared.
No examples provided.
alltrails_search Search AllTrails ~336
Search AllTrails by name. A free-text query goes to the suggestions endpoint the alltrails.com search box itself uses — relevance is good and the limit is honored. Results may mix record types (trail, poi, area, city, …); pass types=["trail"] to narrow. lat/lng are accepted for backward compatibility but verified ignored by the API (2026-07-02) — results carry an implicit account/IP geo bias instead. Without a query this falls back to the legacy explore search, which returns trails anchored to the signed-in account's location. Results come back as slim per-result summaries, capped at limit client-side, by default; pass view:"full" for AllTrails' whole records.
| Name | Type | Req | Description |
|---|---|---|---|
| lat | number | – | Deprecated — the API ignores it (verified 2026-07-02) |
| limit | integer | – | Max results to return (default 20) |
| lng | number | – | Deprecated — the API ignores it (verified 2026-07-02) |
| query | string | – | Free-text search, e.g. "angels landing" or "waterfall trails" |
| types | array | – | Record types to return (default: all). e.g. ["trail"] for trails only. Only applied when query is provided; silently ignored on the no-query legacy browse fallback. |
| view | string | – | Response shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact returns slim per-result summaries capped at limit;… |
No output schema declared.
No examples provided.
How do I install the io.github.chrischall/alltrails-mcp server?
io.github.chrischall/alltrails-mcp runs locally as an npm package, launched with npx -y alltrails-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · alltrails-mcp
claude mcp add chrischall-alltrails-mcp -- npx -y alltrails-mcp
What is the io.github.chrischall/alltrails-mcp server?
io.github.chrischall/alltrails-mcp is listed in the public MCP registry as io.github.chrischall/alltrails-mcp. Unofficial AllTrails MCP for Claude, search trails, get details, reviews, photos, saved lists. This page covers its npm package (alltrails-mcp).
Is the io.github.chrischall/alltrails-mcp server safe to use?
io.github.chrischall/alltrails-mcp scores 83 out of 100 on VerifyMCP. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.chrischall/alltrails-mcp server expose?
io.github.chrischall/alltrails-mcp exposes 13 tools: alltrails_get_trail, alltrails_get_trail_reviews, alltrails_get_trail_photos, alltrails_get_trail_gpx, alltrails_get_trail_weather, and 8 more. Their descriptions and schemas cost roughly 2,388 tokens of context every time the server is loaded.
Is the io.github.chrischall/alltrails-mcp server still maintained?
io.github.chrischall/alltrails-mcp is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.chrischall/alltrails-mcp server under?
io.github.chrischall/alltrails-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.