mcpbeat Sign in

DeepPVMapper MCP Server

by gabrielkasmi Your server? Claim it
answering

DeepPVMapper is answering right now. Last checked 3 min ago. It exposes 17 tools. Last commit 26 Oct 2026.

Open registry of 1.14M+ rooftop-solar detections across France, queryable by natural language.

Uptime history 45 days of history
45 days agonow
100.0%
Uptime 24h
92 of 92 checks
17
Tools
read from the server
317 ms
Response time
average over 24h
39
Stars
last commit 26 Oct 2026

What changed 17

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 19 October 2026. No other catalogue keeps this.

18 Oct 9 tools appeared count_detections, get_department_profile, get_detection_details and 6 more
18 Oct 5 tool descriptions were rewritten aggregate_detection_capacity, get_department_capacity_stats, get_department_yearly_stats and 2 more
18 Oct 2 tools changed the parameters they ask for aggregate_detection_capacity, search_detections
18 Oct a tool changed version

What the code does

We read the source, 6 d ago · tools taken from the live server · rules 995398eba69f

Capabilities

What this server is able to do. For an MCP server this is often the job itself — a terminal server runs commands because that is what it is for. Listed so you know what you are plugging in, not as an accusation.

        result = subprocess.run(
Unsafe deserialization main.py:129
        configuration = yaml.load(f, Loader=yaml.FullLoader)
Builds a file path from a variable training/eval.py:110, training/train.py:124
        images_dir = os.path.join(cfg['data_dir'], provider, 'img')

Is this your server and something here is wrong? Tell us — corrections are free and do not require a plan.

This code can reach further than it looks

We found places where it runs commands, builds paths or queries from values it is given. None of that is a flaw by itself — it becomes one when the code changes, and code changes quietly between releases. We re-read it on every one.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 3 min ago.

run in your terminal
claude mcp add deeppvmapper --transport http https://zelhliylrlktnasircwp.supabase.co/functions/v1/mcp/mcp
Settings → Connectors → Add custom connector, then paste this address
https://zelhliylrlktnasircwp.supabase.co/functions/v1/mcp/mcp
~/.codex/config.toml
[mcp_servers.deeppvmapper]
url = "https://zelhliylrlktnasircwp.supabase.co/functions/v1/mcp/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "deeppvmapper": {
      "url": "https://zelhliylrlktnasircwp.supabase.co/functions/v1/mcp/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "deeppvmapper": {
      "type": "http",
      "url": "https://zelhliylrlktnasircwp.supabase.co/functions/v1/mcp/mcp"
    }
  }
}

Available tools 17

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

