meta-data-mcp 2.3.2__tar.gz → 2.3.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/PKG-INFO +1 -1
- meta_data_mcp-2.3.3/meta_data_mcp/__init__.py +1 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/server.py +88 -16
- meta_data_mcp-2.3.2/meta_data_mcp/__init__.py +0 -1
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/.gitignore +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/AUTHORS +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/LICENSE +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/README.md +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/cli.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/client.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/discovery/__init__.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/discovery/loader.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/discovery/state.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/errors.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/fields.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/health.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/oauth_provider.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/provenance.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/provider_config.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/__init__.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/__template__.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/au_data_gov.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/ca_open_gov.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/cern_opendata.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/ch_sbb.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/de_db.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/eu_copernicus.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/eu_ecb.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/eu_eurostat.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/fr_data_gouv.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_arxiv.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_bgpview.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_coingecko.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_crossref.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_dbnomics.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_disease_sh.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_epss.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_europepmc.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_faostat.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_frankfurter.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_gbif.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_gdelt.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_imf.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_inaturalist.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_met_museum.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_nvd_cve.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_oecd.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_open_library.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_open_meteo.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_openalex.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_openaq.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_opensanctions.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_opensky.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_osm_nominatim.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_osv_dev.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_overpass.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_pubchem.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_rcsb_pdb.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_ripe_stat.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_un_comtrade.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_unesco_heritage.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_who_gho.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_wikidata.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_wikipedia.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_world_bank.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/meta_data_mcp.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/nl_cbs.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/nl_ndov.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/nl_rechtspraak.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/nl_tweedekamer.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/sg_data_gov.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/uk_gov.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/uk_legislation.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/uk_ons.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_arcgis_item.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_cary.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_cdc_socrata.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_census_geocoder.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_cisa_kev.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_clinicaltrials.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_courtlistener.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_data_gov.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_faa_nasstatus.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_fayetteville.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_fda_openfda.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_federal_register.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_healthdata_gov.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_nasa.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_nc_onemap.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_ncdeq_gis.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_noaa_awc.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_noaa_ncei.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_noaa_tides.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_raleigh.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_sec_edgar.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_treasury_fiscal.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/us_usgs_earthquake.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/registry.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/routing.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/sdk/__init__.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/sdk/remote.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/serialize.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/transport.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/__init__.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_discovery_v1.html +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_discovery_v1.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_entity_graph_v1.html +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_entity_graph_v1.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_molecular_v1.html +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_molecular_v1.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_museum_v1.html +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_museum_v1.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_network_topology_v1.html +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_network_topology_v1.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_news_tone_v1.html +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_news_tone_v1.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_trade_flows_v1.html +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_trade_flows_v1.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_vulnerability_v1.html +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_vulnerability_v1.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/shape_geofeatures_v1.html +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/shape_geofeatures_v1.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/shape_records_v1.html +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/shape_records_v1.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/shape_timeseries_v1.html +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/shape_timeseries_v1.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/utils.py +0 -0
- {meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/pyproject.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meta-data-mcp
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.3
|
|
4
4
|
Summary: MCP server exposing 60+ open data providers to LLM clients via intelligent metadata routing.
|
|
5
5
|
Project-URL: Homepage, https://github.com/derekslinz/meta-data-mcp
|
|
6
6
|
Project-URL: Repository, https://github.com/derekslinz/meta-data-mcp
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.3.3"
|
|
@@ -281,11 +281,13 @@ class BearerAuthMiddleware:
|
|
|
281
281
|
token: str | None = None,
|
|
282
282
|
protected_prefixes: Sequence[str] = ("/sse", "/messages"),
|
|
283
283
|
oauth_provider: Any = None,
|
|
284
|
+
resource_metadata_url: str | None = None,
|
|
284
285
|
) -> None:
|
|
285
286
|
self.app = app
|
|
286
287
|
self.token = token
|
|
287
288
|
self.protected_prefixes = tuple(protected_prefixes)
|
|
288
289
|
self.oauth_provider = oauth_provider
|
|
290
|
+
self.resource_metadata_url = resource_metadata_url
|
|
289
291
|
|
|
290
292
|
async def __call__(self, scope: dict, receive: Callable, send: Callable) -> None:
|
|
291
293
|
if scope.get("type") != "http" or not any(
|
|
@@ -320,10 +322,18 @@ class BearerAuthMiddleware:
|
|
|
320
322
|
|
|
321
323
|
from starlette.responses import JSONResponse
|
|
322
324
|
|
|
325
|
+
if self.resource_metadata_url:
|
|
326
|
+
www_auth = (
|
|
327
|
+
f'Bearer realm="meta-data-mcp",'
|
|
328
|
+
f' resource_metadata="{self.resource_metadata_url}"'
|
|
329
|
+
)
|
|
330
|
+
else:
|
|
331
|
+
www_auth = 'Bearer realm="meta-data-mcp"'
|
|
332
|
+
|
|
323
333
|
response = JSONResponse(
|
|
324
334
|
{"error": "unauthorized"},
|
|
325
335
|
status_code=401,
|
|
326
|
-
headers={"WWW-Authenticate":
|
|
336
|
+
headers={"WWW-Authenticate": www_auth},
|
|
327
337
|
)
|
|
328
338
|
await response(scope, receive, send)
|
|
329
339
|
|
|
@@ -353,24 +363,38 @@ async def run_server(
|
|
|
353
363
|
from starlette.responses import JSONResponse
|
|
354
364
|
from starlette.routing import Mount, Route
|
|
355
365
|
|
|
366
|
+
from contextlib import asynccontextmanager
|
|
367
|
+
|
|
368
|
+
from mcp.server.streamable_http_manager import StreamableHTTPSessionManager
|
|
369
|
+
|
|
356
370
|
sse = SseServerTransport("/messages")
|
|
371
|
+
streamable_manager = StreamableHTTPSessionManager(server, stateless=True)
|
|
357
372
|
|
|
358
373
|
class SseApp:
|
|
359
374
|
async def __call__(self, scope, receive, send):
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
)
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
375
|
+
method = scope.get("method", "").upper()
|
|
376
|
+
if method == "POST":
|
|
377
|
+
# StreamableHTTP transport — used by Claude.ai and newer clients.
|
|
378
|
+
await streamable_manager.handle_request(scope, receive, send)
|
|
379
|
+
else:
|
|
380
|
+
# Traditional SSE transport — GET /sse → long-lived event stream.
|
|
381
|
+
log.info(f"New SSE connection from {scope.get('client')}")
|
|
382
|
+
try:
|
|
383
|
+
async with sse.connect_sse(scope, receive, send) as streams:
|
|
384
|
+
await server.run(
|
|
385
|
+
streams[0],
|
|
386
|
+
streams[1],
|
|
387
|
+
server.create_initialization_options(),
|
|
388
|
+
)
|
|
389
|
+
except Exception as e:
|
|
390
|
+
log.debug(f"SSE connection error: {e}")
|
|
391
|
+
finally:
|
|
392
|
+
log.info("SSE connection closed")
|
|
393
|
+
|
|
394
|
+
@asynccontextmanager
|
|
395
|
+
async def lifespan(_app):
|
|
396
|
+
async with streamable_manager.run():
|
|
397
|
+
yield
|
|
374
398
|
|
|
375
399
|
async def root(request):
|
|
376
400
|
return JSONResponse(
|
|
@@ -552,6 +576,44 @@ async def run_server(
|
|
|
552
576
|
default_scopes=["opendata"],
|
|
553
577
|
),
|
|
554
578
|
)
|
|
579
|
+
|
|
580
|
+
# The MCP SDK hardcodes token_endpoint_auth_methods_supported to
|
|
581
|
+
# ["client_secret_post", "client_secret_basic"], omitting "none".
|
|
582
|
+
# Claude's OAuth client checks this list and refuses to proceed for
|
|
583
|
+
# public clients (PKCE-only, no secret) when "none" is missing.
|
|
584
|
+
# Override the well-known endpoint with a corrected copy before
|
|
585
|
+
# the SDK's route so Starlette's first-match wins.
|
|
586
|
+
_issuer_base = str(validated_oauth_issuer).rstrip("/")
|
|
587
|
+
|
|
588
|
+
async def patched_oauth_metadata(request: Request) -> JSONResponse:
|
|
589
|
+
payload = {
|
|
590
|
+
"issuer": str(validated_oauth_issuer),
|
|
591
|
+
"authorization_endpoint": f"{_issuer_base}/authorize",
|
|
592
|
+
"token_endpoint": f"{_issuer_base}/token",
|
|
593
|
+
"registration_endpoint": f"{_issuer_base}/register",
|
|
594
|
+
"scopes_supported": ["opendata"],
|
|
595
|
+
"response_types_supported": ["code"],
|
|
596
|
+
"grant_types_supported": [
|
|
597
|
+
"authorization_code",
|
|
598
|
+
"refresh_token",
|
|
599
|
+
],
|
|
600
|
+
"token_endpoint_auth_methods_supported": [
|
|
601
|
+
"client_secret_post",
|
|
602
|
+
"client_secret_basic",
|
|
603
|
+
"none",
|
|
604
|
+
],
|
|
605
|
+
"code_challenge_methods_supported": ["S256"],
|
|
606
|
+
}
|
|
607
|
+
return JSONResponse(
|
|
608
|
+
payload,
|
|
609
|
+
headers={
|
|
610
|
+
"Access-Control-Allow-Origin": "*",
|
|
611
|
+
"Access-Control-Allow-Methods": "GET, OPTIONS",
|
|
612
|
+
"Access-Control-Allow-Headers": "Content-Type, Authorization",
|
|
613
|
+
"Cache-Control": "no-store",
|
|
614
|
+
},
|
|
615
|
+
)
|
|
616
|
+
|
|
555
617
|
from starlette.responses import RedirectResponse as _RedirectResponse
|
|
556
618
|
|
|
557
619
|
async def oidc_discovery(_request):
|
|
@@ -560,7 +622,16 @@ async def run_server(
|
|
|
560
622
|
)
|
|
561
623
|
|
|
562
624
|
extra_routes = (
|
|
563
|
-
|
|
625
|
+
[
|
|
626
|
+
# Must precede oauth_routes so Starlette's first-match wins:
|
|
627
|
+
# the SDK hardcodes "none" out of token_endpoint_auth_methods_supported.
|
|
628
|
+
Route(
|
|
629
|
+
"/.well-known/oauth-authorization-server",
|
|
630
|
+
endpoint=patched_oauth_metadata,
|
|
631
|
+
methods=["GET", "OPTIONS"],
|
|
632
|
+
),
|
|
633
|
+
]
|
|
634
|
+
+ protected_resource_routes
|
|
564
635
|
+ oauth_routes
|
|
565
636
|
+ [
|
|
566
637
|
Route(
|
|
@@ -580,6 +651,7 @@ async def run_server(
|
|
|
580
651
|
|
|
581
652
|
app = Starlette(
|
|
582
653
|
debug=False,
|
|
654
|
+
lifespan=lifespan,
|
|
583
655
|
routes=[
|
|
584
656
|
Route("/", endpoint=root),
|
|
585
657
|
Route("/sse", endpoint=SseApp()),
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2.3.2"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/providers/global_unesco_heritage.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_discovery_v1.html
RENAMED
|
File without changes
|
|
File without changes
|
{meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_entity_graph_v1.html
RENAMED
|
File without changes
|
{meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_entity_graph_v1.py
RENAMED
|
File without changes
|
{meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_molecular_v1.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_network_topology_v1.html
RENAMED
|
File without changes
|
{meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_network_topology_v1.py
RENAMED
|
File without changes
|
{meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_news_tone_v1.html
RENAMED
|
File without changes
|
|
File without changes
|
{meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_trade_flows_v1.html
RENAMED
|
File without changes
|
{meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_trade_flows_v1.py
RENAMED
|
File without changes
|
{meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_vulnerability_v1.html
RENAMED
|
File without changes
|
{meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/app_vulnerability_v1.py
RENAMED
|
File without changes
|
{meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/shape_geofeatures_v1.html
RENAMED
|
File without changes
|
{meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/shape_geofeatures_v1.py
RENAMED
|
File without changes
|
{meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/shape_records_v1.html
RENAMED
|
File without changes
|
|
File without changes
|
{meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/shape_timeseries_v1.html
RENAMED
|
File without changes
|
{meta_data_mcp-2.3.2 → meta_data_mcp-2.3.3}/meta_data_mcp/ui_resources/shape_timeseries_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|