使用说明
项目简介
本项目 'Korea Weather MCP Server' 是一个基于 Model Context Protocol (MCP) 构建的服务器应用,旨在为大型语言模型 (LLM) 客户端提供韩国地区的天气信息服务。它利用韩国气象厅的API,将实况天气和天气预报数据以结构化的方式通过MCP协议提供给客户端,使得LLM能够方便地获取和利用最新的天气信息。
主要功能点
- 实时天气查询: 提供指定经纬度位置的当前实时天气信息,包括温度、降雨量、湿度和风速等。
- 超短期天气预报: 提供未来6小时内,精细到每小时的天气预报信息,包括温度、降水形态、降水量、湿度、天空状态、风速、风向和雷电信息等。
- 短期天气预报: 提供未来3-5天的中期天气预报,包含每日最高/最低气温以及分时段的天气状况,例如降水概率、降水形态、降水量、积雪量、天空状态、湿度、风速和风向等。
- MCP协议标准: 严格遵循MCP协议,易于与任何兼容MCP协议的客户端集成。
- 工具化接口: 通过MCP工具 (Tools) 的形式暴露天气查询功能,方便LLM客户端调用。
安装步骤
- 获取API密钥: 访问 data.go.kr 网站,申请开通 “기상청 단기예보 조회서비스” (气象厅短期预报查询服务) API,获取API密钥 (API Key)。
- 配置环境变量:
- 在项目根目录下创建 '.env' 文件(如果不存在)。
- 在 '.env' 文件中添加以下内容,将您获取的API密钥填入 'YOUR_API_KEY' 的位置:
或者,您也可以直接将 'KOREA_WEATHER_API_KEY' 设置为系统的环境变量。KOREA_WEATHER_API_KEY=YOUR_API_KEY
- 安装依赖: 确保您的Python环境满足要求 (Python 3.x)。根据 'README.md' 和 'pyproject.toml' 文件的指示,安装项目所需的Python依赖包。通常可以使用 pip 或 poetry 等工具进行安装。例如,如果使用 pip,可以执行:
(请根据 'pyproject.toml' 文件中的具体依赖列表进行安装)pip install requests python-dotenv httpx
服务器配置
MCP客户端需要配置以下JSON格式信息以连接到 'Korea Weather MCP Server':
{ "serverName": "korea_weather", "command": "python", "args": ["korea_weather.py"] }
参数说明:
- 'serverName': 服务器名称,必须与 'korea_weather.py' 中 'FastMCP("korea_weather")' 初始化的名称一致,此处为 '"korea_weather"'。
- 'command': 启动服务器的命令,通常为 'python' (假设您的Python环境已配置到系统路径)。
- 'args': 启动命令的参数,此处为服务器脚本的文件名 '["korea_weather.py"]'。
环境变量:
- 确保 'KOREA_WEATHER_API_KEY' 环境变量已正确配置,MCP服务器启动时会读取此环境变量以访问气象厅API。
基本使用方法
-
启动MCP服务器: 在安装配置完成后,在项目根目录下运行以下命令启动 'Korea Weather MCP Server':
python korea_weather.py服务器将通过标准输入输出 (stdio) 与MCP客户端进行通信。
-
客户端调用工具: 在兼容MCP协议的LLM客户端中,配置好上述服务器连接信息后,即可使用以下工具 (Tools) 查询天气信息:
-
'get_nowcast_observation(lon: float, lat: float)': 获取指定经纬度的实时天气观测信息。
- 'lon': 经度 (浮点数)
- 'lat': 纬度 (浮点数)
-
'get_short_term_forecast(lon: float, lat: float)': 获取指定经纬度的短期天气预报信息 (3-5天)。
- 'lon': 经度 (浮点数)
- 'lat': 纬度 (浮点数)
-
'get_nowcast_forecast(lon: float, lat: float)': 获取指定经纬度的超短期天气预报信息 (未来6小时)。
- 'lon': 经度 (浮点数)
- 'lat': 纬度 (浮点数)
客户端可以通过MCP协议发送JSON-RPC请求调用这些工具,并接收JSON-RPC响应,响应内容为包含天气信息的字符串。 请注意,经纬度参数需要以浮点数形式提供。
-
示例场景: 用户在LLM客户端中提问 "首尔现在天气怎么样?",客户端可以通过地理编码服务获取首尔的经纬度坐标,然后调用 'get_nowcast_observation' 工具,并将返回的天气信息整合到LLM的回复中。
信息
分类
网页与API