天气应用

一个基于命令行的天气应用程序,提供全球各地的实时天气状况、天气预报和警报。

  • by mindsightventures
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 mindsightventures/mcp-server-example

使用说明

天气应用程序

一个基于命令行和MCP的天气应用程序,为全球各地提供当前天气状况、预报和警报。

特性

  • 获取任何位置的当前天气状况
  • 获取每日天气预报
  • 获取每小时天气预报
  • 获取天气警报
  • 通过坐标获取天气
  • 自动位置检测
  • 测试API连接
  • 检查API密钥和订阅状态

安装

先决条件

  • Python 3.12或更高版本
  • 紫外线 包管理器

设置

  1. 克隆此存储库:

    git clone <repository-url>
    cd weather-app
    
  2. 创建一个 .env 根目录中使用OpenWeatherMap API密钥的文件:

    OPENWEATHER_API_KEY=your_api_key_here
    

    您可以从获取API密钥 OpenWeatherMap.

  3. 运行安装脚本:

    ./scripts/install.sh
    

    对于开发设置,请使用:

    ./scripts/install.sh --dev
    

用法

运行天气应用程序:

./scripts/run_weather.sh

这将使用以下可用工具启动MCP服务器:

  • get_current_weather:获取当前天气状况
  • get_forecast:获取每日天气预报
  • get_hourly_forecast:获取每小时天气预报
  • get_alerts:获取天气警报
  • get_weather_by_coordinates:通过坐标获取天气
  • get_user_location:获取您当前的位置
  • test_api_connection:测试API连接
  • check_api_key_and_subscription:检查您的API密钥和订阅

发展

代码样式和Linting

本项目使用:

所有这些工具都配置在 pyproject.toml 文件。

预提交钩子

我们使用预提交挂钩来确保代码质量。安装开发依赖项后,钩子会自动设置。

要手动安装预提交挂钩,请执行以下操作:

uv run pre-commit install

要手动运行预提交钩子:

uv run pre-commit run --all-files

测试

运行测试:

./scripts/run_tests.sh

跑步覆盖:

./scripts/run_tests.sh --coverage

运行集成测试(需要API密钥):

./scripts/run_tests.sh --integration

运行覆盖率为的集成测试:

./scripts/run_tests.sh --integration --coverage

创建MCP服务器

要使用此项目作为模板创建自己的MCP服务器,请执行以下操作:

  1. 安装具有开发依赖关系的项目:

    ./scripts/install.sh --dev
    
  2. 使用MCP服务器实现创建一个新的Python文件:

    import os
    from dotenv import load_dotenv
    from mcp.server.fastmcp import FastMCP
    
    # Load environment variables
    load_dotenv()
    
    # Initialize FastMCP server
    mcp = FastMCP("your-app-name")
    
    # Define your tools
    @mcp.tool
    async def your_tool(param1: str, param2: int) -> str:
        """Tool description."""
        # Your implementation here
        return "Result"
    
    # Run the server
    if __name__ == "__main__":
        mcp.run()
    
  3. 运行服务器:

    python your_server.py
    

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。