G
gabrielkasmi/deeppvmapper
Automated pipeline for large scale detection of solar arrays in France
no SECURITY.md
View on GitHub ↗Link checked 2026-11-12 · HTTP 200 · opens the vendor's own site
Install & config
Remote endpoint (mcpServers - Claude Desktop / Cursor / Windsurf)
{
"mcpServers": {
"gabrielkasmi-deeppvmapper": {
"url": "https://zelhliylrlktnasircwp.supabase.co/functions/v1/mcp/mcp"
}
}
}Paste this into the mcpServers config of Claude Desktop or Cursor. The endpoint comes from public evidence; we do not install or host it. Official Registry record: this endpoint lists no request headers. That is not the same as key-free - the project docs decide.
VS Code (.vscode/mcp.json - the key is servers, remote needs type: http)
{
"servers": {
"gabrielkasmi-deeppvmapper": {
"type": "http",
"url": "https://zelhliylrlktnasircwp.supabase.co/functions/v1/mcp/mcp"
}
}
}VS Code differs from the other three: the top-level key is <code>servers</code> and a remote endpoint also needs <code>"type": "http"</code>. Paste into .vscode/mcp.json.
Claude Code (command line)
claude mcp add --transport http gabrielkasmi-deeppvmapper https://zelhliylrlktnasircwp.supabase.co/functions/v1/mcp/mcp
Claude Code does not read a config file; add the server with this command.
Install command from the repository
pip install "GDAL
Parsed from the README we fetched on 2026-10-26; we have not executed it.
This is the install method the repository states, not an MCP client config, so no JSON is generated.
Key names differ by client: Clients & CLI
- Star count
- 39 ★ · gabrielkasmi/deeppvmapper · read from the GitHub search API · (checked 2026-11-13 20:00:50)
- Source
- collected from the punkpeye/awesome-mcp-servers list · type: MCP server
- Harvest history
- first seen 2026-10-23 · last seen 2026-11-14 · seen 26× · listed by 23 sources
- Score
- score 2,300 · 39 ★ · 23 sources · mcp
- Install
pip install "GDAL
FAQ (answers come from our records)
How do I install it?
The repository provides this install command:
pip install "GDAL. It comes from the repository itself; we cannot guarantee it runs as-is in your client.Who is it for?
We filed it under these tags: MCP 服务. The tags come from the entry itself, not a taxonomy we imposed.
Who maintains it?
repository
gabrielkasmi/deeppvmapper;first catalogued 2026-10-23;last seen 2026-11-14。There is no official certification or quality rating here — we record sources and dates only.# DeepPVMapper
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
Large-scale rooftop PV detection pipeline for France. Classifies IGN aerial tiles with InceptionV3, segments positive patches with FCN/DeepLab, and extracts panel characteristics (surface, tilt, azimuth, installed capacity) via pypvroof.
🗺️ Official project page
Work carried out by Gabriel Kasmi as part of his PhD at Mines Paris-PSL (2020–2024).
## MCP Server
DeepPVMapper's detection registry is also exposed as a public MCP (Model Context Protocol) server over Streamable HTTP, so any MCP-compatible client (Claude, etc.) can query the 1.14M+ rooftop-solar detections directly via natural language: search detections, aggregate installed capacity by department, explore an area, track yearly deployment, and check data-quality signals.
Live endpoint: https://zelhliylrlktnasircwp.supabase.co/functions/v1/mcp/mcp
Server source: supabase/functions/mcp
Registry listing: registry.modelcontextprotocol.io — io.github.gabrielkasmi/deeppvmapper
No install required — add the endpoint as a custom connector in any MCP client.
## Mapping data
Pre-computed detection results for French departments are available on Zenodo:
## Installation
GDAL must be installed system-wide first, then via pip to match the running Python version:
bash
# Ubuntu/Debian
apt-get install -y gdal-bin libgdal-dev libopenjp2-7
pip install "GDAL==$(gdal-config --version)"
pip install -r requirements.txt
GPU required. CUDA 11.8+, 8 GB VRAM minimum.
## Data and model weights
Download model weights and runtime data from Zenodo:
Model weights are also available on Hugging Face:
The training dataset (BDAPPV):
Fill in the source paths in config.yml before running:
| config key | what goes there |
| sourceimagesdir | IGN JP2 tiles + dalles.shp index shapefile |
| sourcetopodir | BDTOPO folder (BATIMENT.shp, ZONEDACTIVITEOUDINTERET.shp) |
| sourcecommunedir | folder containing communes-20210101.shp |
| modeldir | folder containing modelbdappvcls.pth and modelbdappvseg.pth |
## Usage
bash
python main.py --dpt 06
--count sets tiles per classification batch (default 16 — reduce if OOM):
bash
python main.py --dpt 06 --count 8
--config points to an alternative config file (useful for RunPod deployments):
bash
python main.py --dpt 06 --config /workspace/configrunpod.yml
To process a subset of tiles (local testing), set tileslist in config.yml:
yaml
tileslist:
01-2024-0850-6565-LA93-0M20-E080
01-2024-0850-6570-LA93-0M20-E080
Force a full rerun (wipe prior progress):
bash
python main.py --dpt 06 --clean
## Pipeline
Four steps run sequentially inside main.py:
| step | what happens |
| Init | Builds per-department auxiliary files (buildings, plants, communes) into temp/. Skipped if already present — safe to rerun after a crash. |
| Classification | Tiles loaded fully in memory. InceptionV3 classifies 299×299 patches; positives saved as GeoTIFFs to temp/segmentation/. |
| Segmentation | FCN/DeepLab segments each positive patch. LAMB93 polygons extracted, sorted by tile, merged into pseudo-arrays. |
| Aggregation | pypvroof extracts tilt/azimuth/kWp per polygon. Building filter applied. Results written to outputsdir. |
On success: temp/ is deleted automatically.
On crash: temp/ is kept. Rerun the same command to resume from where it stopped.
🗺️ Official project page
Work carried out by Gabriel Kasmi as part of his PhD at Mines Paris-PSL (2020–2024).
## MCP Server
DeepPVMapper's detection registry is also exposed as a public MCP (Model Context Protocol) server over Streamable HTTP, so any MCP-compatible client (Claude, etc.) can query the 1.14M+ rooftop-solar detections directly via natural language: search detections, aggregate installed capacity by department, explore an area, track yearly deployment, and check data-quality signals.
Live endpoint: https://zelhliylrlktnasircwp.supabase.co/functions/v1/mcp/mcp
Server source: supabase/functions/mcp
Registry listing: registry.modelcontextprotocol.io — io.github.gabrielkasmi/deeppvmapper
No install required — add the endpoint as a custom connector in any MCP client.
## Mapping data
Pre-computed detection results for French departments are available on Zenodo:
## Installation
GDAL must be installed system-wide first, then via pip to match the running Python version:
bash
# Ubuntu/Debian
apt-get install -y gdal-bin libgdal-dev libopenjp2-7
pip install "GDAL==$(gdal-config --version)"
pip install -r requirements.txt
GPU required. CUDA 11.8+, 8 GB VRAM minimum.
## Data and model weights
Download model weights and runtime data from Zenodo:
Model weights are also available on Hugging Face:
The training dataset (BDAPPV):
Fill in the source paths in config.yml before running:
| config key | what goes there |
| sourceimagesdir | IGN JP2 tiles + dalles.shp index shapefile |
| sourcetopodir | BDTOPO folder (BATIMENT.shp, ZONEDACTIVITEOUDINTERET.shp) |
| sourcecommunedir | folder containing communes-20210101.shp |
| modeldir | folder containing modelbdappvcls.pth and modelbdappvseg.pth |
## Usage
bash
python main.py --dpt 06
--count sets tiles per classification batch (default 16 — reduce if OOM):
bash
python main.py --dpt 06 --count 8
--config points to an alternative config file (useful for RunPod deployments):
bash
python main.py --dpt 06 --config /workspace/configrunpod.yml
To process a subset of tiles (local testing), set tileslist in config.yml:
yaml
tileslist:
01-2024-0850-6565-LA93-0M20-E080
01-2024-0850-6570-LA93-0M20-E080
Force a full rerun (wipe prior progress):
bash
python main.py --dpt 06 --clean
## Pipeline
Four steps run sequentially inside main.py:
| step | what happens |
| Init | Builds per-department auxiliary files (buildings, plants, communes) into temp/. Skipped if already present — safe to rerun after a crash. |
| Classification | Tiles loaded fully in memory. InceptionV3 classifies 299×299 patches; positives saved as GeoTIFFs to temp/segmentation/. |
| Segmentation | FCN/DeepLab segments each positive patch. LAMB93 polygons extracted, sorted by tile, merged into pseudo-arrays. |
| Aggregation | pypvroof extracts tilt/azimuth/kWp per polygon. Building filter applied. Results written to outputsdir. |
On success: temp/ is deleted automatically.
On crash: temp/ is kept. Rerun the same command to resume from where it stopped.
Listed badge (optional)
Copy this line into the README if you want the listing mark. Optional, and it does not affect being listed.
[](https://anclum.com/en/s/gabrielkasmi-deeppvmapper/)
- Source
- awesome · https://github.com/gabrielkasmi/deeppvmapper
- Browse by field
- MCP servers
- Traction
- 39 ★
- Listed by
- 23 independent sources
- added
- today
- Security policy
- no
SECURITY.mdat the repository root (which does not mean it is unsafe)
More like this
Filed under
Every tag opens the full list for that filter. Counts are the live catalogue figures.