mountainproject
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mountainproject Search for 5.10 trad routes in Yosemite Valley"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mp-mcp
MCP server for Mountain Project — search routes and areas, run route-finder filters, and query your personal tick list live from MP.
Built for Cursor and any MCP-compatible agent.
Disclaimer
This project is not affiliated with, endorsed by, or connected to Mountain Project or onX Maps, Inc. Mountain Project is a trademark of onX Maps, Inc.
Personal use only. This tool is intended for individual climbers to access their own tick data and browse public route information — not for bulk scraping, republishing MP content, or building a competing database.
Terms of service. Users are responsible for complying with Mountain Project's terms of service. Automated access may be restricted or blocked by MP at any time.
Session security. Your
ap_sessioncookie is a login credential. Do not commit~/.mp-mcp/session.json, paste cookies into public chats, or store cookies in shared config files. The session file is written with restrictive permissions (0600), but treat it like a password.No warranty. This software is provided as-is under the MIT license. Route data accuracy remains the responsibility of Mountain Project and its community contributors.
Related MCP server: ripgrep-mcp
Features
Public route discovery — search, route/area details, route-finder filters (no auth)
Personal logbook — list, filter, and aggregate your ticks pulled live from MP
Browser login — one-time
npm run logincaptures your session automatically (no CSV export, no DevTools)Polite by default — rate limiting between requests
Quick start (humans)
1. Install
git clone https://github.com/defevan/mp-mcp.git
cd mp-mcp
npm install
npm run build
npx playwright install chromium # first time only, for login2. Log in to Mountain Project
npm run loginA browser opens to Mountain Project. Sign in normally — the script detects when you're logged in and saves ~/.mp-mcp/session.json. The login tab will not reload while you sign in.
Re-run when the session expires (~30 days).
3. Add to Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"mountainproject": {
"command": "node",
"args": ["/absolute/path/to/mp-mcp/dist/server.js"]
}
}
}Restart Cursor or reload MCP servers.
4. Try it
Ask in chat:
"Search trad 5.10 routes in Yosemite Valley"
"Get beta on The Nose"
"List my ticks from 2024"
"How many days out did I have this summer?"
For agents
This section is for LLM agents using the MCP tools directly.
Server
Name:
mountainprojectTransport: stdio
Entry:
node dist/server.js(runnpm run buildfirst)
Auth model
Priority | Source | Notes |
1 | In-memory session | Set via |
2 |
| Written by |
3 | Env vars |
|
Tick tools call GET /user/{id}/{username}/tick-export with the session cookie. Ticks are parsed in memory and cached (default 15 min). Never ask the user to export a CSV manually.
If auth fails, tell the user to run npm run login in the project directory or use mp_set_session.
Tool reference
Public (no auth)
Tool | Args | Returns |
|
| Matching routes/areas with id, grade, stars, url, lat/lng |
|
| Full route detail: beta, protection, FA, parent area |
|
| Area description, access notes, route counts |
|
| Filtered routes from route-finder (CSV export, max 1000) |
|
| Parse numeric ID from MP URL or |
Authenticated
Tool | Args | Returns |
| — |
|
|
| Update session at runtime |
| — | Force-refresh tick list from MP |
|
| Filtered ticks (auto-fetches if cache stale) |
|
| Aggregated counts |
Agent workflow examples
Trip planning (no auth):
mp_search → mp_resolve_id → mp_find_routes / mp_get_routeLogbook analysis (auth required):
mp_auth_status → mp_list_ticks / mp_tick_statsArea deep-dive:
mp_search(query, types=["areas"]) → mp_get_area → mp_find_routes(areaId, gradeMin, gradeMax)Grade filters for mp_find_routes
Use YDS strings: 5.8, 5.10a, 5.11d, etc. The server maps these to MP's internal route-finder rank codes.
Rate limiting
Default 500 ms between MP requests (MP_RATE_LIMIT_MS). Prefer fewer, broader tool calls over many narrow ones.
Data source notes
Public data: MP
/api/v2/*and/route-finder-exportTicks: authenticated
/user/{id}/{username}/tick-exportMP's official Data API is deprecated; this server uses the same endpoints the website uses
Respect MP's terms of service; this tool is for personal use
Environment variables
Variable | Default | Description |
|
| Session storage path |
|
| Tick cache TTL (15 min) |
|
| Delay between MP requests |
|
| HTTP User-Agent |
| — | Fallback session cookie |
| — | Fallback user ID |
| — | Optional CSRF cookie |
| — | Optional username slug |
Development
npm run build # compile TypeScript → dist/
npm run dev # run server via tsx (stdio)
npm run login # browser auth flowSmoke test:
node -e "import('./dist/mp-client.js').then(m => m.getRoute(105924807).then(console.log))"Session refresh
When tools return auth errors:
npm run loginOr call mp_set_session with a fresh ap_session cookie value.
License
MIT — Copyright (c) 2026 Evan Jones. See LICENSE.
Available Tools
10 toolsmp_auth_statusB
Check whether the Mountain Project session is valid and return user info.
Inputs: no named parameters.
mp_fetch_ticksB
Force-refresh your personal tick list from Mountain Project.
Inputs: no named parameters.
mp_find_routesB
Find routes in an area using Mountain Project route finder filters.
Inputs: areaId (required), sort, type, limit, +4 more.
mp_get_areaA
Get detailed information about a climbing area by numeric ID.
Inputs: areaId (required).
mp_get_routeA
Get detailed information about a climbing route by numeric ID.
Inputs: routeId (required).
mp_list_ticksB
List your personal ticks, auto-fetching from MP if cache is empty or stale.
Inputs: year, limit, style, gradeMax, +2 more.
mp_resolve_idA
Extract a numeric route or area ID from a Mountain Project URL or prefixed ID.
Inputs: urlOrId (required).
mp_searchA
Search Mountain Project for routes and/or areas by name or keyword.
Inputs: query (required), limit, types.
mp_set_sessionB
Set or refresh the Mountain Project session cookie at runtime.
Inputs: apSession (required), userId, persist, username, +1 more.
mp_tick_statsC
Aggregate statistics over your personal tick list.
Inputs: groupBy (required), yearTo, yearFrom.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Most tools are clearly distinguished by resource and action (search, get_route, get_area, find_routes, resolve_id, tick operations). Minor overlap exists between mp_search and mp_find_routes (both find routes, though in different contexts) and between mp_fetch_ticks and mp_list_ticks (list auto-fetches, fetch forces refresh), but descriptions clarify the boundaries.
All tools share the mp_ prefix and most follow verb_noun structure (mp_search, mp_get_route, mp_set_session, mp_fetch_ticks, mp_list_ticks). Two names deviate: mp_auth_status (noun phrase) and mp_tick_stats (noun phrase), which break the pattern slightly but remain predictable and readable.
Ten tools is well-scoped for a climbing data and personal tick-list server. Each tool covers a distinct aspect of the domain—searching, retrieving, resolving IDs, session management, and tick lifecycle—without unnecessary redundancy or bloat.
The tool surface covers the core read-only workflows for Mountain Project: searching and fetching routes/areas, resolving URLs to IDs, and managing personal tick data (auth, session, refresh, list, stats). No obvious dead ends; the main missing operations like creating/deleting ticks or routes are external to the API's likely scope.
Maintenance
Related MCP Connectors
Plan your hike. Get your developer token at https://Infoseek.ai/mcp
Live US campground availability, wildfire and river conditions, and trails on public land.
Search your Glasp web and Kindle highlights, notes, and AI memories from any MCP client. Read-only.
Campground search, live availability, weather, safety, and gear for 10,000+ US campgrounds.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides ripgrep search capabilities to MCP clients like Claude, allowing high-performance text searches across files on your system.5904 npm79MIT
- AlicenseAqualityDmaintenanceProvides ripgrep search capabilities to MCP clients like Claude, enabling high-performance text searches across files on your system.515 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables querying Jira issues using JQL and creating new issues programmatically via natural language.876 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables full-text search over personal notes, note and tag management, and live weather lookups through MCP tools, resources, and prompts, usable from clients like Claude Desktop or a custom agent loop.-