查询停车场信息MCP服务器
使用fastMCP查询全国停车场信息的模型上下文协议(MCP)服务器。
主要功能
- 搜索全国停车场:通过Kakao本地API搜索全国停车场
- 按地区提供信息:首尔/京畿地区提供实时信息和详细信息
- 实时停车信息:提供首尔地区实时停车数量
- 运营时间和费用信息:提供首尔/京畿地区运营时间和费用信息
- 用户友好的错误消息:没有技术术语的明确提示
设置开发环境(Windows)
1.创建Python虚拟环境
在PowerShell中运行以下命令:
# Python 3.8 이상이 설치되어 있어야 합니다
python --version
# 가상환경 생성
python -m venv venv
# 가상환경 활성화
.\venv\Scripts\Activate.ps1参考:如果出现PowerShell执行策略错误:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser或者使用Command Prompt(cmd):
venv\Scripts\activate.bat2.安装所需的库
虚拟环境处于活动状态时:
pip install --upgrade pip
pip install -r requirements.txt3.设置环境变量
.env.example 请参见文件 .env 创建文件:
copy .env.example .env而且 .env 打开文件,输入实际的API密钥。
参考: .env.example 如果文件不存在 env.example 请参考文件。
项目结构
parking-mcp2/
├── venv/ # 가상환경 (gitignore됨)
├── .env # 환경 변수 (gitignore됨)
├── env.example # 환경 변수 예시
├── .gitignore
├── requirements.txt # Python 의존성
├── README.md
├── test_api.py # API 클라이언트 테스트
├── test_api_call.py # 실제 API 호출 테스트
├── test_server.py # 서버 구조 테스트
└── src/ # 소스 코드
├── __init__.py
├── server.py # MCP 서버 메인 파일
└── api_clients/ # API 클라이언트 모듈
├── __init__.py
├── kakao_local.py # 카카오 로컬 API (주요 검색 API)
├── seoul_data.py # 서울 열린데이터 (서울 실시간 정보)
└── gyeonggi_data.py # 경기데이터드림 (경기 실시간 정보)如何发放API密钥
1.Kakao本地API密钥
- Kakao开发者控制台 连接
- 创建应用程序
- 应用程序设置>应用程序密钥在 REST API密钥 复制
- 产品设置>Kakao登录 启用(必需)
- 产品设置>本地 启用(必需)
.env在文件中KAKAO_REST_API_KEY在中输入
注意:必须启用“OPEN_MAP_AND_LOCAL”服务。
2.首尔开放数据API密钥
- 首尔开放数据广场 连接
- 注册和登录会员
- 我的页面>管理验证密钥在中发放认证密钥
.env在文件中SEOUL_DATA_API_KEY在中输入
使用API:
GetParkingInfo:首尔市公营停车场实时信息
3.比赛数据梦想API键
- 竞技数据梦想 连接
- 注册和登录会员
- 我的页面>管理验证密钥在中发放认证密钥
.env在文件中GYEONGGI_DATA_API_KEY在中输入
使用API:
ParkingPlace:京畿道公营停车场信息
使用方法
运行服务器
# 가상환경 활성화
.\venv\Scripts\Activate.ps1
# 서버 실행 (모듈로 실행)
$env:PYTHONPATH="src"; python -m src.server连接MCP服务器
从MCP客户端连接:
{
"mcpServers": {
"parking-mcp": {
"command": "python",
"args": ["-m", "src.server"],
"env": {
"PYTHONPATH": "src"
}
}
}
}测试
# API 클라이언트 초기화 테스트
python test_api.py
# 실제 API 호출 테스트 (카카오 API)
python test_api_call.py
# 서버 구조 테스트
python test_server.py主要功能
提供的Tool函数
- 搜索搜索标记
- 搜索周边停车场(使用Kakao本地API) - 基于坐标的搜索(纬度、经度、半径) - 自动添加地区信息(首尔/京畿/其他)
参数:
- latitude:纬度(必需) - longitude:硬度(必需) - radius:搜索半径计(默认值:1000)
- get_parking_info
- 查询特定停车场详细信息 - 按停车场名称或地址搜索 - 自动添加本地实时信息
参数:
- parking_id:停车场名称或地址(必需)
按地区提供的信息
信息首尔京畿其他 |------|------|------|------| |基本信息(姓名,地址)| |总停车位数量 |实时停车数量| | |运营时间| |费用信息|宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传宣传 |更新时间| |
首尔地区:
- 提供实时停车数量
- 详细运营时间(平日/周末/公休日)
- 详细费用信息(基本费用、额外费用、每日最高费用等)
- 实时信息更新时间
赛区:
- 提供停车总数量
- 运营时间(平日/周六/公休日)
- 费用信息(基本费用、额外费用、付款方式)
其他地区:
- 仅提供基本停车场信息(名称、地址、类别)
- 显示提示信息
支持的API
- Kakao本地API:全国停车场搜索和地址转换(主要搜索API)
- 首尔开放数据:首尔市实时停车信息(添加首尔地区实时信息)
- 竞技数据梦想:京畿道实时停车信息(添加京畿地区实时信息)
使用示例
示例1:搜索首尔地区停车场
# search_nearby_parking 호출
{
"latitude": 37.5665,
"longitude": 126.9780,
"radius": 1000
}
# 응답 예시
{
"parkings": [
{
"name": "서울시청 주차장",
"address": "서울 중구 세종대로 110",
"total_spots": 1260,
"available_spots": 507,
"fee": "교통,지하철 > 지하철역 > 주차장",
"distance": 62,
"operating_info": {
"operating_type": "시간제 운영",
"weekday_start": "0000",
"weekday_end": "2400",
...
},
"fee_info": {
"is_paid": "유료",
"basic_fee": 430.0,
"basic_hours": 5.0,
...
},
"update_time": "2025-12-10 10:24:30"
}
],
"count": 1
}示例2:搜索京畿地区停车场
# search_nearby_parking 호출
{
"latitude": 37.2892,
"longitude": 127.0086,
"radius": 1000
}
# 응답 예시
{
"parkings": [
{
"name": "화성행궁",
"address": "경기도 수원시 팔달구 화성행궁 159",
"total_spots": 62,
"available_spots": null,
"fee": "교통,지하철 > 지하철역 > 주차장",
"distance": 0,
"operating_info": {
"weekday_start": "00:00",
"weekday_end": "23:59",
...
},
"fee_info": {
"is_paid": "유료",
"basic_time": 90,
"basic_fee": 400,
...
}
}
],
"count": 1
}示例3:搜索其他本地停车场
# search_nearby_parking 호출
{
"latitude": 35.1631,
"longitude": 129.1636,
"radius": 1000
}
# 응답 예시
{
"notice": "해당 지역은 기본 주차장 정보만 제공됩니다. 실시간 정보는 서울 지역에서, 요금 및 운영시간 정보는 서울/경기 지역에서 이용 가능합니다.",
"parkings": [
{
"name": "해운대역 주차장",
"address": "부산 해운대구 우동 1378-95",
"total_spots": null,
"available_spots": null,
"fee": "교통,지하철 > 지하철역 > 주차장",
"distance": 0
}
],
"count": 1
}错误响应示例
{
"error": "주차장 정보를 불러오는 중 오류가 발생했습니다. 잠시 후 다시 시도해주세요.",
"parkings": []
}详细的响应格式包括: MCP_RESPONSE_FORMAT.md请参考。
依赖性
- fastmcp:MCP服务器框架
- requests:HTTP API调用
- python-dotenv:管理环境变量