department
get_department_capacity_stats
Get installed rooftop-PV capacity (total kWp) and system counts for one or all French départements, from the DeepPVMapper/OpenPVMapper registry. This is a fixed, pre-computed department-wide aggregate with no other filters — use aggregate_detection_capacity instead if you need a filtered subset (e.g. only cross-validated detections). Data quality note: this is a detection dataset, not an exhaustive inventory (estimated recall ~0.6). A missing detection does not mean no PV installation exists there. kwp, surface, tilt and azimuth are model estimates, not surveyed values. In this server, quality_filter=true keeps only detections identified by 2 or more sources (see source_encoding in get_data_quality_reference). Call get_data_quality_reference for the full picture before assessing fitness for a specific use case.
get_department_profile
One-call profile of a département: installed capacity and national rank, yearly trend (by first-seen imagery year), source mix, share identified by 2+ sources, and share matched to an RNB building id. Cross-references the pre-computed department statistics with live counts. Data quality note: this is a detection dataset, not an exhaustive inventory (estimated recall ~0.6). A missing detection does not mean no PV installation exists there. kwp, surface, tilt and azimuth are model estimates, not surveyed values. In this server, quality_filter=true keeps only detections identified by 2 or more sources (see source_encoding in get_data_quality_reference). Call get_data_quality_reference for the full picture before assessing fitness for a specific use case.
get_department_yearly_stats
Get yearly system counts and capacity by département, based on first-seen imagery year. Useful for tracking apparent PV deployment growth over time. Data quality note: this is a detection dataset, not an exhaustive inventory (estimated recall ~0.6). A missing detection does not mean no PV installation exists there. kwp, surface, tilt and azimuth are model estimates, not surveyed values. In this server, quality_filter=true keeps only detections identified by 2 or more sources (see source_encoding in get_data_quality_reference). Call get_data_quality_reference for the full picture before assessing fitness for a specific use case.
field
get_field_coverage
Completeness report: for each optional field of the registry (rnb_id, frpv_proba, false_positive, false_positive_source), how many detections have it filled in and what percentage. Answers "how many installations have an RNB id / an FRPV comparison / a false-positive flag?" in one call, for France or one département. For a single filtered count use count_detections instead. Null means "not available/recorded", never "0" or "confirmed ok". Data quality note: this is a detection dataset, not an exhaustive inventory (estimated recall ~0.6). A missing detection does not mean no PV installation exists there. kwp, surface, tilt and azimuth are model estimates, not surveyed values. In this server, quality_filter=true keeps only detections identified by 2 or more sources (see source_encoding in get_data_quality_reference). Call get_data_quality_reference for the full picture before assessing fitness for a specific use case.
get_field_distribution
Histogram of a numeric field (kwp, surface, tilt, azimuth, n_vintages, first_seen, last_seen) with exact counts per bin, for France or one département. Answers "how are installations distributed by size / tilt / orientation / year?". kwp, surface, tilt and azimuth are model estimates. first_seen/last_seen are imagery years, not installation dates. Data quality note: this is a detection dataset, not an exhaustive inventory (estimated recall ~0.6). A missing detection does not mean no PV installation exists there. kwp, surface, tilt and azimuth are model estimates, not surveyed values. In this server, quality_filter=true keeps only detections identified by 2 or more sources (see source_encoding in get_data_quality_reference). Call get_data_quality_reference for the full picture before assessing fitness for a specific use case.
get_field_reference
Field-by-field documentation of a detection record: type, unit, nullability, whether it is observed or a model estimate, how to read it, and which tool filters or reports it. Call this when the user asks what a field means or how reliable it is.
community
get_community_activity
Get a snapshot of ongoing community contribution activity on the map: how many corrections are currently pending moderation, their breakdown by action type (add / modify / delete), and the most recent submissions (timestamp, action, target). Submitted free-text comments are intentionally excluded from this tool. This reflects unmoderated, unverified user activity, not the registry itself — do not present it as confirmed detection data.
get_community_activity_in_area
Find pending, unmoderated community contributions relevant to a specific area, to answer "has anyone flagged anything here that is not in the registry yet?" Two independent filters: dpt finds pending edits/deletions (action=modify/delete) targeting existing detections in that département; a full bounding box (min_lon/min_lat/max_lon/max_lat) finds pending new additions (action=add) whose proposed footprint centroid falls inside it. Combine with get_department_capacity_stats / search_detections / get_detections_in_bbox for the confirmed registry picture, and present this separately and clearly as unverified, pending community input — not confirmed detection data. Free-text comments are never included.
detections
get_detections_in_bbox
Get rooftop-PV detections within a geographic bounding box (WGS84 lon/lat), including footprint geometry. Intended for map-style spatial queries over a small area. Data quality note: this is a detection dataset, not an exhaustive inventory (estimated recall ~0.6). A missing detection does not mean no PV installation exists there. kwp, surface, tilt and azimuth are model estimates, not surveyed values. In this server, quality_filter=true keeps only detections identified by 2 or more sources (see source_encoding in get_data_quality_reference). Call get_data_quality_reference for the full picture before assessing fitness for a specific use case.
search_detections
Search individual rooftop-PV detections by département, commune (INSEE code), estimated capacity range, and/or cross-validation confidence (min_vintages, cross_validated). Returns a bounded list of detection records plus a quality_summary for the returned sample (use get_detections_in_bbox instead for map/spatial queries with geometry). Data quality note: this is a detection dataset, not an exhaustive inventory (estimated recall ~0.6). A missing detection does not mean no PV installation exists there. kwp, surface, tilt and azimuth are model estimates, not surveyed values. In this server, quality_filter=true keeps only detections identified by 2 or more sources (see source_encoding in get_data_quality_reference). Call get_data_quality_reference for the full picture before assessing fitness for a specific use case.
source
get_source_breakdown
Break down detections by source code (0=DPVM pipeline, 1=FRPV reference, 2=OSM, 3=manual correction, 4=recall sample), for one département or all of France, with human-readable labels. A detection can carry several sources, so per-source counts overlap and do not add up to the total. Also returns how many detections are identified by 2+ sources (the meaning of quality_filter). Data quality note: this is a detection dataset, not an exhaustive inventory (estimated recall ~0.6). A missing detection does not mean no PV installation exists there. kwp, surface, tilt and azimuth are model estimates, not surveyed values. In this server, quality_filter=true keeps only detections identified by 2 or more sources (see source_encoding in get_data_quality_reference). Call get_data_quality_reference for the full picture before assessing fitness for a specific use case.
get_source_reference
Explain the data sources behind the registry's `sources` field: for each source, its code, short key, name, accepted aliases, and where the data comes from (with references: code, thesis, papers). Use it for questions like "what is FRPV?", "where does the OSM data come from?", "what is a manual correction?". The `sources` field answers "where do we have this installation?": each listed code is a dataset or process that contains it. Example: "0,1" = present in both DeepPVMapper (DPVM) and FRPV; "0,2" = present in DeepPVMapper and OpenStreetMap.
aggregate
aggregate_detection_capacity
Compute the total estimated installed capacity (kWp) and count of detections matching a set of filters — département, commune, capacity range, and cross-validation across sources (cross_validated) or imagery vintages (min_vintages) — plus a quality_summary for the summed sample. Unlike get_department_capacity_stats, which is a fixed pre-computed département-wide aggregate with no other filters, this tool sums a live filtered subset, up to max_rows detections. Example: "installed capacity in Gironde confirmed by at least two sources" -> dpt="33", cross_validated=true. Data quality note: this is a detection dataset, not an exhaustive inventory (estimated recall ~0.6). A missing detection does not mean no PV installation exists there. kwp, surface, tilt and azimuth are model estimates, not surveyed values. In this server, quality_filter=true keeps only detections identified by 2 or more sources (see source_encoding in get_data_quality_reference). Call get_data_quality_reference for the full picture before assessing fitness for a specific use case.
count
count_detections
Count detections matching a set of filters, exactly, without downloading rows (fast, no row cap). Use this for "how many ..." questions, e.g. "how many installations have an RNB id?" -> has_rnb_id=true; "how many are identified by 2+ sources?" -> quality_filter=true; "how many come from OpenStreetMap?" -> sources_include=[2]. Returns the matching count, the unfiltered registry total and the percentage. Counts are DETECTED systems, not an inventory. Data quality note: this is a detection dataset, not an exhaustive inventory (estimated recall ~0.6). A missing detection does not mean no PV installation exists there. kwp, surface, tilt and azimuth are model estimates, not surveyed values. In this server, quality_filter=true keeps only detections identified by 2 or more sources (see source_encoding in get_data_quality_reference). Call get_data_quality_reference for the full picture before assessing fitness for a specific use case.
data
get_data_quality_reference
Return the DeepPVMapper/OpenPVMapper registry's documented data-quality characteristics: estimated detection recall, which fields are model-derived estimates vs. structural/observed fields, the source-encoding table, the recommended confidence threshold, confidence signals, and licensing/liability terms. Call this before advising how much to trust a result for a specific use case (e.g. exploratory research vs. a commercial or regulatory decision) — pair it with the quality_summary attached to search_detections / aggregate_detection_capacity results, which reflects the specific query rather than the registry as a whole.
detection
get_detection_details
Get the full record of one detection by id: technical characteristics (surface, kwp, tilt, azimuth — model estimates), imagery years, sources decoded into plain labels, frpv_proba, false-positive flag, rnb_id and location codes, plus simple confidence signals. Data quality note: this is a detection dataset, not an exhaustive inventory (estimated recall ~0.6). A missing detection does not mean no PV installation exists there. kwp, surface, tilt and azimuth are model estimates, not surveyed values. In this server, quality_filter=true keeps only detections identified by 2 or more sources (see source_encoding in get_data_quality_reference). Call get_data_quality_reference for the full picture before assessing fitness for a specific use case.
started
get_started
START HERE. Call this first when the user is new, asks what this server can do, or asks a vague question about DeepPVMapper. Returns a plain-language introduction, example questions, which tool answers which kind of question, a glossary and the main caveats. Reply to the user in their own language.

