Skip to main content
Glama
seattle-open-data

seattle-open-data

seattle-open-data

CI Python License: MIT

An agent-friendly MCP server for Seattle Open Data (Socrata SODA2).

WARNING

This project is deprecated and no longer maintained. It has been superseded by opendata-atlas, which covers Seattle Open Data and other Socrata portals. Please switch to it. 0.2.1 is the final release.

Status: deprecated (0.2.1). All four tools work against the live portal, with curated guides for seven flagship datasets. See evals/results for the agent evaluation.

Tools

Tool

Purpose

seattle_data_search_datasets

Find datasets by topic

seattle_data_describe_dataset

Columns, row count, time coverage, place fields, geo columns

seattle_data_query_dataset

Bounded reads and aggregates (SoQL clauses or raw SoQL)

seattle_data_get_reference

Capability summary, SoQL help, guides, error catalog

Related MCP server: data-seattle

Install

The server runs over stdio. The uvx commands below need uv.

Claude Desktop: download seattle-open-data-<version>.mcpb from the latest release and open it with Claude Desktop.

Claude Code:

claude mcp add seattle-open-data -- uvx seattle-open-data

Codex:

codex mcp add seattle-open-data -- uvx seattle-open-data

Any other MCP client: run uvx seattle-open-data as a stdio server:

{
  "mcpServers": {
    "seattle-open-data": { "command": "uvx", "args": ["seattle-open-data"] }
  }
}

Optional app token: set SOCRATA_APP_TOKEN to use a Socrata application token, for example claude mcp add seattle-open-data -e SOCRATA_APP_TOKEN=... -- uvx seattle-open-data. The bundle asks for it in Claude Desktop's settings. A rejected token is reported as app_token_rejected, never silently dropped.

Develop

From a checkout:

uv sync
uv run seattle-open-data                                  # run the server over stdio
uv run pytest
uv run ruff check && uv run ruff format --check && uv run ty check
UPDATE_SNAPSHOTS=1 uv run pytest tests/test_contract.py   # after an intended tool-surface change
uv run pytest --run-integration -m integration            # live tests against data.seattle.gov
uv run python evals/run.py [--host claude|codex] <out_dir> [task_id ...]
uv run python evals/report.py <out_dir> --answers

To build the MCPB bundle locally (needs the mcpb CLI): make mcpb.

Release

Tag vX.Y.Z after bumping the version: the release workflow builds and smoke-tests the wheel, sdist, and .mcpb, publishes to PyPI after maintainer approval, and attaches all three to a GitHub Release. See docs/releasing.md for the steps, the TestPyPI rehearsal, and one-time setup.

License

MIT

Available Tools

4 tools
seattle_data_describe_datasetSeattle Data Describe DatasetA
Read-only

Decide whether and how to query a dataset: columns, live row count, data_coverage (actual time range), place fields for "in " questions (with reliability), and geo columns for near.

Call before querying a dataset whose columns you do not know. For area questions, use detail="full". Filter a place field on its value, never its label; an area may span several values. Example: {"dataset_id": "kzjm-xkqj", "detail": "full"}. Typically 1-3 s; fails with query_timeout after 30 s.

Inputs: dataset_id (required), detail, sample_rows, column_query. Returns: title, source, columns, guide_uri, +11 more

seattle_data_get_referenceSeattle Data Get ReferenceA
Read-only

Read the server's reference: capability summary, SoQL help, dataset guides, and the full error catalog. Call with no arguments for the index.

Example: {"topic": "soql", "item_id": "dates"}.

Inputs: topic, item_id. Returns: uri, body, title, topic, +4 more

seattle_data_query_datasetSeattle Data Query DatasetA
Read-only

Run a bounded read or aggregate on one dataset; paging stops at 10,000 rows.

For counts and breakdowns, use count() with group_by, not row paging. With cursor, send only dataset_id, cursor, and optionally page_size or detail. For all rows, give the user download_url (detail="full") instead of paging. Example: {"dataset_id": "kzjm-xkqj", "select": ["type", "count() AS n"], "group_by": ["type"], "order_by": ["n DESC"]}. Typically 1-5 s; fails with query_timeout after 30 s.

Inputs: dataset_id (required), mode, near, soql, +9 more. Returns: rows, source, columns, has_more, +13 more

seattle_data_search_datasetsSeattle Data Search DatasetsA
Read-only

Find Seattle datasets by topic. Call first when you lack a dataset id.

Results are candidates: match_evidence lists the query words each one's metadata lacks. Only queryability "supported" can be described or queried; a tabular search also returns up to 3 external_matches, which cannot. Example: {"query": "fire 911"}. Typically 1-3 s.

Inputs: query, cursor, detail, category, +2 more. Returns: source, datasets, has_more, suggestion, +4 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.6/5.0

    Scored across 4 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: search for datasets, describe a specific dataset's metadata, access server-wide reference documentation, and query a dataset. The descriptions clearly delineate when to use each, with no overlapping functionality.

    Naming Consistency5/5

    All tools follow the consistent pattern seattle_data_<verb>_<noun> (search_datasets, describe_dataset, get_reference, query_dataset). The verbs are distinct but appropriate, and the naming is predictable and readable.

    Tool Count5/5

    Four tools are well-scoped for a read-only open data query service, covering discovery, metadata inspection, reference, and query execution without redundancy. Each tool earns its place.

    Completeness4/5

    The toolset covers the core workflow: search datasets, describe schema, query data, and access reference help. A minor gap is the lack of a tool to list all datasets without a topic query, but this is a minor limitation in an otherwise complete surface for the domain.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI agents to query and retrieve San Francisco open data from data.sfgov.org via the Socrata SODA API.
      164 npm
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Provides access to Cincinnati open data via the Socrata SODA API, allowing users to query datasets using natural language or direct tool calls.
      153 npm
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables searching and querying Orlando Open Data datasets via Socrata SoQL, providing access to metadata and data rows through natural language or direct tool calls.
      147 npm
      MIT