A Model Context Protocol (MCP) server that provides access to AllTrails data, allowing you to search for hiking trails and get detailed trail information directly through Claude Desktop.
- 🥾 Search trails by national park
- 📍 Get detailed trail information including difficulty, length, elevation gain, and descriptions
- 🏔️ Comprehensive trail data from AllTrails including ratings, route types, and summaries
- 🤖 Seamless Client integration via MCP protocol
- Protocol Version: MCP 1.9.4
- Communication: Standard input/output (stdio)
- Capabilities: Tools
- Server Name: alltrails-mcp
- Server Version: 0.1.0
Search for trails in a specific national park using AllTrails data.
Parameters:
park
(required): Park slug in formatus/state/park-name
(e.g.,us/tennessee/great-smoky-mountains-national-park
)
Get detailed information about a specific trail by its AllTrails slug.
Parameters:
slug
(required): Trail slug from AllTrails URL (the part after/trail/
)
This approach isolates dependencies and prevents conflicts with other Python projects.
git clone <your-repo-url>
cd alltrails_mcp
python3 -m venv alltrails_mcp_venv
source alltrails_mcp_venv/bin/activate # On Windows: alltrails_mcp_venv\Scripts\activate
pip install -r requirements.txt
Test that the server starts without errors:
python3 server.py
You should see the server start without crashing. Press Ctrl+C to stop.
- Python 3.8 or higher
- This server can be used with any MCP-compatible client. I use Claude Desktop with Pro subscription.
- macOS (tested) or other Unix-like system
If you prefer not to use a virtual environment, you can install dependencies globally.
git clone <your-repo-url>
cd alltrails_mcp
pip install -r requirements.txt
Test that the server starts without errors:
python3 server.py
You should see the server start without crashing. Press Ctrl+C to stop.
Find your Claude Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
If it doesn't exist, create a json file named claude_desktop_config.json in the above directory.
Add the following to your claude_desktop_config.json
file:
{
"mcpServers": {
"alltrails_mcp_server": {
"command": "/path/to/your/alltrails_mcp/alltrails_mcp_venv/bin/python3",
"args": ["/path/to/your/alltrails_mcp/server.py"]
}
}
}
{
"mcpServers": {
"alltrails_mcp_server": {
"command": "python3",
"args": ["/path/to/your/alltrails_mcp/server.py"]
}
}
}
Or with absolute Python path:
{
"mcpServers": {
"alltrails_mcp_server": {
"command": "/usr/bin/python3",
"args": ["/path/to/your/alltrails_mcp/server.py"]
}
}
}
Important: Replace /path/to/your/alltrails_mcp
with the actual absolute path to your project directory.
For other MCP-compatible clients, refer to their documentation for server configuration. The server implements the standard MCP protocol and should work with any compliant client.
Server Command: python3 server.py
Communication: Standard input/output (stdio)
Protocol Version: MCP 1.9.4
cd /path/to/your/alltrails_mcp
source alltrails_mcp_venv/bin/activate
which python3
which python3
Use the output path in your configuration.
Dependencies are already installed in your virtual environment from step 3.
Install dependencies globally:
pip install -r requirements.txt
Completely quit and restart Claude Desktop for the changes to take effect.
Once configured, you can use these commands in Claude Desktop:
By park name:
Find trails in Great Smoky Mountains National Park
By location:
What are the best hiking trails in Yosemite?
With specific criteria:
Show me moderate difficulty trails in Yellowstone
Using park slugs directly:
Search for trails in us/california/yosemite-national-park
For specific activities:
Find family-friendly trails in Zion National Park
By trail name:
Get details for Alum Cave Trail to Mount LeConte
Using trail slugs:
Get details for trail us/tennessee/alum-cave-trail-to-mount-leconte
For planning purposes:
I need detailed information about Rainbow Falls Trail including difficulty and elevation
Search and get details:
Find the most popular trails in Grand Canyon National Park and give me details about the top rated one
Compare trails:
Search for trails in Great Smoky Mountains and tell me which ones are best for beginners
Trip planning:
I'm visiting Yellowstone for 3 days. Find me a mix of easy and moderate trails with good views
The MCP server works with natural language, so you can ask questions like:
- "What are some good day hikes in the Smoky Mountains?"
- "Find me a challenging trail with waterfalls in Tennessee"
- "I want to hike to a summit with 360-degree views"
- "Show me trails that are good for photography"
- "Find dog-friendly trails in national parks"
- "What's the difficulty level of Charlies Bunion trail?"
- Great Smoky Mountains:
us/tennessee/great-smoky-mountains-national-park
- Yosemite:
us/california/yosemite-national-park
- Yellowstone:
us/wyoming/yellowstone-national-park
- Grand Canyon:
us/arizona/grand-canyon-national-park
- Zion:
us/utah/zion-national-park
-
Check the logs:
tail -f ~/Library/Logs/Claude/mcp.log
-
Verify your config file:
cat ~/Library/Application\ Support/Claude/claude_desktop_config.json
-
Test the server manually:
cd /path/to/your/alltrails_mcp source alltrails_mcp_venv/bin/activate python3 server.py
- "Connection closed" errors: Usually indicates a Python path or virtual environment issue
- Import errors: Ensure all dependencies are installed in the correct Python environment (virtual environment vs system Python)
- Python path errors: Use
which python3
orwhich python
to verify the correct Python executable path
For detailed debugging, check the MCP logs:
# macOS
tail -f ~/Library/Logs/Claude/mcp.log
# The server also outputs debug information to stderr
alltrails_mcp/
├── app/
│ └── alltrails_scraper.py # AllTrails scraping logic
├── examples/
│ └── claude_desktop_config.json # Example configuration file for Claude Desktop
├── server.py # MCP server implementation
├── requirements.txt # Python dependencies
├── alltrails_mcp_venv/ # Virtual environment
└── README.md # This file
└── .gitignore # Git ignore file
- MCP Protocol: Uses the Model Context Protocol to communicate with Claude Desktop
- Web Scraping: Scrapes AllTrails website for trail data using BeautifulSoup
- Data Processing: Formats and returns trail information in a structured format
- Tool Integration: Exposes tools that Claude can call to search and retrieve trail data
MIT License
Copyright (c) 2025 Srinath Srinivasan
- Built using the Model Context Protocol
- Trail data sourced from AllTrails
- Inspired by the MCP community examples
Note: This tool scrapes publicly available data from AllTrails. Please use responsibly and in accordance with AllTrails' terms of service.