Endpoints

URLTransportStateLatencyChecked
https://zelhliylrlktnasircwp.supabase.co/functions/v1/mcp/mcp streamable-http answering 318 ms 3 min ago

Alternatives to DeepPVMapper

same job, measured the same way
Activepieces
by activepieces

Build and run agents and automations across hundreds of apps using natural language.

answering
K8s Lens
by firas-mcp-servers

MCP server for natural-language Kubernetes operations across single or multi-cluster environments.

94 installs/wk local only
Claude Code Conversation Search MCP
by tonysimonovsky

Search Claude Code conversation history with natural language queries across all projects

73 installs/wk local only
Airweave Search
by airweave-ai

MCP server for searching Airweave collections with natural language queries.

122 installs/wk answering
Knotrik — AppSheet Intelligence
by knotrik

Query and audit AppSheet apps in natural language via Knotrik's pre-scanned definitions.

answering
Microsoft MCP Server for Enterprise
by microsoft

Official Microsoft MCP Server to query Microsoft Entra data using natural language

answering
Dataassist Io
by dataassistio

Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.

answering
Q
Quanti
by quanti

Query BigQuery, Snowflake, Redshift & Azure Synapse with natural language

answering

DeepPVMapper — questions

Answers built from our own checks of this server.

What can DeepPVMapper do?
It exposes 17 tools, read directly from the server on our last check. Among them: aggregate_detection_capacity, count_detections, get_community_activity, get_community_activity_in_area, get_data_quality_reference, get_department_capacity_stats and 11 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is DeepPVMapper mostly used for?
Its tools cluster around department, field and detections. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is DeepPVMapper working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 92 of 92 checks got a reply (100.0%), average response time 317 ms. The bar chart above shows every period we have measured.
How do I connect DeepPVMapper?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does DeepPVMapper need an API key?
No. DeepPVMapper completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 17 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is DeepPVMapper?
It answers our handshake in 317 ms on average, which is faster than 45% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.
Is DeepPVMapper open source?
The code is open source: it is published under the MIT licence, written in Python, 39 stars on GitHub and 11 open issues. The licence covers the code in the repository, not the hosted service at zelhliylrlktnasircwp.supabase.co, which runs on its operator's own terms.