内容
# AQICN MCP Server
[](https://smithery.ai/server/@mattmarcin/aqicn-mcp)
这是一个模型上下文协议(Model Context Protocol,MCP)服务器,提供来自世界空气质量指数(AQICN)项目的空气质量数据工具。它允许大型语言模型(LLMs)获取全球城市和坐标的实时空气质量数据。
## 安装
### 通过 Smithery 安装
要通过 [Smithery](https://smithery.ai/server/@mattmarcin/aqicn-mcp) 自动安装 AQICN MCP Server 到 Claude Desktop:
```bash
npx -y @smithery/cli install @mattmarcin/aqicn-mcp --client claude
```
### 通过推荐的 uv 安装(手动)
我们建议使用 [uv](https://docs.astral.sh/uv/) 来管理你的 Python 环境:
```bash
# 安装包及其依赖
uv pip install -e .
```
## 环境设置
在项目根目录创建一个 `.env` 文件(可以从 `.env.example` 复制):
```bash
# .env
AQICN_API_KEY=your_api_key_here
```
或者,你可以直接设置环境变量:
```bash
# Linux/macOS
export AQICN_API_KEY=your_api_key_here
# Windows
set AQICN_API_KEY=your_api_key_here
```
## 运行服务器
### 开发模式
测试和调试你的服务器的最快方法是使用 MCP Inspector:
```bash
mcp dev aqicn_server.py
```
### Claude Desktop 集成
一旦你的服务器准备好,安装到 Claude Desktop:
```bash
mcp install aqicn_server.py
```
### 直接执行
用于测试或自定义部署:
```bash
python aqicn_server.py
```
## 可用工具
### 1. city_aqi
获取特定城市的空气质量数据。
```python
@mcp.tool()
def city_aqi(city: str) -> AQIData:
"""获取特定城市的空气质量数据。"""
```
**输入:**
- `city`: 要获取空气质量数据的城市名称
**输出:** `AQIData` 包含:
- `aqi`: 空气质量指数值
- `station`: 站点名称
- `dominant_pollutant`: 主要污染物(如果可用)
- `time`: 测量时间戳
- `coordinates`: 站点的经纬度
### 2. geo_aqi
使用坐标获取特定位置的空气质量数据。
```python
@mcp.tool()
def geo_aqi(latitude: float, longitude: float) -> AQIData:
"""使用坐标获取特定位置的空气质量数据。"""
```
**输入:**
- `latitude`: 位置的纬度
- `longitude`: 位置的经度
**输出:** 与 `city_aqi` 相同
### 3. search_station
通过关键字搜索空气质量监测站。
```python
@mcp.tool()
def search_station(keyword: str) -> list[StationInfo]:
"""通过关键字搜索空气质量监测站。"""
```
**输入:**
- `keyword`: 用于搜索站点的关键字(城市名称、站点名称等)
**输出:** `StationInfo` 列表包含:
- `name`: 站点名称
- `station_id`: 唯一的站点标识符
- `coordinates`: 站点的经纬度
## 示例用法
使用 MCP Python 客户端:
```python
from mcp import Client
async with Client() as client:
# 获取北京的空气质量数据
beijing_data = await client.city_aqi(city="beijing")
print(f"北京 AQI: {beijing_data.aqi}")
# 通过坐标获取空气质量数据(东京)
geo_data = await client.geo_aqi(latitude=35.6762, longitude=139.6503)
print(f"东京 AQI: {geo_data.aqi}")
# 搜索站点
stations = await client.search_station(keyword="london")
for station in stations:
print(f"站点: {station.name} ({station.coordinates})")
```
## 贡献
欢迎提出问题和拉取请求。请确保你的更改包含适当的测试和文档。
## 许可证
该项目根据 MIT 许可证授权。
连接信息
猜你喜欢
Firecrawl
Firecrawl MCP Server 实现了网页抓取、爬虫和内容提取功能。
MarkItDown
将文件和办公文档转换为Markdown的Python工具。
MarkItDown MCP
MarkItDown-MCP是一个轻量级服务器,用于将URI转换为Markdown。
OmniRoute
永不停息的编码。免费 AI 网关 — 一个端点,160+ 提供商,零停机时间。智能 4 级自动降级(订阅 → API → 廉价 →...
文件系统操作
Node.js MCP服务器,用于文件系统操作,支持动态访问控制。
TrendRadar
TrendRadar:30秒内为您提供真实新闻的热点助手。