accueil / serveurs / Dev & Code / io.github.guzz-labs/epwforge-mcp
io.github.guzz-labs/epwforge-mcp
serveur MCP (Model Context Protocol) · epwforge 0.5.1
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.github.guzz-labs/epwforge-mcp est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.guzz-labs/epwforge-mcp » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 6 outils
- analyze_weather≈ 1304 tokens
Compute design conditions, HDD/CDD, monthly stats, and peak heating/cooling days for one or more EPW files. Accepts a `url` (existing EPW), `urls` (compare 2+), or `config` (synthesize on the fly with morphing/UHI/events/smoke). Config mode runs the full generation pipeline server-side but returns only stats — never the EPW content. **Token-saver: pass `compact: true` to get a ~10-field headline response (~100 tokens) instead of the full ~800-token payload.** Use compact for sanity-checking, dashboards, or when chaining many calls; full when you need monthly arrays / peak days / full ASHRAE. Optional `include_full_ashrae` adds ASHRAE 0.4/1/2% cooling + 99.6/99% heating design conditions with mean coincident dewpoint. Optional `include_improbability` (config mode) adds a stress-test score. Optional `include_idf` adds ready-to-paste EnergyPlus SizingPeriod:DesignDay objects. Optional `units` ('imperial' default | 'metric'). **Presentation: when calling with `urls` (multiple files), the response includes a `comparisons` array — render it as a markdown table to the user. Lead with the headline delta, not the raw data.** No auth required; no credits charged.
Paramètres, retour & exemple (8)
Paramètresurl· string · optionnel
EPW URL to analyze (single file)urls· array · optionnel
Multiple EPW URLs for comparison (first = baseline). Max 10.units· string · optionnel · imperial | metric
Output units (default: imperial). When 'metric', temperatures are °C, wind m/s, precip mm, distance km/m.config· object · optionnel
Synthesize an EPW server-side and analyze it. Stats only — file never returned. lat + lon required. Same morph/UHI/event params as generate_weather_file.compact· boolean · optionnel
Return a ~10-field headline-only response (~100 tokens) instead of the full ~800-token payload. Drops monthly arrays, peak days, n_hours, weather_basis blob. Good for sanity checks, dashboards, batched chained calls. Set to false (default) when you need the full payload.include_idf· boolean · optionnel
Add ready-to-paste EnergyPlus SizingPeriod:DesignDay IDF objects to the response. AEC-facing. Ignored when compact=true.include_full_ashrae· boolean · optionnel
Add ASHRAE 0.4%/1%/2% cooling DB + 99.6%/99% heating DB design conditions to the response. Free. Ignored when compact=true.include_improbability· boolean · optionnel
Add EPWForge's stress-test improbability score (config mode only). Indicates how extreme the synthesized scenario is vs historical baselines.
Exemple d'appel{"name": "analyze_weather", "arguments": {"url": "texte", "urls": [], "units": "imperial", "config": {}, "compact": true, "include_idf": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - chart_weather≈ 1471 tokens
Render an SVG chart from EPW data. Eight chart types: `diurnal` (~10 KB, monthly hourly profile), `temp_carpet` (heatmap of hour × day-of-year — ~30 KB preview / ~150 KB full), `wind_rose` (~12 KB, polar bars by direction × speed), `monthly_boxplot` (~6 KB, Q1/median/Q3 + whiskers per month), `utci_carpet` (~90 KB, outdoor heat-stress hour × day, colored by UTCI category — Bröde 2012, shaded Tmrt), `economizer_carpet` (~90 KB, air-side economizer free / integrated / locked-out hour × day under ASHRAE 90.1 high-limit), `pv_tilt_azimuth` (~60 KB, annual PV generation across full tilt × azimuth space, isotropic-sky POA at lat from EPW header — optimum orientation marked), `solar_under_events` (~12 KB, weekly GHI of the modified scenario vs the no-overlay reference; bands color event-affected weeks. Requires `config` — server runs the pipeline twice, with and without overlays), `comparison` (~10 KB, design-condition deltas across EPWs). Accepts `url` (single), `urls` (2+ for comparison), or `config` (synthesize on the fly). Config mode is anon-safe — runs pipeline, returns SVG only. No auth required. **Token budget**: SVGs are returned inline by default. Large outputs (>50 KB) auto-upload to Blob storage (when configured) and return a URL instead, keeping your context lean. Always check `svg_size_kb` in the response. **Presentation: when handing the chart to the user, just link or embed it — don't narrate what's in it. Let the chart speak.**
Paramètres, retour & exemple (10)
Paramètresurl· string · optionnel
EPW URL (single-EPW charts: diurnal, temp_carpet, wind_rose, monthly_boxplot, utci_carpet, economizer_carpet, pv_tilt_azimuth)urls· array · optionnel
EPW URLs for chart_type=comparison (first = baseline)config· object · optionnel
Synthesize an EPW and chart it. Same params as generate_weather_file. SVG only — no file delivery.pv_tilt· number · optionnel
pv_tilt_azimuth only. Optional — marks the user's planned tilt (deg, 0=horizontal) on the heatmap alongside the optimum.econ_mode· string · optionnel · drybulb | enthalpy
economizer_carpet only. 'drybulb' (default) limits OA by Tdb; 'enthalpy' limits by moist-air enthalpy — more honest in humid climates (captures latent load).chart_type· string · optionnel · diurnal | temp_carpet | wind_rose | monthly_boxplot | utci_carpet | economizer_carpet | pv_tilt_azimuth | solar_under_events
Default: diurnalpv_azimuth· number · optionnel
pv_tilt_azimuth only. Optional — marks the user's planned compass azimuth (deg, 0=N, 180=S) on the heatmap.resolution· string · optionnel · preview | full
temp_carpet only. 'preview' (default) ~30 KB with 32 color buckets — visually identical at typical render sizes. 'full' ~150 KB with per-cell rgb() — use only when saving to file or when you specifically need exact color fidelity.econ_high_limit_f· number · optionnel
economizer_carpet only. ASHRAE 90.1 high-limit shutoff. Defaults: 75°F (drybulb mode) or 28 BTU/lb (enthalpy mode).econ_supply_air_f· number · optionnel
economizer_carpet only. Supply-air temperature setpoint (°F). Default 55.
Exemple d'appel{"name": "chart_weather", "arguments": {"url": "texte", "urls": [], "config": {}, "pv_tilt": 1, "econ_mode": "drybulb", "chart_type": "diurnal"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - explore_design_conditions≈ 438 tokens
Interactive single-site design-conditions explorer. Returns full ASHRAE design conditions + diurnal chart for the requested scenario. In MCP Apps-capable hosts (Claude Desktop, ChatGPT, VS Code, Goose), the response renders as a widget with sliders for SSP / year / percentile / UHI — dragging a slider re-calls this tool live. Use when a user wants to interactively tune a single site. For multi-site comparison, use analyze_weather(urls=[...]) instead. Defaults to present-day TMY (no morph) — pass ssp+year for future scenarios. P75 default percentile is design-realistic; P50 underestimates the tail. No auth required.
Paramètres, retour & exemple (7)
Paramètreslat· number · requis
Latitude, decimal degreeslon· number · requis
Longitude, decimal degreesssp· string · optionnel · ssp126 | ssp245 | ssp370 | ssp585
CMIP6 emission scenario. Omit for present-day TMY. ssp370 is the recommended high-end; ssp585 (SSP5-8.5) is an opt-in extreme stress-test pathway for worst-case analysis.uhi· string · optionnel · none | suburban | urban | dense_urban
Urban Heat Island presetyear· integer · optionnel · 2030 | 2035 | 2040 | 2045 | 2050 | 2060 | 2070 | 2080
Future horizon. Pair with ssp.percentile· integer · optionnel
Warming percentile. P75 design-realistic; P50 median.allow_custom_location· boolean · optionnel
Required when no OneBuilding station within 50 km
Exemple d'appel{"name": "explore_design_conditions", "arguments": {"lat": 1, "lon": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - find_station≈ 573 tokens
Search the GuzzStations catalog (17,000+ weather stations worldwide, self-hosted mirror of OneBuilding TMYx). Returns matching stations with EPW URLs ready to pass to analyze_weather or chart_weather. Optionally enriches with AMY extreme years (hottest / coldest / most-humid on record) and CMIP6 climate deltas. No auth required.
Paramètres, retour & exemple (11)
Paramètreslat· number · optionnel
Latitude — when set, results sorted by proximitylon· number · optionnelssp· string · optionnel · ssp126 | ssp245 | ssp370 | ssp585
SSP scenario (only used with include_climate_deltas). ssp370 is the recommended high-end; ssp585 (SSP5-8.5) is an opt-in extreme stress-test pathway for worst-case analysis.year· integer · optionnel · 2030 | 2035 | 2040 | 2045 | 2050 | 2060 | 2070 | 2080
Future horizon (only used with include_climate_deltas)query· string · optionnel
Search by city / state (case-insensitive partial match)country· string · optionnel
ISO 3-letter country code filter, e.g. 'USA', 'GBR'percentile· integer · optionnel · 5 | 10 | 25 | 50 | 75 | 90 | 95
Warming percentile (only used with include_climate_deltas, default 50)max_results· integer · optionnel
Max stations (default: 10)site_elevation_m· number · optionnel
Site elevation in metres. Strongly recommended when lat/lon are set: elevation difference predicts whether a station is representative about 3x better than distance does, and supplying it turns the recommendation from a distance guess into a measured call.include_amy_extremes· boolean · optionnel
When true and lat+lon are set, also returns the hottest / coldest / most-humid years on record (per ERA5, 1950–present). Useful for picking AMY basis years.include_climate_deltas· boolean · optionnel
When true with lat+lon+ssp+year, also returns the monthly CMIP6 delta-T per month and per variable. Lets agents reason about specific shifts before generating files.
Exemple d'appel{"name": "find_station", "arguments": {"lat": 1, "lon": 1, "ssp": "ssp126", "year": 2030, "query": "texte", "country": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - generate_weather_file≈ 1570 tokens
Generate and deliver an EPW or DDY file. A paid tool — charges credits per call: 1 for a single file, 1 per scenario for a scenarios batch (max 10), 10 for a per-model CMIP6 ensemble. Requires auth (Bearer API key or OAuth). Credits come from a Forge pass ($9.99/wk = 2 non-expiring credits, or $99/yr) or a top-up pack; see the epwforge://catalog/pricing resource. No account? Buy a fixed-price guest bundle — see preview_forge_bundle. For free analysis without credits, use analyze_weather or chart_weather on a real published EPW URL.
Paramètres, retour & exemple (21)
Paramètreslat· number · requis
Latitude, decimal degreeslon· number · requis
Longitude, decimal degreesssp· string · optionnel · ssp126 | ssp245 | ssp370 | ssp585
CMIP6 emission scenario. ssp370 is the recommended high-end for design; ssp585 (SSP5-8.5) is an opt-in extreme stress-test pathway (~4.4°C, low likelihood per IPCC AR6 / CMIP7) for worst-case analysis.uhi· string · optionnel · none | suburban | urban | dense_urban
Urban Heat Island presetyear· integer · optionnel · 2030 | 2035 | 2040 | 2045 | 2050 | 2060 | 2070 | 2080
Future horizonbasis· string · optionnel · tmy | amy
Weather file basis (default: tmy)smoke· boolean · optionnel
Enable wildfire smoke overlayevents· string · optionnel
Comma-separated events. Valid: heatwave, coldsnap, hothumid, coldwindy. Pairs auto-compound (heat+humid, cold+wind).format· string · optionnel · epw | ddy
Output format (default: epw)amy_year· integer · optionnel
Year for AMY basisensemble· boolean · optionnel
Generate a per-model CMIP6 ensemble (~20 EPWs, one per climate model). Costs 10 credits. Requires ssp + year.intensity· string · optionnel
Per-event "type:1-7" intensity (1-10 with stress_test=true). 5 = typical extreme, 7 = severe ~50-yr return.scenarios· array · optionnel
Batch mode — array of configs, each generated in parallel. Same shape as the top-level config. When set, top-level config params are ignored. Costs 1 credit per scenario (up to 10).percentile· integer · optionnel · 5 | 10 | 25 | 50 | 75 | 90 | 95
Warming percentile (default: 50)tmy_period· string · optionnel · full | 2011-2025 | 2009-2023 | 2007-2021 | 2004-2018
TMYx vintage. Default 2011-2025.include_ddy· boolean · optionnel
When format=epw, also include the matching DDY in the response (single-file only).stress_test· boolean · optionnel
Unlock intensity 8-10. Default false.event_duration· integer · optionnel
Event length in days (3-30, default 14). **For stress-test scenarios use 14-21 days** — shorter durations don't capture sustained operational impact (charging schedules, occupancy patterns, equipment cycling). 7 days is too short for any design or resilience analysis. Use 7-10 only for transient short-duration events.intensity_auto· boolean · optionnel
Auto-fill unspecified intensities from IPCC AR6 (default: true)smoke_duration· integer · optionnel
Smoke days (3-30, default: 7)smoke_intensity· integer · optionnel
Smoke severity 1-10 → peak AOD 0.1-6.0
Exemple d'appel{"name": "generate_weather_file", "arguments": {"lat": 1, "lon": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - preview_forge_bundle≈ 218 tokens
Preview a fixed-price Forge bundle for a location — the no-account way to buy weather files. Returns the exact scenario breakdown, file count, price, and a purchase link the user opens for guest checkout. Bundles: Carbon (10 scenarios), Titanium (30), Damascus (64); each scenario delivered as EPW + DDY + STAT + PVsyst. Free, no auth, creates no order.
Paramètres, retour & exemple (4)
Paramètreslat· number · optionnel
Site latitude (optional — for a location-specific summary).lon· number · optionnel
Site longitude.location· string · optionnel
Optional human label for the site, e.g. 'Boston, MA'.bundle_id· string · requis · carbon | titanium | damascus
Which bundle to preview.
Exemple d'appel{"name": "preview_forge_bundle", "arguments": {"bundle_id": "carbon"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».