空气质量数据服务

AQICN MCP Server是一个提供全球城市和坐标实时空气质量数据的服务,支持通过API获取空气质量指数、监测站信息和污染物数据。

  • by mattmarcin
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 mattmarcin/aqicn-mcp

使用说明

AQICN MCP服务器

这是一个模型上下文协议(MCP)服务器,提供世界空气质量指数(AQICN)项目的空气质量数据工具。它允许LLM获取全球城市和坐标的实时空气质量数据。

安装

通过Smithery安装

通过以下方式自动安装适用于Claude Desktop的AQICN MCP服务器 史密瑟里:

npx -y @smithery/cli install @mattmarcin/aqicn-mcp --client claude

通过推荐的紫外线(手动)安装

我们建议使用 紫外线 管理你的Python环境:

# Install the package and dependencies
uv pip install -e .

环境设置

创建一个 .env 项目根目录中的文件(您可以从以下位置复制 .env.example):

# .env
AQICN_API_KEY=your_api_key_here

或者,您可以直接设置环境变量:

# Linux/macOS
export AQICN_API_KEY=your_api_key_here

# Windows
set AQICN_API_KEY=your_api_key_here

运行服务器

发展模式

测试和调试服务器的最快方法是使用MCP检查器:

mcp dev aqicn_server.py

Claude桌面集成

服务器准备就绪后,将其安装在Claude Desktop中:

mcp install aqicn_server.py

直接执行

对于测试或自定义部署:

python aqicn_server.py

可用工具

1.城市_

获取特定城市的空气质量数据。

@mcp.tool()
def city_aqi(city: str) -> AQIData:
    """Get air quality data for a specific city."""

输入:

  • city:获取空气质量数据的城市名称

输出: AQIData 与:

  • aqi:空气质量指数值
  • station:车站名称
  • dominant_pollutant:主要污染物(如有)
  • time:测量时间戳
  • coordinates:站点的纬度和经度

2.地质

使用坐标获取特定位置的空气质量数据。

@mcp.tool()
def geo_aqi(latitude: float, longitude: float) -> AQIData:
    """Get air quality data for a specific location using coordinates."""

输入:

  • latitude:位置纬度
  • longitude:位置经度

输出: 同 city_aqi

3.搜索状态

按关键字搜索空气质量监测站。

@mcp.tool()
def search_station(keyword: str) -> list[StationInfo]:
    """Search for air quality monitoring stations by keyword."""

输入:

  • keyword:搜索车站的关键字(城市名称、车站名称等)

输出: 列表 StationInfo 与:

  • name:车站名称
  • station_id:唯一电台标识符
  • coordinates:站点的纬度和经度

示例用法

使用MCP Python客户端:

from mcp import Client

async with Client() as client:
    # Get air quality data for Beijing
    beijing_data = await client.city_aqi(city="beijing")
    print(f"Beijing AQI: {beijing_data.aqi}")

    # Get air quality data by coordinates (Tokyo)
    geo_data = await client.geo_aqi(latitude=35.6762, longitude=139.6503)
    print(f"Tokyo AQI: {geo_data.aqi}")

    # Search for stations
    stations = await client.search_station(keyword="london")
    for station in stations:
        print(f"Station: {station.name} ({station.coordinates})")

贡献

请随时打开问题并提取请求。请确保您的更改包括适当的测试和文档。

许可证

该项目根据MIT许可证获得许可。