accueil / serveurs / Données & BDD / io.github.cyanheads/socrata-mcp-server
io.github.cyanheads/socrata-mcp-server
serveur MCP (Model Context Protocol) · socrata-mcp-server 0.2.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.cyanheads/socrata-mcp-server est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.cyanheads/socrata-mcp-server » 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
- socrata_dataframe_describe≈ 892 tokens
List registered tables in a DataCanvas session — schema, row count, and column names. Shows what datasets are available for SQL queries via socrata_dataframe_query. Only meaningful when CANVAS_PROVIDER_TYPE=duckdb is set. Use after socrata_query_dataset spills a large result set to canvas.
Paramètres, retour & exemple (1)
Paramètrescanvas_id· string · optionnel
Canvas ID returned by socrata_query_dataset when a large result spills to canvas. Required in practice when canvas is enabled — canvases cannot be enumerated, so omitting it fails with canvas_id_required instead of listing tables.
Exemple d'appel{"name": "socrata_dataframe_describe", "arguments": {"canvas_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"error": {}, "notice": "texte", "tables": [], "canvas_id": "texte"}} - socrata_dataframe_query≈ 960 tokens
Run SELECT-only SQL against a DataCanvas table populated by socrata_query_dataset. Columns SODA types as number (including aggregate aliases like count(*) as n) are staged as DOUBLE, so numeric comparisons work without a cast (year > 2020, amount < 500). Text and timestamp columns stay VARCHAR — compare times with CAST(date AS TIMESTAMP). Only works when CANVAS_PROVIDER_TYPE=duckdb is set. Use socrata_dataframe_describe to see registered tables and their schemas.
Paramètres, retour & exemple (3)
Paramètressql· string · requis
SELECT-only SQL to run against registered canvas tables. DDL, DML, and file-reading functions are rejected. Use table names from socrata_dataframe_describe.limit· integer · optionnel
Max rows to return (1–10000). Default 1000.canvas_id· string · requis
Canvas ID returned from socrata_query_dataset or socrata_dataframe_describe.
Exemple d'appel{"name": "socrata_dataframe_query", "arguments": {"sql": "texte", "canvas_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cap": 1, "sql": "texte", "rows": [], "error": {}, "shown": 1, "notice": "texte", "canvas_id": "texte", "row_count": 1, "truncated": true}} - socrata_find_datasets≈ 1342 tokens
Search for datasets across all Socrata-powered government open-data portals, or scope to one portal with the domain parameter. Returns dataset IDs, names, domains, update timestamps, and column_names — the API field names SoQL takes, not display labels. Use socrata_get_dataset to fetch the typed column schema before writing queries — column_names carry no type information.
Paramètres, retour & exemple (8)
Paramètresonly· string · optionnel · datasets | maps | files | calendars | stories
Filter by asset type. Omit to include all types. Usually "datasets" is what you want.tags· array · optionnel
Filter by tags (e.g. ["covid19", "permits"]).limit· integer · optionnel
Number of results to return (1–100). Default 10.order· string · optionnel · relevance | page_views_total | created_at | updated_at
Sort order. Defaults to relevance. Use updated_at to surface recently-refreshed datasets.query· string · optionnel
Full-text search across dataset names and descriptions. Omit to browse without filtering.domain· string · optionnel
Scope search to a single portal by bare hostname (e.g. data.seattle.gov, data.cityofnewyork.us); URL forms like https://data.seattle.gov/ are accepted and reduced to the host. Omit to search all portals.offset· integer · optionnel
Pagination offset. Default 0.categories· array · optionnel
Filter by domain categories (e.g. ["Public Safety", "Transportation"]).
Exemple d'appel{"name": "socrata_find_datasets", "arguments": {"only": "datasets", "tags": [], "limit": 1, "order": "relevance", "query": "texte", "domain": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"error": {}, "notice": "texte", "results": [], "totalCount": 1, "effectiveQuery": "texte"}} - socrata_get_dataset≈ 1302 tokens
Fetch full metadata and column schema for a Socrata dataset by ID. Returns field names, data types, descriptions, row count, and licensing. Always call this before writing a socrata_query_dataset — the column types determine correct WHERE clause syntax: Number columns accept bare literals (year=2023) while Text columns require single-quoted strings (year='2023').
Paramètres, retour & exemple (2)
Paramètresdomain· string · optionnel
Portal the dataset lives on, as a bare hostname (e.g. data.cityofnewyork.us); URL forms like https://data.cityofnewyork.us/ are accepted and reduced to the host. Pass the domain from the same socrata_find_datasets result as dataset_id. Defaults to SOCRATA_DEFAULT_DOMAIN or data.seattle.gov, which is wrong for another portal’s ID.dataset_id· string · requis
Four-by-four dataset ID matching pattern like kzjm-xkqj. IDs are portal-scoped: take it from socrata_find_datasets together with that result’s domain.
Exemple d'appel{"name": "socrata_get_dataset", "arguments": {"dataset_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "tags": [], "error": {}, "domain": "texte", "columns": [], "license": "texte", "category": "texte", "row_count": 1, "dataset_id": "texte", "description": "texte", "data_updated_at": "texte", "row_count_source": "top_level_cached_contents"}} - socrata_list_portals≈ 814 tokens
List known Socrata-powered government open-data portals with their domain, organization name, and approximate dataset count. The catalog is a curated list of 39 well-known portals; dataset counts are fetched from the Discovery API and cached for ~24 hours. Filtering is client-side substring match on the query parameter. Use this first when you do not know which portal to target, then pass the domain to socrata_find_datasets.
Paramètres, retour & exemple (3)
Paramètreslimit· integer · optionnel
Max portals to return (1–200). Default 50.query· string · optionnel
Keyword to filter portal names or organization names (case-insensitive substring match). Omit to list all portals.offset· integer · optionnel
Pagination offset. Default 0.
Exemple d'appel{"name": "socrata_list_portals", "arguments": {"limit": 1, "query": "texte", "offset": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"error": {}, "notice": "texte", "portals": [], "totalCount": 1}} - socrata_query_dataset≈ 2122 tokens
Execute a SoQL query against any dataset on any Socrata portal. Use the search parameter for quick full-text lookup, or combine select/where/group/having/order for full analytical control. Returns rows plus the assembled SoQL string so you can learn the pattern. Columns are referenced by API field name (field_name from socrata_get_dataset, e.g. cuisine_description), never the display label. All SODA 2.1 row values are strings even for numeric columns — check data_type from socrata_get_dataset to determine correct WHERE quoting: Number columns use bare literals (year=2023), Text columns use single-quoted strings (year='2023'). To enumerate distinct values, use select="col, count(*) as n" with group="col" and order="n DESC". When CANVAS_PROVIDER_TYPE=duckdb and rows fill limit, up to 50,000 matching rows spill to a DataCanvas table whatever the limit: list its columns with socrata_dataframe_describe, then run SQL with socrata_dataframe_query.
Paramètres, retour & exemple (11)
Paramètresgroup· string · optionnel
SoQL GROUP BY clause over API field names (field_name from socrata_get_dataset). Requires an aggregate function in select.limit· integer · optionnel
Max rows to return (1–5000). Default 100. Use with offset for pagination. When the canvas is enabled and the page fills limit, up to 50,000 matching rows are staged on it whatever the limit — pass a small limit (e.g. 10) to stage a large match without a large inline page.order· string · optionnel
SoQL ORDER BY clause over API field names or select aliases, e.g. "total_deaths DESC" or "date ASC".where· string · optionnel
SoQL WHERE clause over API field names (field_name from socrata_get_dataset). Check column data_type there first — Number columns: year=2023, Text columns: year='2023'; an unquoted text value is read as a column name. Operators: =, !=, >, <, LIKE, IN(...), BETWEEN, IS NULL, starts_with(), contains(), AND, OR, NOT.domain· string · optionnel
Portal the dataset lives on, as a bare hostname (e.g. data.cityofnewyork.us); URL forms like https://data.cityofnewyork.us/ are accepted and reduced to the host. Pass the domain from the same socrata_find_datasets result as dataset_id. Defaults to SOCRATA_DEFAULT_DOMAIN or data.seattle.gov, which is wrong for another portal’s ID.having· string · optionnel
SoQL HAVING clause. Filters on aggregated results, e.g. count > 100.offset· integer · optionnel
Row offset for pagination. Default 0.search· string · optionnel
Full-text search across all text columns ($q). For field-specific filtering, use where instead.select· string · optionnel
SoQL SELECT clause — API field names (field_name from socrata_get_dataset, not display labels), aliases, aggregates: "state, sum(deaths) as total_deaths". Omit for all columns.canvas_id· string · optionnel
Optional 10-char DataCanvas token from a prior socrata_query_dataset or socrata_dataframe_describe call. Omit on first call when CANVAS_PROVIDER_TYPE=duckdb to mint a fresh canvas. Large result sets spill here automatically.dataset_id· string · requis
Four-by-four dataset ID (e.g. kzjm-xkqj). IDs are portal-scoped: take it from socrata_find_datasets together with that result’s domain.
Exemple d'appel{"name": "socrata_query_dataset", "arguments": {"dataset_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cap": 1, "rows": [], "error": {}, "shown": 1, "domain": "texte", "notice": "texte", "canvas_id": "texte", "row_count": 1, "truncated": true, "dataset_id": "texte", "table_name": "texte", "total_count": 1}}
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é ».