MCP 服务器

outdoorithm

io.github.outdoorithm/outdoorithm
地图与位置 旅行与酒店 公开且可连接 MCP 2025-11-25

此 MCP 可以做什么

Discovers campgrounds, checks availability and safety, provides weather and route planning, recommends gear, and prepares booking handoffs.

build_packing_list
Build Packing List
Generate a context-aware packing checklist for a camping trip. Returns categorized items from the gear catalog, adjusted for campground amenities, activities, weather, and group size.
只读
输入模式
{'type': 'object', 'properties': {'adults': {'type': 'integer', 'default': 2, 'description': 'Number of adults (default 2)'}, 'nights': {'type': 'integer', 'default': 2, 'description': 'Number of nights (default 2)'}, 'season': {'anyOf': [{'enum': ['spring', 'summer', 'fall', 'winter'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'spring, summer, fall, or winter (optional)'}, 'children': {'type': 'integer', 'default': 0, 'description': 'Number of children (default 0)'}, 'has_pets': {'type': 'boolean', 'default': False, 'description': 'Whether bringing pets (default false)'}, 'trip_type': {'enum': ['car_camping', 'backpacking', 'rv', 'glamping'], 'type': 'string', 'default': 'car_camping', 'description': 'car_camping, backpacking, rv, or glamping (default car_camping)'}, 'activities': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': None, 'description': 'Planned activities (hiking, fishing, swimming, kayaking, biking, beach)'}, 'campground_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Optional CUID to personalize based on campground amenities'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
calculate_drive_times
Calculate Drive Times
Calculate realistic drive times from an origin to multiple campgrounds using Mapbox routing with live traffic. Uses the Mapbox Matrix API for traffic-aware routing. Maximum 9 destinations per request.
只读 可访问外部资源
输入模式
{'type': 'object', 'required': ['origin_latitude', 'origin_longitude', 'destinations'], 'properties': {'destinations': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'List of {campground_id: str, latitude: float, longitude: float} (max 9)'}, 'origin_latitude': {'type': 'number', 'description': 'Latitude of starting location'}, 'origin_longitude': {'type': 'number', 'description': 'Longitude of starting location'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
check_availability
Check Availability
Check real-time campground availability for specific dates. Queries the camply-service to check live campsite availability against reservation systems. Supports 30+ providers including RecreationDotGov, ReserveCalifornia, state parks, and county parks.
只读 可访问外部资源
输入模式
{'type': 'object', 'required': ['campground_id', 'start_date', 'end_date'], 'properties': {'end_date': {'type': 'string', 'description': 'Check-out date in YYYY-MM-DD format'}, 'min_nights': {'type': 'integer', 'default': 1, 'description': 'Minimum consecutive nights required (1-7, default 1)'}, 'start_date': {'type': 'string', 'description': 'Check-in date in YYYY-MM-DD format'}, 'campground_id': {'type': 'string', 'description': 'Campground CUID (e.g., "ReserveCalifornia:uuid:725")'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
check_safety
Check Safety
Check campgrounds for safety issues, community atmosphere, and active alerts. Checks: - Greenbook community safety (vibe scores, discrimination reports, flag status) - Active campground alerts (closures, restrictions) from enriched data - Red flag detection (prevents recommending unsafe campgrounds)
只读
输入模式
{'type': 'object', 'required': ['campground_ids'], 'properties': {'campground_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'List of campground CUIDs to check'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
compare_gear
Compare Gear
Compare 2-3 gear items side-by-side with specs, pros/cons, verdicts, and comparison summary. Supports lookup by unique_id with slug fallback.
只读
输入模式
{'type': 'object', 'required': ['gear_ids'], 'properties': {'gear_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'List of 2-3 gear item identifiers (unique_id or slug)'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
find_similar_campgrounds
Find Similar Campgrounds
Find campgrounds similar to a given campground using vector embedding similarity. Uses pre-computed embeddings combining review text (semantic) and structured attributes (amenities, terrain, activities) for nuanced similarity matching.
只读
输入模式
{'type': 'object', 'required': ['campground_id'], 'properties': {'result_limit': {'type': 'integer', 'default': 20, 'description': 'Number of results (1-50, default 20)'}, 'campground_id': {'type': 'string', 'description': 'CUID of the target campground to find similar ones for'}, 'max_distance_km': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Optional max distance in km (omit for nationwide search)'}, 'semantic_weight': {'type': 'number', 'default': 0.6, 'description': 'Weight for text/review similarity (0-1, default 0.6)'}, 'structured_weight': {'type': 'number', 'default': 0.4, 'description': 'Weight for attribute similarity (0-1, default 0.4)'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
get_campground_details
Get Campground Details
Get comprehensive details for a specific campground including amenities, reviews, safety, and seasonal ratings. Returns ~80 curated fields (not the raw 214-column dump) including: - Identity, location, fees, site info - All amenity and activity booleans + descriptions - Review summaries, best campsites, common complaints, tips - Greenbook community safety (vibe score, flag status) - Seasonal LLM ratings (spring/summer/fall/winter) - Sentiment trend direction - Hero image with credits Data coverage: a missing or empty field means the attribute isn't in our records, not that the feature is absent at the campground. Coverage varies by provider; the campground operator is the authoritative source.
只读
输入模式
{'type': 'object', 'required': ['campground_id'], 'properties': {'campground_id': {'type': 'string', 'description': 'Unique campground identifier (CUID format, e.g., "RecreationDotGov:232447:1074")'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
get_gear_for_campground
Get Gear for Campground
Get personalized gear recommendations for a specific campground. Returns pre-computed recommendations across slot types: essential (must-have), activity (activity-matched), comfort (nice-to-have), amenity_gap (compensates for missing amenities). Each includes product details and purchase links.
只读
输入模式
{'type': 'object', 'required': ['campground_id'], 'properties': {'slot_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Optional filter â\x80\x94 one of essential/activity/comfort/amenity_gap'}, 'campground_id': {'type': 'string', 'description': 'Campground CUID'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
get_weather
Get Weather
Get camping-specific 7-day weather forecast with suitability ratings and gear recommendations. Uses Open-Meteo's commercial API to provide: - Daily high/low temps, conditions, precipitation, wind - Camping suitability rating per day (excellent/good/fair/poor/not_recommended) - Gear recommendations based on conditions - Safety warnings for extreme weather - Best camping days in the forecast period Forecast data is from Open-Meteo, licensed under CC BY 4.0. Every successful forecast includes an `attribution` field carrying the required credit.
只读 可访问外部资源
输入模式
{'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'number', 'description': 'Campground latitude'}, 'longitude': {'type': 'number', 'description': 'Campground longitude'}, 'check_in_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Planned check-in date ISO format (optional)'}, 'check_out_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Planned check-out date ISO format (optional)'}, 'campground_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Campground name for context (optional)'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
health_check
Health Check
Check server health and connectivity. Returns: Dictionary with health status including: - status: "healthy" or "unhealthy" - version: Server version - environment: Current environment (dev/staging/prod)
只读
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
prepare_reservation
Prepare Reservation
Prepare a one-tap booking handoff for the user's chosen campground/dates. Returns a pre-filled deep link to the operator's reservation page plus the booking-window context (release date/time, operator rules, alert suggestion). Does NOT book on behalf: third-party booking is prohibited by Recreation.gov, ReserveCalifornia, ReserveAmerica, and every other supported public-land operator.
只读
输入模式
{'type': 'object', 'required': ['campground_id', 'start_date', 'end_date'], 'properties': {'end_date': {'type': 'string', 'description': 'Check-out date (YYYY-MM-DD).'}, 'party_size': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "Optional group size. Surfaced in the user-facing summary;\nmost operators don't accept this in URL params, so it isn't\nembedded in the deep link."}, 'start_date': {'type': 'string', 'description': 'Check-in date (YYYY-MM-DD).'}, 'campground_id': {'type': 'string', 'description': 'Outdoorithm CUID (e.g. ``RecreationDotGov:232447``).'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
search_campgrounds
Search Campgrounds
Search for campgrounds with 40+ filters including location, amenities, activities, and community safety. Requires at least one location constraint: near_location, campground_name, latitude+longitude, or states.
只读 可访问外部资源
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 20, 'description': 'Maximum results (1-50, default 20)'}, 'states': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': None, 'description': 'US state codes to filter by (e.g., ["CA", "OR"])'}, 'latitude': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Latitude coordinate'}, 'longitude': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Longitude coordinate'}, 'allows_pets': {'type': 'boolean', 'default': False, 'description': 'Only show pet-friendly campgrounds'}, 'camping_type': {'anyOf': [{'enum': ['tent', 'rv', 'primitive', 'group', 'cabin', 'glamping'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Camping type (tent/rv/primitive/group/cabin/glamping)'}, 'near_location': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'City, park, address, or landmark (e.g., "Oakland, CA", "Yosemite")'}, 'prefers_beach': {'type': 'boolean', 'default': False, 'description': 'Prefer beach settings'}, 'prefers_quiet': {'type': 'boolean', 'default': False, 'description': 'Prefer quiet campgrounds'}, 'prefers_desert': {'type': 'boolean', 'default': False, 'description': 'Prefer desert settings'}, 'prefers_forest': {'type': 'boolean', 'default': False, 'description': 'Prefer forested settings'}, 'prefers_hiking': {'type': 'boolean', 'default': False, 'description': 'Prefer hiking trails'}, 'campground_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Name, or the start of the name, of a specific campground\n(e.g., "Jumbo Rocks", "Upper Pines"). Matching campgrounds are returned\nfirst; with no other location given, the search centers on the best match.'}, 'prefers_boating': {'type': 'boolean', 'default': False, 'description': 'Prefer boating access'}, 'prefers_fishing': {'type': 'boolean', 'default': False, 'description': 'Prefer fishing access'}, 'prefers_privacy': {'type': 'boolean', 'default': False, 'description': 'Prefer private campsites'}, 'min_review_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Minimum number of reviews'}, 'preferred_season': {'anyOf': [{'enum': ['spring', 'summer', 'fall', 'winter'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Preferred season (summer/fall/winter/spring)'}, 'prefers_kayaking': {'type': 'boolean', 'default': False, 'description': 'Prefer kayaking access'}, 'prefers_mountain': {'type': 'boolean', 'default': False, 'description': 'Prefer mountain settings'}, 'prefers_secluded': {'type': 'boolean', 'default': False, 'description': 'Prefer secluded/private campgrounds'}, 'prefers_swimming': {'type': 'boolean', 'default': False, 'description': 'Prefer swimming areas'}, 'requires_showers': {'type': 'boolean', 'default': False, 'description': 'Require shower facilities'}, 'min_avg_sentiment': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Minimum average sentiment (0-5)'}, 'preferred_carrier': {'anyOf': [{'enum': ['verizon', 'att', 'tmobile'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Preferred carrier (verizon/att/tmobile)'}, 'prefers_adventure': {'type': 'boolean', 'default': False, 'description': 'Prefer adventure-oriented campgrounds'}, 'prefers_lakefront': {'type': 'boolean', 'default': False, 'description': 'Prefer lakefront locations'}, 'max_distance_miles': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Maximum distance from location in miles'}, 'min_seasonal_score': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Minimum seasonal score (1-5)'}, 'prefers_oceanfront': {'type': 'boolean', 'default': False, 'description': 'Prefer ocean/beach locations'}, 'prefers_relaxation': {'type': 'boolean', 'default': False, 'description': 'Prefer relaxation-focused campgrounds'}, 'prefers_riverfront': {'type': 'boolean', 'default': False, 'description': 'Prefer riverside locations'}, 'prefers_stargazing': {'type': 'boolean', 'default': False, 'description': 'Prefer dark sky areas'}, 'sentiment_trending': {'anyOf': [{'enum': ['improving', 'stable', 'declining'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Filter by trend (improving/stable/declining)'}, 'max_price_per_night': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Maximum price filter'}, 'min_price_per_night': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Minimum price filter'}, 'requires_dump_station': {'type': 'boolean', 'default': False, 'description': 'Require RV dump station'}, 'require_greenbook_safe': {'type': 'boolean', 'default': False, 'description': 'Only show campgrounds with OK safety status'}, 'requires_accessibility': {'type': 'boolean', 'default': False, 'description': 'Require wheelchair/ADA accessible features'}, 'requires_cell_coverage': {'type': 'boolean', 'default': False, 'description': 'Require cell phone coverage'}, 'requires_flush_toilets': {'type': 'boolean', 'default': False, 'description': 'Require flush toilets'}, 'requires_potable_water': {'type': 'boolean', 'default': False, 'description': 'Require potable water'}, 'requires_water_hookups': {'type': 'boolean', 'default': False, 'description': 'Require water hookups'}, 'min_cell_coverage_score': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Minimum cell coverage score (1-5)'}, 'prefers_family_friendly': {'type': 'boolean', 'default': False, 'description': 'Prefer family-friendly campgrounds'}, 'min_greenbook_vibe_score': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Minimum community vibe score (0-100)'}, 'only_improving_sentiment': {'type': 'boolean', 'default': False, 'description': 'Only show campgrounds with improving reviews'}, 'no_discrimination_reports': {'type': 'boolean', 'default': False, 'description': 'Exclude campgrounds with discrimination reports'}, 'requires_electric_hookups': {'type': 'boolean', 'default': False, 'description': 'Require electric hookups'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
search_gear
Search Gear
Search the Outdoorithm gear catalog by keyword, category, price range, kit, necessity, or recommendation tier. Returns matching products with prices, verdicts, and purchase links.
只读
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 10, 'description': 'Max results (1-20, default 10)'}, 'query': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Text search across product name, manufacturer, keywords, and description'}, 'kit_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Filter by kit (e.g., Basics, Camp Kitchen, Hiking, Cold Weather)'}, 'max_price': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Maximum price in USD'}, 'min_price': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Minimum price in USD'}, 'necessity': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Filter by level â\x80\x94 Essential, Helpful, or Optional'}, 'category_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Filter by category (e.g., Shelter, Sleeping Gear, Furniture, Electronics)'}, 'recommendation_tier': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Filter by tier â\x80\x94 Our Pick, Value Pick, or Comfort Pick'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'additionalProperties': True}
已更改
health_check
2026年9月29日 02:56
已更改
search_gear
2026年9月29日 02:56
已更改
search_campgrounds
2026年9月29日 02:56
已更改
prepare_reservation
2026年9月29日 02:56
已更改
get_gear_for_campground
2026年9月29日 02:56
已更改
get_campground_details
2026年9月29日 02:56
已更改
find_similar_campgrounds
2026年9月29日 02:56
已更改
get_weather
2026年9月29日 02:56
已更改
compare_gear
2026年9月29日 02:56
已更改
check_safety
2026年9月29日 02:56
已更改
check_availability
2026年9月29日 02:56
已更改
calculate_drive_times
2026年9月29日 02:56
已更改
build_packing_list
2026年9月29日 02:56
已添加
health_check
2026年9月17日 12:45
已添加
search_gear
2026年9月17日 12:45
已添加
search_campgrounds
2026年9月17日 12:45
已添加
prepare_reservation
2026年9月17日 12:45
已添加
get_gear_for_campground
2026年9月17日 12:45
已添加
get_campground_details
2026年9月17日 12:45
已添加
find_similar_campgrounds
2026年9月17日 12:45
已添加
get_weather
2026年9月17日 12:45
已添加
compare_gear
2026年9月17日 12:45
已添加
check_safety
2026年9月17日 12:45
已添加
check_availability
2026年9月17日 12:45
已添加
calculate_drive_times
2026年9月17日 12:45
已添加
build_packing_list
2026年9月17日 12:45