socrata-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SOCRATA_APP_TOKEN | No | Sent as X-App-Token; raises portal rate limits. | |
| SOCRATA_MCP_TIMEOUT | No | Per-request timeout in seconds. | 30 |
| SOCRATA_MCP_MAX_ROWS | No | Hard row cap for inline query results. | 5000 |
| SOCRATA_MCP_CACHE_DIR | No | Disk cache root. | ~/.socrata-mcp/cache |
| SOCRATA_MCP_PAGE_SIZE | No | Rows fetched per HTTP request. | 1000 |
| SOCRATA_MCP_QUERY_TTL | No | Seconds to cache query/profile results (0 disables). | 3600 |
| SOCRATA_MCP_CATALOG_TTL | No | Seconds to cache catalog searches. | 300 |
| SOCRATA_MCP_METADATA_TTL | No | Seconds to cache dataset metadata. | 300 |
| SOCRATA_MCP_DEFAULT_LIMIT | No | Rows returned when a query gives no limit. | 100 |
| SOCRATA_MCP_MAX_EXPORT_ROWS | No | Hard row cap for CSV exports. | 1000000 |
| SOCRATA_MCP_THROTTLE_INTERVAL | No | Minimum seconds between portal requests. | 0.2 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_datasetsA | Search open-data catalogs for datasets (Socrata Discovery API). Args: query: Full-text search, e.g. "crime reports" or "building permits". domain: Restrict to one portal, e.g. "data.seattle.gov". category: Portal category, e.g. "Public Safety". limit: Max results (default 20, cap 100). offset: Pagination offset into the result set. Returns: {results: [{id, name, domain, description, updated_at, category, permalink}], count, total, offset}. Use each result's domain + id with the other tools. |
| get_datasetA | Dataset metadata: columns with types, row count, update cadence, license. Args: domain: Portal hostname, e.g. "data.seattle.gov". dataset_id: Socrata 4x4 id, e.g. "tazs-3rd5". Returns: {name, description, columns: [{field_name, name, type, description}], row_count, license, attribution, created_at, data_updated_at, update_frequency, tags, source_url}. Use columns' field_name values in query/profile calls. |
| queryA | Query a dataset with structured SoQL parameters OR one raw SoQL string. Structured mode (recommended): pass any of select/where/group/order/
limit/offset plus optional geo filters. Raw mode: pass Args: domain: Portal hostname, e.g. "data.seattle.gov". dataset_id: Socrata 4x4 id, e.g. "tazs-3rd5". select: Columns/expressions, e.g. ["offense", "count(*) as n"]. where: SoQL filter, e.g. "offense_date > '2026-06-01T00:00:00'". group: GROUP BY columns (pair with aggregate select expressions). order: e.g. "offense_date DESC". Defaults to ":id" for stable paging. limit: Max rows returned (default 100, hard cap applies). offset: Row offset for pagination. soql: Raw SoQL query — mutually exclusive with all structured params. within_circle: {field, lat, lon, radius_m} geo filter on a point column. within_box: {field, nw_lat, nw_lon, se_lat, se_lon} geo filter. Returns:
{rows, row_count, truncated, query: {params, effective_limit, clamped}}.
|
| profile_datasetA | Profile every column: null rate, distinct count, min/max, top values. Computed portal-side via aggregate SoQL — the dataset is never downloaded. Dates and numbers get min/max (numbers also avg); low-cardinality text columns get their top 10 values with counts. Args: domain: Portal hostname, e.g. "data.seattle.gov". dataset_id: Socrata 4x4 id, e.g. "tazs-3rd5". Returns: {row_count, columns: [{field_name, type, null_rate, non_null_count, distinct_count, min?, max?, avg?, top_values?, error?}], notes}. |
| sampleA | Fetch the first n rows of a dataset (n capped at 100). Args: domain: Portal hostname, e.g. "data.seattle.gov". dataset_id: Socrata 4x4 id, e.g. "tazs-3rd5". n: Number of rows (default 10, max 100). Returns: {rows, row_count, note}. Rows are in :id order — a peek at real values, not a random sample. |
| export_csvA | Export query results to a Tableau-ready CSV via streamed, paged download. Accepts the same query parameters as Args:
domain: Portal hostname, e.g. "data.seattle.gov".
dataset_id: Socrata 4x4 id, e.g. "tazs-3rd5".
out_path: Destination .csv path (parent directories are created).
select/where/group/order/limit/soql/within_circle/within_box: as in Returns: {path, rows_written, truncated, columns, notes}. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jcscocca/socrata-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server