Skip to main content
Glama
acorn025

Parking Information MCP Server

by acorn025
test_final_comparison.py8.81 kB
""" 최종 통합 테스트 - 서울 vs 경기 비교 """ import sys import os sys.path.insert(0, 'src') from dotenv import load_dotenv load_dotenv() def test_seoul_hoegi(): """서울 회기로 테스트""" print("=" * 70) print("서울 회기로 주차장 검색 테스트") print("=" * 70) test_address = "서울시 동대문구 회기로" search_radius = 1000 try: from api_clients import KakaoLocalClient from src.server import ( _parse_kakao_parking_response, _get_region, _get_realtime_info_seoul, _format_parking_info ) # 좌표 변환 kakao_client = KakaoLocalClient() coord_response = kakao_client.address_to_coordinates(test_address) if coord_response.get("status") != "success": print(f"[X] 좌표 변환 실패") return lat = float(coord_response.get("data", {}).get("documents", [])[0].get('y')) lng = float(coord_response.get("data", {}).get("documents", [])[0].get('x')) # 주차장 검색 parking_response = kakao_client.search_parking_nearby( latitude=lat, longitude=lng, radius=search_radius, size=10 ) parking_data = parking_response.get("data", {}) parking_list = _parse_kakao_parking_response(parking_data) print(f"\n[검색 결과] {len(parking_list)}개 주차장 발견") print("-" * 70) # 서울 지역 주차장에 정보 추가 seoul_parkings = [p for p in parking_list if _get_region(p.get("address", "") or p.get("road_address", "")) == "seoul"] for i, parking in enumerate(seoul_parkings[:3], 1): address = parking.get("address", "") or parking.get("road_address", "") realtime_info = _get_realtime_info_seoul(parking.get("name", ""), address) standard_parking = { "name": parking.get("name", ""), "address": address, "total_spots": None, "fee": parking.get("category", ""), "distance": parking.get("distance", 0), } formatted = _format_parking_info(standard_parking, "seoul", realtime_info) print(f"\n--- 주차장 {i}: {formatted.get('name')} ---") print(f"주소: {formatted.get('address')}") if formatted.get('available_spots') is not None: print(f"[실시간 정보]") print(f" 총 주차 대수: {formatted.get('total_spots')}") print(f" 주차 가능 대수: {formatted.get('available_spots')}") print(f" 업데이트 시간: {formatted.get('update_time', 'N/A')}") if formatted.get('operating_info'): op_info = formatted.get('operating_info') print(f"[운영 정보]") print(f" 운영 구분: {op_info.get('operating_type', 'N/A')}") print(f" 평일: {op_info.get('weekday_start', 'N/A')} ~ {op_info.get('weekday_end', 'N/A')}") print(f" 주말: {op_info.get('weekend_start', 'N/A')} ~ {op_info.get('weekend_end', 'N/A')}") if formatted.get('fee_info'): fee_info = formatted.get('fee_info') print(f"[요금 정보]") print(f" 유료 여부: {fee_info.get('is_paid', 'N/A')}") print(f" 기본 요금: {fee_info.get('basic_fee', 0)}원 / {fee_info.get('basic_hours', 0)}분") print(f" 추가 요금: {fee_info.get('additional_fee', 0)}원 / {fee_info.get('additional_hours', 0)}분") print(f" 일일 최대: {fee_info.get('daily_max_fee', 0)}원") print("\n" + "=" * 70) except Exception as e: print(f"\n[X] 오류: {str(e)}") import traceback traceback.print_exc() def test_gyeonggi_suwon(): """경기 수원 테스트""" print("\n" + "=" * 70) print("경기 수원 주차장 검색 테스트") print("=" * 70) test_address = "경기도 수원시 팔달구 정조로" search_radius = 1000 try: from api_clients import KakaoLocalClient from src.server import ( _parse_kakao_parking_response, _get_region, _get_realtime_info_gyeonggi, _format_parking_info ) # 좌표 변환 kakao_client = KakaoLocalClient() coord_response = kakao_client.address_to_coordinates(test_address) if coord_response.get("status") != "success": print(f"[X] 좌표 변환 실패") return lat = float(coord_response.get("data", {}).get("documents", [])[0].get('y')) lng = float(coord_response.get("data", {}).get("documents", [])[0].get('x')) # 주차장 검색 parking_response = kakao_client.search_parking_nearby( latitude=lat, longitude=lng, radius=search_radius, size=10 ) parking_data = parking_response.get("data", {}) parking_list = _parse_kakao_parking_response(parking_data) print(f"\n[검색 결과] {len(parking_list)}개 주차장 발견") print("-" * 70) # 경기 지역 주차장에 정보 추가 gyeonggi_parkings = [p for p in parking_list if _get_region(p.get("address", "") or p.get("road_address", "")) == "gyeonggi"] for i, parking in enumerate(gyeonggi_parkings[:3], 1): address = parking.get("address", "") or parking.get("road_address", "") realtime_info = _get_realtime_info_gyeonggi(parking.get("name", ""), address) standard_parking = { "name": parking.get("name", ""), "address": address, "total_spots": None, "fee": parking.get("category", ""), "distance": parking.get("distance", 0), } formatted = _format_parking_info(standard_parking, "gyeonggi", realtime_info) print(f"\n--- 주차장 {i}: {formatted.get('name')} ---") print(f"주소: {formatted.get('address')}") if formatted.get('total_spots'): print(f"[주차장 정보]") print(f" 총 주차 대수: {formatted.get('total_spots')}") if formatted.get('operating_info'): op_info = formatted.get('operating_info') print(f"[운영 정보]") print(f" 평일: {op_info.get('weekday_start', 'N/A')} ~ {op_info.get('weekday_end', 'N/A')}") print(f" 토요일: {op_info.get('saturday_start', 'N/A')} ~ {op_info.get('saturday_end', 'N/A')}") print(f" 공휴일: {op_info.get('holiday_start', 'N/A')} ~ {op_info.get('holiday_end', 'N/A')}") if formatted.get('fee_info'): fee_info = formatted.get('fee_info') print(f"[요금 정보]") print(f" 유료 여부: {fee_info.get('is_paid', 'N/A')}") print(f" 기본 요금: {fee_info.get('basic_fee', 0)}원 / {fee_info.get('basic_time', 0)}분") print(f" 추가 요금: {fee_info.get('additional_fee', 0)}원 / {fee_info.get('additional_time', 0)}분") print(f" 결제 방법: {fee_info.get('payment_method', 'N/A')}") print("\n" + "=" * 70) except Exception as e: print(f"\n[X] 오류: {str(e)}") import traceback traceback.print_exc() def compare_results(): """결과 비교""" print("\n" + "=" * 70) print("서울 vs 경기 비교 요약") print("=" * 70) print("\n[서울 지역]") print(" [OK] 실시간 주차 대수 (available_spots)") print(" [OK] 총 주차 대수 (total_spots)") print(" [OK] 운영 정보 (operating_info)") print(" [OK] 요금 정보 (fee_info)") print(" [OK] 업데이트 시간 (update_time)") print("\n[경기 지역]") print(" [X] 실시간 주차 대수 (API에 없음)") print(" [OK] 총 주차 대수 (total_spots)") print(" [OK] 운영 정보 (operating_info)") print(" [OK] 요금 정보 (fee_info)") print("\n[기타 지역]") print(" [X] 실시간 정보 없음") print(" [OK] 기본 주차장 정보만 제공") print("\n" + "=" * 70) if __name__ == "__main__": test_seoul_hoegi() test_gyeonggi_suwon() compare_results()

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/acorn025/parking-mcp2'

If you have feedback or need assistance with the MCP directory API, please join our Discord server