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일 2:56 AM
변경됨
search_gear
2026년 9월 29일 2:56 AM
변경됨
search_campgrounds
2026년 9월 29일 2:56 AM
변경됨
prepare_reservation
2026년 9월 29일 2:56 AM
변경됨
get_gear_for_campground
2026년 9월 29일 2:56 AM
변경됨
get_campground_details
2026년 9월 29일 2:56 AM
변경됨
find_similar_campgrounds
2026년 9월 29일 2:56 AM
변경됨
get_weather
2026년 9월 29일 2:56 AM
변경됨
compare_gear
2026년 9월 29일 2:56 AM
변경됨
check_safety
2026년 9월 29일 2:56 AM
변경됨
check_availability
2026년 9월 29일 2:56 AM
변경됨
calculate_drive_times
2026년 9월 29일 2:56 AM
변경됨
build_packing_list
2026년 9월 29일 2:56 AM
추가됨
health_check
2026년 9월 17일 12:45 PM
추가됨
search_gear
2026년 9월 17일 12:45 PM
추가됨
search_campgrounds
2026년 9월 17일 12:45 PM
추가됨
prepare_reservation
2026년 9월 17일 12:45 PM
추가됨
get_gear_for_campground
2026년 9월 17일 12:45 PM
추가됨
get_campground_details
2026년 9월 17일 12:45 PM
추가됨
find_similar_campgrounds
2026년 9월 17일 12:45 PM
추가됨
get_weather
2026년 9월 17일 12:45 PM
추가됨
compare_gear
2026년 9월 17일 12:45 PM
추가됨
check_safety
2026년 9월 17일 12:45 PM
추가됨
check_availability
2026년 9월 17일 12:45 PM
추가됨
calculate_drive_times
2026년 9월 17일 12:45 PM
추가됨
build_packing_list
2026년 9월 17일 12:45 PM