使用说明
瑞典太阳能MCP
微软Copilot Studio的人工智能太阳能发电预测
MCP(模型上下文协议)服务器,将瑞典太阳能电池板安装数据与实时SMHI天气预报相结合,使Microsoft Copilot Studio能够回答有关瑞典太阳能生产的自然语言问题。
实时部署
| 端点 | URL |
|---|---|
| MCP(流式HTTP) | https://solar-mcp.thankfulglacier-f4abeca6.swedencentral.azurecontainerapps.io/mcp |
| MCP(SSE回退) | https://solar-mcp.thankfulglacier-f4abeca6.swedencentral.azurecontainerapps.io/sse |
| 健康检查 | https://solar-mcp.thankfulglacier-f4abeca6.swedencentral.azurecontainerapps.io/health |
Copilot工作室设置: 话题→ 添加动作→ MCP → 粘贴 /mcp 上面的URL→ 所有8个工具都是自动发现的。
你能问什么?
| 问题 | 工具 |
|---|---|
| “卡尔斯克鲁纳的太阳能发展有多快?” | get_solar_growth |
| “哪个城市增长最快?” | get_fastest_growth |
| “本周云将花费我们多少电力?” | compare_generation_forecast |
| “下周哪个地区将产生最多的太阳能?” | find_optimal_solar_region |
| “给我看瑞典各地太阳能发电量的地图” | get_solar_map |
| “明天SE3的电价是多少?” | get_electricity_prices |
| “哪些城市位于SE3和SE4的边界?” | list_zone_border_municipalities |
| “卡尔斯克鲁纳的太阳能产品今天值多少钱?” | estimate_solar_revenue |
工具
历史太阳能数据(能源数据)
get_solar_growth:返回瑞典任何城市的历史容量增长:自2016年以来的同比百分比和复合年增长率。get_fastest_growth:根据两年内太阳能电池板安装增长最快的城市对所有城市进行排名。get_solar_map:返回瑞典按城市太阳能装机容量(kW)着色的choropleth PNG地图,以及包含全国总量和前10个城市的JSON摘要。
天气和发电量预报(SMHI)
compare_generation_forecast:将未来几天的预期发电量与完美晴朗的天空情景进行比较,以千瓦时和百分比显示云层覆盖损失。find_optimal_solar_region:根据(1)最阳光的预测和(2)最高的预期发电量对15个城市进行排名。
电价(北池)
get_electricity_prices:返回Nord Pool四个瑞典定价区(SE1–SE4)的日前电力现货价格。list_zone_border_municipalities:列出位于电价区边界的城市,可用于跨境价格比较。
综合分析
estimate_solar_revenue:结合SMHI天气预报、太阳能装机容量和北池电力现货价格,估算特定日期市政太阳能发电的财务价值。
数据源
- 能源消耗 -290个城市×9年(2016-2024年),通过PxWeb API下载并缓存为Parquet。国家能力从 134兆瓦→ 4,808兆瓦 在此期间。
- SMHI开放数据 --免费9天定点天气预报(CC BY 4.0)。清晰度来自加权云层覆盖率(lcc/mcc/hcc),而不仅仅是天气符号。
- 通过mgrey.se连接北池 --日前电力现货价格(SE1-SE4)。明天的价格通常在欧洲中部时间13:00后公布。
- okfse/瑞典geojson --290功能GeoJSON用于choropleth地图。
Copilot Studio代理设置
1.创建或打开代理
首选 副驾驶工作室,创建新代理或打开现有代理。
2.添加MCP服务器
导航至 行动 在左侧边栏中→ 添加操作 → 模型上下文协议.
输入服务器URL:
https://solar-mcp.thankfulglacier-f4abeca6.swedencentral.azurecontainerapps.io/mcp
Copilot Studio将连接并自动发现所有8个工具。不需要身份验证。
3.服务器描述
当系统提示输入服务器名称和描述时,请使用:
姓名: 瑞典太阳能MCP
说明: 提供瑞典各市太阳能电池板安装的实时和历史数据。使用它来回答有关太阳能容量增长、经天气调整的发电量预测、北池电价、区域比较的问题,并生成瑞典太阳能基础设施的视觉choropleth地图。数据涵盖了2016年至2024年瑞典所有290个城市,包括SMHI的实时天气和Nord Pool的现货价格。
4.代理说明
将以下内容添加到您的代理中 说明 字段,为其提供正确的上下文(您可以在中查看完整的瑞典语说明 copilot-studio-instructions.md):
Du är Solar Sverige, en specialiserad assistent för solenergidata och
elmarknadsanalys i Sverige. Svara alltid på svenska.
Du kan svara på frågor om:
- Hastigheten för solcellsutbyggnad i specifika kommuner
- Den förväntade elproduktionen (kWh) för de kommande dagarna
- Elpriser från Nord Pool (SE1-SE4)
- Beräknade intäkter för solenergi i en kommun
- Kartor över solkapaciteten i Sverige
När du visar ett kart-URL från get_solar_map, rendera det alltid som en inbäddad
bild med markdown-syntaxen . Säg inte "Jag kan inte visa bilder" -
bilden är en renderad PNG som fungerar i chatten.
5.测试一下
使用 测试 Copilot Studio中的窗格,显示以下示例提示:
- “卡尔斯克鲁纳的太阳能发展有多快?”
- “2020年至2024年期间,哪个城市增长最快?”
- “与晴朗的天空相比,哥德堡本周会产生什么?”
- “SE3目前的电力现货价格是多少?”
- “根据北池现货价格,马尔默的太阳能预计明天能赚多少钱?”
- “未来7天,瑞典哪个城市将产生最多的太阳能?”
- “给我看瑞典各地太阳能发电量的地图”
快速入门(本地)
# Install dependencies
uv sync
# Download real data (first time only)
uv run python scripts/download_solar_data.py # → data/processed/solar_installations.parquet
uv run python scripts/download_geo.py # → data/geo/municipalities.geojson
uv run python -m playwright install chromium # for get_solar_map screenshots
# Run the server
uv run uvicorn solar_mcp.server:app --reload --port 8000
# Run the tests
uv run pytest tests/ -v # 44 tests
将Copilot Studio连接到 http://localhost:8000/mcp 用于本地测试。
窗户: 如果
uv run由于权限问题而失败,请使用.venv/Scripts/python -m uvicorn ...相反。
项目结构
solar-sweden-mcp/
├── data/
│ ├── raw/ ← cached API response (JSON)
│ ├── processed/ ← solar_installations.parquet (290 municipalities)
│ └── geo/ ← municipalities.geojson (290 features)
├── scripts/
│ ├── download_solar_data.py ← fetches Energimyndigheten PxWeb API
│ └── download_geo.py ← downloads Sweden municipality GeoJSON
├── src/solar_mcp/
│ ├── server.py ← FastAPI + MCP (Streamable HTTP + SSE)
│ ├── tools/
│ │ ├── electricity_prices.py
│ │ ├── generation_forecast.py
│ │ ├── growth_ranking.py
│ │ ├── optimal_region.py
│ │ ├── solar_growth.py
│ │ ├── solar_map.py ← folium choropleth + Playwright screenshot
│ │ └── solar_revenue.py ← combined Nord Pool + SMHI analysis
│ ├── data/
│ │ ├── energimyndigheten.py ← parquet loader
│ │ └── smhi_client.py ← SMHI API client + 30-min TTL cache
│ └── utils/
│ ├── municipality_coords.py
│ └── solar_formula.py ← cloud-layer clearness, PVGIS PSH table
├── tests/ ← 44 tests, all passing
├── presentation/ ← Quarto slide deck
├── deploy/
│ ├── azure-deploy.sh ← first-time deploy
│ └── azure-update.sh ← redeploy after code changes
└── Dockerfile ← single-stage, includes Playwright Chromium (~1.2 GB)
部署到Azure
# First-time deploy (creates resource group, ACR, Container App)
./deploy/azure-deploy.sh
# Redeploy after code changes
./deploy/azure-update.sh
当前部署运行在 Azure容器应用 (瑞典中央),1个CPU/2Gi内存,至少1个复制品。