Skip to main content
Glama
acorn025

Parking Information MCP Server

by acorn025
test_with_real_names.py8.32 kB
""" 실제 서울/경기 API 주차장명으로 테스트 """ import sys import os sys.path.insert(0, 'src') from dotenv import load_dotenv load_dotenv() def test_seoul_with_real_name(): """서울 API에서 실제 주차장명 가져와서 테스트""" print("=" * 80) print("서울 지역 테스트 (실제 주차장명 사용)") print("=" * 80) try: from api_clients import SeoulDataClient, KakaoLocalClient from src.server import _get_realtime_info_seoul, _format_parking_info # 서울 API에서 실제 주차장명 가져오기 seoul_client = SeoulDataClient() seoul_response = seoul_client.get_realtime_parking_info(1, 10) if seoul_response.get("status") != "success": print("[X] 서울 API 호출 실패") return seoul_data = seoul_response.get("data", {}) seoul_parkings = seoul_data.get("GetParkingInfo", {}).get("row", []) if not seoul_parkings: print("[X] 서울 주차장 데이터 없음") return # 첫 번째 주차장 정보 real_parking = seoul_parkings[0] parking_name = real_parking.get("PKLT_NM", "") parking_addr = real_parking.get("ADDR", "") print(f"\n[서울 API 주차장]") print(f"이름: {parking_name}") print(f"주소: {parking_addr}") print(f"총 주차 대수: {real_parking.get('TPKCT', 'N/A')}") print(f"현재 주차 대수: {real_parking.get('NOW_PRK_VHCL_CNT', 'N/A')}") print("-" * 80) # 실시간 정보 조회 테스트 print(f"\n[실시간 정보 조회 테스트]") realtime_info = _get_realtime_info_seoul(parking_name, parking_addr) if realtime_info: print(f"[OK] 실시간 정보 조회 성공!\n") standard_parking = { "name": parking_name, "address": parking_addr, "total_spots": None, "fee": "", "distance": 0, } formatted = _format_parking_info(standard_parking, "seoul", realtime_info) print(f"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━") print(f"주차장: {formatted.get('name')}") print(f"주소: {formatted.get('address')}") print(f"\n[실시간 정보]") print(f" 총 주차 대수: {formatted.get('total_spots')}대") print(f" 주차 가능 대수: {formatted.get('available_spots')}대") if formatted.get('operating_info'): op = formatted.get('operating_info') print(f"\n[운영 시간]") print(f" 운영 구분: {op.get('operating_type', 'N/A')}") print(f" 평일: {op.get('weekday_start', 'N/A')} ~ {op.get('weekday_end', 'N/A')}") print(f" 주말: {op.get('weekend_start', 'N/A')} ~ {op.get('weekend_end', 'N/A')}") print(f" 공휴일: {op.get('holiday_start', 'N/A')} ~ {op.get('holiday_end', 'N/A')}") if formatted.get('fee_info'): fee = formatted.get('fee_info') print(f"\n[요금 정보]") print(f" 유료 여부: {fee.get('is_paid', 'N/A')}") print(f" 기본 요금: {fee.get('basic_fee', 0)}원 / {fee.get('basic_hours', 0)}분") print(f" 추가 요금: {fee.get('additional_fee', 0)}원 / {fee.get('additional_hours', 0)}분") if fee.get('daily_max_fee'): print(f" 일일 최대 요금: {fee.get('daily_max_fee')}원") else: print(f"[X] 실시간 정보 조회 실패") print("\n" + "=" * 80) except Exception as e: print(f"\n[X] 오류: {str(e)}") import traceback traceback.print_exc() def test_gyeonggi_with_real_name(): """경기 API에서 실제 주차장명 가져와서 테스트""" print("\n" + "=" * 80) print("경기 지역 테스트 (실제 주차장명 사용)") print("=" * 80) try: from api_clients import GyeonggiDataClient from src.server import _get_realtime_info_gyeonggi, _format_parking_info # 경기 API에서 실제 주차장명 가져오기 gyeonggi_client = GyeonggiDataClient() gyeonggi_response = gyeonggi_client.get_realtime_parking_info(1, 10) if gyeonggi_response.get("status") != "success": print("[X] 경기 API 호출 실패") return gyeonggi_data = gyeonggi_response.get("data", {}) gyeonggi_place = gyeonggi_data.get("ParkingPlace", []) if isinstance(gyeonggi_place, list) and len(gyeonggi_place) > 1: gyeonggi_parkings = gyeonggi_place[1].get("row", []) else: gyeonggi_parkings = [] if not gyeonggi_parkings: print("[X] 경기 주차장 데이터 없음") return # 첫 번째 주차장 정보 real_parking = gyeonggi_parkings[0] parking_name = real_parking.get("PARKPLC_NM", "") parking_addr = real_parking.get("LOCPLC_ROADNM_ADDR", "") or real_parking.get("LOCPLC_LOTNO_ADDR", "") print(f"\n[경기 API 주차장]") print(f"이름: {parking_name}") print(f"주소: {parking_addr}") print(f"총 주차 대수: {real_parking.get('PARKNG_COMPRT_PLANE_CNT', 'N/A')}") print("-" * 80) # 정보 조회 테스트 print(f"\n[요금 및 운영시간 정보 조회 테스트]") realtime_info = _get_realtime_info_gyeonggi(parking_name, parking_addr) if realtime_info: print(f"[OK] 정보 조회 성공!\n") standard_parking = { "name": parking_name, "address": parking_addr, "total_spots": None, "fee": "", "distance": 0, } formatted = _format_parking_info(standard_parking, "gyeonggi", realtime_info) print(f"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━") print(f"주차장: {formatted.get('name')}") print(f"주소: {formatted.get('address')}") if formatted.get('total_spots'): print(f"\n[주차장 정보]") print(f" 총 주차 대수: {formatted.get('total_spots')}대") if formatted.get('operating_info'): op = formatted.get('operating_info') print(f"\n[운영 시간]") print(f" 평일: {op.get('weekday_start', 'N/A')} ~ {op.get('weekday_end', 'N/A')}") print(f" 토요일: {op.get('saturday_start', 'N/A')} ~ {op.get('saturday_end', 'N/A')}") print(f" 공휴일: {op.get('holiday_start', 'N/A')} ~ {op.get('holiday_end', 'N/A')}") if formatted.get('fee_info'): fee = formatted.get('fee_info') print(f"\n[요금 정보]") print(f" 유료 여부: {fee.get('is_paid', 'N/A')}") print(f" 기본 요금: {fee.get('basic_fee', 0)}원 / {fee.get('basic_time', 0)}분") print(f" 추가 요금: {fee.get('additional_fee', 0)}원 / {fee.get('additional_time', 0)}분") if fee.get('payment_method'): print(f" 결제 방법: {fee.get('payment_method')}") else: print(f"[X] 정보 조회 실패") print("\n" + "=" * 80) except Exception as e: print(f"\n[X] 오류: {str(e)}") import traceback traceback.print_exc() if __name__ == "__main__": test_seoul_with_real_name() test_gyeonggi_with_real_name()

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