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
"""
잠실 롯데타워 근처 주차장 검색 테스트
수정된 서버 코드 테스트
"""
import sys
import os
sys.path.insert(0, 'src')
from dotenv import load_dotenv
load_dotenv()
def test_lotte_tower_parking():
"""잠실 롯데타워 근처 주차장 검색 테스트"""
print("=" * 70)
print("잠실 롯데타워 근처 주차장 검색 테스트")
print("=" * 70)
test_address = "서울 송파구 올림픽로 300" # 롯데월드타워 정확한 주소
search_radius = 1000 # 1km
print(f"\n[1단계] 주소 -> 좌표 변환")
print(f"주소: {test_address}")
print("-" * 70)
try:
from api_clients import KakaoLocalClient
# 주소를 좌표로 변환
kakao_client = KakaoLocalClient()
coord_response = kakao_client.address_to_coordinates(test_address)
if coord_response.get("status") != "success":
print(f"[X] 좌표 변환 실패: {coord_response}")
return
coord_data = coord_response.get("data", {})
coord_docs = coord_data.get("documents", [])
if not coord_docs:
print("[X] 주소를 찾을 수 없습니다.")
return
first_result = coord_docs[0]
lat = float(first_result.get('y'))
lng = float(first_result.get('x'))
print(f"[OK] 좌표 변환 성공!")
print(f" 위도: {lat}")
print(f" 경도: {lng}")
print(f" 주소: {first_result.get('address_name', 'N/A')}")
# 주변 주차장 검색 (수정된 서버 로직 시뮬레이션)
print(f"\n[2단계] 주변 주차장 검색 (카카오 API)")
print(f"검색 반경: {search_radius}m")
print("-" * 70)
parking_response = kakao_client.search_parking_nearby(
latitude=lat,
longitude=lng,
radius=search_radius,
size=15
)
if parking_response.get("status") != "success":
print(f"[X] 주차장 검색 실패: {parking_response}")
return
parking_data = parking_response.get("data", {})
parking_docs = parking_data.get("documents", [])
print(f"[OK] 주변 주차장 {len(parking_docs)}개 발견!\n")
# 서버의 파싱 함수 시뮬레이션
from src.server import _parse_kakao_parking_response, _get_region, _format_parking_info
from api_clients import SeoulDataClient, GyeonggiDataClient
parking_list = _parse_kakao_parking_response(parking_data)
print(f"[3단계] 주차장 정보 포맷팅 및 실시간 정보 추가")
print("-" * 70)
formatted_parkings = []
for i, parking in enumerate(parking_list[:10], 1): # 상위 10개만
address = parking.get("address", "") or parking.get("road_address", "")
region = _get_region(address)
print(f"\n--- 주차장 {i} ---")
print(f"이름: {parking.get('name', 'N/A')}")
print(f"주소: {address}")
print(f"거리: {parking.get('distance', 0)}m")
print(f"지역: {region}")
# 실시간 정보 조회 (서울인 경우)
realtime_info = None
if region == "seoul":
print(f" → 서울 지역: 실시간 정보 조회 시도...")
# 실제로는 _get_realtime_info_seoul 호출하지만 여기서는 간단히 표시만
realtime_info = None # 실제 구현에서는 조회
elif region == "gyeonggi":
print(f" → 경기 지역: 실시간 정보 조회 시도...")
realtime_info = None
else:
print(f" → 기타 지역: 기본 정보만 제공")
# 표준 형식으로 변환
standard_parking = {
"name": parking.get("name", ""),
"address": address,
"total_spots": None,
"fee": parking.get("category", ""),
"distance": parking.get("distance", 0),
"phone": parking.get("phone", ""),
}
formatted_parking = _format_parking_info(standard_parking, region, realtime_info)
print(f"포맷팅 결과:")
print(f" - 이름: {formatted_parking.get('name')}")
print(f" - 주소: {formatted_parking.get('address')}")
print(f" - 실시간 주차 가능: {formatted_parking.get('available_spots')}")
print(f" - 총 주차 대수: {formatted_parking.get('total_spots')}")
if formatted_parking.get('notice'):
print(f" - 안내: {formatted_parking.get('notice')}")
formatted_parkings.append(formatted_parking)
print(f"\n[테스트 완료]")
print(f"총 {len(parking_list)}개의 주차장을 찾았습니다.")
print(f"포맷팅된 주차장: {len(formatted_parkings)}개")
print("=" * 70)
except Exception as e:
print(f"\n[X] 오류 발생: {str(e)}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
test_lotte_tower_parking()