# io.github.LizzleChen/local-dfw-mcp (npm · local-dfw-mcp)

Your AI's DFW guide: events, appraisals, Dallas 311, crime, floods, schools, utilities, districts.

- Trust score: 68/100 (medium)
- Change this week: +18
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `local-dfw-mcp`: 68/100 (this document), [markdown](https://verifymcp.io/servers/lizzlechen-local-dfw-mcp/local-dfw-mcp.md), [page](https://verifymcp.io/servers/lizzlechen-local-dfw-mcp/local-dfw-mcp)

## Channel facts

- Registry: `npm`
- Package: `local-dfw-mcp`
- Version: `0.2.4`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 86/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 15 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 73/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 5314 tokens (~332/item across 16 items; 14 tools + 2 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (64% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add lizzlechen-local-dfw-mcp -- npx -y local-dfw-mcp
```

### Codex

```bash
codex mcp add lizzlechen-local-dfw-mcp -- npx -y local-dfw-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "lizzlechen-local-dfw-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "local-dfw-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add lizzlechen-local-dfw-mcp --command npx --arg -y --arg local-dfw-mcp
```

### Hermes

```yaml
mcp_servers:
  lizzlechen-local-dfw-mcp:
    command: "npx"
    args: ["-y", "local-dfw-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "lizzlechen-local-dfw-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "local-dfw-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 68, +4)

- [functional improvement] Stability: unverified → 0.27

### 2026-08-02 (score 64, +40)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Security disclosure: fail → unverified
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional] Licence: Apache-2.0

### 2026-07-31 (score 24, −26)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-27 (score 50)

First indexed and scored.

## MCP tools (14)

### `about` (~39 tokens)

Show information about this MCP server: name, version, coverage, data sources, license, and provenance. Always available. (via local-dfw-mcp)

### `dfw_health` (~159 tokens)

Diagnostic. Pings every upstream data provider this MCP depends on (Dallas Open Data, data.texas.gov, FEMA NFHL, PUC CCN, Dallas GIS, TxGIO StratMap, Census, NWS, CivicPlus city calendars, Ticketmaster, Fort Worth traffic accidents, Dallas ROW permits, TxDOT AADT/Projects, Fort Worth permits / code violations / crime data, McKinney code cases / permits (ArcGIS), Denton crime data (CKAN), Arlington permits / code complaints / ROW closures (ArcGIS)) in parallel with a 3.5s timeout and reports per-source status, HTTP code, and latency. Use when many tools return errors to tell which provider is down vs which tool is broken.

Output parameters:

- `checks` (array)
- `summary` (object)

### `dfw_311` (~266 tokens)

City of Dallas only (v0.1). Search Dallas 311 service requests by address and/or type. Types use the city's official names -- potholes are "street repair"; also "illegal dumping", "animal loose", "parking", "noise". Returns request number, type, department, status, dates, and council district. Use for neighborhood quality-of-life research. Authoritative source: City of Dallas Open Data.

Input parameters:

- `address` (string): Street address, contains-match. Example: "1500 Marilla St".
- `city` (string): Jurisdiction override. v0.1 covers "dallas" only; "auto" (default) resolves from the address.
- `cursor` (string): Opaque pagination cursor from a previous call.
- `limit` (integer): Max results (default 25).
- `service_type` (string): Contains-match on the official type name, e.g. "street repair" (= potholes), "illegal dumping", "animal loose".
- `since_year` (integer): Only requests created on/after this year. Defaults to 2 years back.
- `status` (string): "open" (New/In Progress/Escalated/On Hold), "closed", or an exact status like "In Progress".

Output parameters:

- `count` (integer): Number of results in this page.
- `nextCursor`: Opaque pagination cursor for the next page; null if no more results.
- `offset` (integer): Current page offset for pagination.
- `query`: Echo of the input filters.
- `results` (array): Result rows.

### `dfw_crime` (~408 tokens)

City of Dallas (default), Fort Worth (city="fortworth", v0.2), or Denton (city="denton", v0.3) -- no other city wired. Search police incidents by (block-level) address and/or offense type. Returns incident number, offense, date, premise (Dallas) or location type (Fort Worth) or agency (Denton), division/sector/beat (Dallas/Fort Worth), and status. Addresses are block-level (privacy-rounded upstream). NOT a consumer report — do not use for tenant, employment, or other FCRA-regulated screening. Sources: Dallas Police Department Open Data / City of Fort Worth Police Crime Data / City of Denton Police crime data (CKAN).

Input parameters:

- `address` (string): Block-level street address, contains-match. Example: "3400 Ladd St".
- `city` (string): Jurisdiction: "dallas" (default) queries Dallas PD (Socrata); "fortworth" (v0.2) queries Fort Worth PD Crime Data (ArcGIS); "denton" (v0.3) queries Denton PD crime data (CKAN, 2019-11-06 -> present);…
- `cursor` (string): Opaque pagination cursor from a previous call.
- `limit` (integer): Max results (default 25).
- `offense` (string): Free-text offense filter, e.g. "burglary", "theft", "assault".
- `since_date` (string): ISO date (YYYY-MM-DD); only incidents on/after it. Defaults to 90 days ago.

Output parameters:

- `count` (integer): Number of results in this page.
- `nextCursor`: Opaque pagination cursor for the next page; null if no more results.
- `offset` (integer): Current page offset for pagination.
- `query`: Echo of the input filters.
- `results` (array): Result rows.

### `dfw_permits` (~642 tokens)

Fort Worth (default), McKinney (city="mckinney", v0.3), or Arlington (city="arlington", v0.3) -- Dallas building-permit feeds are stale/dead and not wired (see project plan); do not claim Dallas coverage here. Search building/development permits. Fort Worth addresses are componentized upstream -- match on `street` (+ optional `addr_no`), not a one-line address. McKinney's source has NO DATE FIELD, so `address` is REQUIRED for city="mckinney" and results are ordered by case number (not strictly chronological), not File_Date. Arlington's `address` IS a single string (like McKinney), issued permits only. Returns permit number/ID, type, status, dates or filed-YYYY-MM (McKinney), address, and owner/job value (Fort Worth only). Sources: City of Fort Worth / McKinney / Arlington Open Data (ArcGIS).

Input parameters:

- `addr_no` (integer): Fort Worth only. House/building number (Addr_No), exact match. Combine with `street` to scope to one address.
- `address` (string): McKinney (REQUIRED for city="mckinney" -- the McKinney source has no date field, so browsing/newest-first listing is not possible there) or Arlington (optional). Contains-match against the permit add…
- `city` (string): Jurisdiction: "fortworth" (default), "mckinney" (v0.3), or "arlington" (v0.3) are wired; "dallas" is refused -- Dallas permit feeds are stale/dead, not covered (see project plan).
- `cursor` (string): Opaque pagination cursor from a previous call.
- `limit` (integer): Max results (default 25).
- `permit_type` (string): Free text, contains-match against Permit_Type / Permit_SubType / Permit_Category (Fort Worth), Work Class (McKinney), or FOLDERTYPE/WORKDESC (Arlington), e.g. "electrical", "residential building", "r…
- `since_date` (string): Fort Worth/Arlington. ISO date (YYYY-MM-DD); only permits filed/issued on/after it (File_Date / ISSUEDATE). Ignored (with a note) for city="mckinney", which has no date field. Omit for the most recen…
- `status` (string): Free text, contains-match against Current_Status (Fort Worth), ENT_STATUS (McKinney), or STATUSDESC (Arlington), e.g. "issued", "finaled", "in review".
- `street` (string): Fort Worth only. Street name only, contains-match against Street_Name (address is componentized -- do not include house number or suffix). Example: "Main", not "500 Main St".

Output parameters:

- `count` (integer): Number of results in this page.
- `nextCursor`: Opaque pagination cursor for the next page; null if no more results.
- `offset` (integer): Current page offset for pagination.
- `query`: Echo of the input filters.
- `results` (array): Result rows.

### `dfw_code_cases` (~427 tokens)

Fort Worth (default), McKinney (city="mckinney", v0.3), or Arlington (city="arlington", v0.3) -- Dallas's code-compliance publication stalled 2025-01-31 and is not wired (see project plan); do not claim Dallas coverage here. Search code-compliance (property maintenance / high grass / zoning / animal / solid waste, etc.) cases by address, complaint type, or status. Returns case ID, complaint type, status, created/updated/closed dates, and the assigned officer (Fort Worth/McKinney only). NOT a consumer report -- do not use for tenant, employment, or other FCRA-regulated screening. Sources: City of Fort Worth / McKinney / Arlington Open Data (ArcGIS).

Input parameters:

- `address` (string): Contains-match against the violation address (a single field for all three cities, e.g. "500 Main St" or just "Main St").
- `city` (string): Jurisdiction: "fortworth" (default), "mckinney" (v0.3), or "arlington" (v0.3) are wired; "dallas" is refused -- Dallas code-case publication stalled 2025-01-31, not covered (see project plan).
- `complaint_type` (string): Free text, contains-match against the complaint/case type, e.g. "high grass", "property maintenance", "zoning", "animal", "solid waste".
- `cursor` (string): Opaque pagination cursor from a previous call.
- `limit` (integer): Max results (default 25).
- `since_date` (string): ISO date (YYYY-MM-DD); only cases created/opened on/after it. Omit for the most recent cases regardless of date.
- `status` (string): Free text, contains-match against the case status, e.g. "open", "closed". Fort Worth uses a clean Open/Closed enum; McKinney/Arlington status text may vary.

Output parameters:

- `count` (integer): Number of results in this page.
- `nextCursor`: Opaque pagination cursor for the next page; null if no more results.
- `offset` (integer): Current page offset for pagination.
- `query`: Echo of the input filters.
- `results` (array): Result rows.

### `dfw_events` (~280 tokens)

Upcoming DFW events. Official city calendars (keyless): Dallas Parks & Rec ONLY (no citywide Dallas feed), Garland, Frisco, Mesquite, McKinney. Plus concerts/sports/theater metro-wide via Ticketmaster when DFW_TICKETMASTER_API_KEY is set. Filter by city, category, date range, free text. Other cities (Plano, Arlington, Fort Worth, Irving, ...) have no calendar feed -- say so rather than guessing.

Input parameters:

- `category` (string): "city" = official city calendars only; "concert"/"sports"/"theater" = Ticketmaster only (needs key); "all" (default) merges both tiers.
- `city` (string): City calendar to search; "all" (default) merges every covered city. "dallas" = Parks & Rec calendar only.
- `cursor` (string): Opaque pagination cursor from a previous call.
- `date_from` (string): Only events on/after this date (YYYY-MM-DD). Defaults to today for commercial events.
- `date_to` (string): Only events on/before this date (YYYY-MM-DD).
- `limit` (integer): Max results (default 25).
- `search` (string): Free-text filter on title/description/venue. Example: "farmers market", "Mavericks".

Output parameters:

- `count` (integer): Number of results in this page.
- `nextCursor`: Opaque pagination cursor for the next page; null if no more results.
- `offset` (integer): Current page offset for pagination.
- `query`: Echo of the input filters.
- `results` (array): Result rows.

### `dfw_fema_flood` (~213 tokens)

Look up the FEMA flood zone for a DFW address. Returns the zone code (A, AE, X, V, VE, etc.), Special Flood Hazard Area (SFHA) status, base flood elevation, and a plain-English risk + insurance interpretation (Zone A/AE/V require federal flood insurance). Long-term zone mapping only -- for weather alerts happening now use dfw_nws_alerts; for the property's value/owner use dfw_appraisal. Source: FEMA National Flood Hazard Layer (NFHL). Geocodes via U.S. Census.

Input parameters:

- `address` (string): Full address. Example: "1500 Marilla St Dallas TX 75201". Either address or lat+long required.
- `latitude` (number): Latitude (WGS-84). Use with longitude to skip geocoding — checks the flood zone at exactly this point.
- `longitude` (number): Longitude (WGS-84, negative in Texas). Use with latitude to skip geocoding.

### `dfw_tea_schools` (~255 tokens)

Texas public schools + TEA A-F accountability ratings (latest published: 2022-2023). Search by campus name, district, or county (e.g. DALLAS, TARRANT, COLLIN, DENTON). Returns overall rating, sub-scores (Student Achievement, School Progress, Closing the Gaps), enrollment, and demographics. Does NOT map an address to its assigned schools — attendance zones are managed by individual ISDs. To find which ISD an address is in, call dfw_district_lookup first, then filter here by that district. Source: Texas Education Agency.

Input parameters:

- `campus` (string): Campus name, contains-match. Example: "Booker T Washington", "Frisco HS".
- `county` (string): County name. Example: "DALLAS", "TARRANT", "COLLIN", "DENTON".
- `district` (string): District name, contains-match. Example: "Dallas ISD", "Frisco ISD", "Plano".
- `limit` (integer): Max results (default 25).
- `rating` (string): Filter by overall A-F rating.
- `school_type` (string): Filter by campus level.

Output parameters:

- `count` (integer): Number of results in this page.
- `nextCursor`: Opaque pagination cursor for the next page; null if no more results.
- `offset` (integer): Current page offset for pagination.
- `query`: Echo of the input filters.
- `results` (array): Result rows.

### `dfw_nws_alerts` (~177 tokens)

Active National Weather Service alerts (severe thunderstorm, tornado, flood, heat, freeze, fire weather) for a DFW location. Defaults to downtown Dallas when no address is supplied. Returns severity, urgency, headline, area, and expiration for each active alert covering the point. This is CURRENT alerts only -- for a property's long-term flood ZONE use dfw_fema_flood instead. Source: National Weather Service (api.weather.gov).

Input parameters:

- `address` (string): Street address to check (geocoded). Example: "1500 Marilla St Dallas TX". Defaults to downtown Dallas.
- `lat` (number): Latitude (WGS-84). Use with lng to skip geocoding.
- `lng` (number): Longitude (WGS-84). Use with lat to skip geocoding.

Output parameters:

- `count` (integer): Number of results in this page.
- `nextCursor`: Opaque pagination cursor for the next page; null if no more results.
- `offset` (integer): Current page offset for pagination.
- `query`: Echo of the input filters.
- `results` (array): Result rows.

### `dfw_utility_providers` (~139 tokens)

Find the WATER and SEWER (wastewater) utility obligated to serve a DFW address — the 'who turns on my water' question. DFW is a patchwork of cities, MUDs/WCIDs, water-supply corporations, and private utilities. Returns the certificated (CCN) provider for the exact point. Source: Texas PUC Certificate of Convenience and Necessity boundaries. Covers all of Texas. Does NOT start service — it tells you who to contact.

Input parameters:

- `address` (string, required): Street address in DFW. Example: "6801 Warren Pkwy, Frisco TX 75034".

### `dfw_district_lookup` (~165 tokens)

Given a DFW street address, returns the districts/jurisdictions it falls in: county (all 4 core counties), City of Dallas council district + council member (City of Dallas only), whether it is inside City of Dallas limits, and school district (ISD). Call this FIRST for an unfamiliar address: it tells you whether the City-of-Dallas-only tools (dfw_311, dfw_crime's default path) apply, and its ISD feeds dfw_tea_schools' district filter. Pipeline: U.S. Census geocoder → point-in-polygon against Dallas GIS and statewide Texas ArcGIS layers.

Input parameters:

- `address` (string, required): Full street address. Example: "1500 Marilla St Dallas TX 75201".

### `dfw_appraisal` (~245 tokens)

Look up the county appraisal-district record for a DFW address (Texas statewide; DFW's 4 core counties verified): owner, appraised land / improvement / market value from the 2025 certified appraisal roll, year built, land use, acreage. Appraised value is NOT a tax bill. Not a consumer report — not for FCRA-regulated (tenant/employment) screening. Source: TxGIO StratMap (county appraisal data).

Input parameters:

- `address` (string): Full address. Example: "1500 Marilla St Dallas TX 75201". Either address or latitude+longitude required. Geocoding lands in the street right-of-way, so a single hit can occasionally be the NEIGHBOR's…
- `latitude` (number): Latitude (WGS-84). Use with longitude to skip geocoding. Place the point on the building rooftop, not the street centerline — the parcel lookup is point-in-polygon.
- `longitude` (number): Longitude (WGS-84, negative in Texas). Use with latitude to skip geocoding.

### `dfw_traffic` (~366 tokens)

DFW-area traffic: real-time incidents (Fort Worth only), street/lane closures from right-of-way permits (Dallas + Arlington, merged and labeled by city), TxDOT annual traffic counts (AADT) by county, and TxDOT highway construction projects by county. Counties: Dallas, Tarrant, Collin, Denton. Default kind=all merges live incidents+closures only (counts/projects need an explicit kind). Arlington closures are ordered approximately (permit-ID sequence, flagged in notes) -- its source publishes no per-record date.

Input parameters:

- `city` (string): Scopes incidents (fortworth only) / closures (dallas or arlington). Omit with kind="closures" to merge both cities (each result is labeled with its `city`). With kind="all", narrows the merge to just…
- `county` (string): Scopes counts/projects to one of the 4 core counties; omit to query all four.
- `cursor` (string): Opaque pagination cursor from a previous call.
- `kind` (string): "incidents" (Fort Worth), "closures" (Dallas + Arlington ROW permits, merged), "counts" (TxDOT AADT), "projects" (TxDOT construction), or "all" (default: merges incidents+closures only).
- `limit` (integer): Max results (default 25).
- `search` (string): Free text: matches street/cross-street/address for incidents, address/location for closures (Arlington also matches its ScopeOfWork/Segment free-text fields, which do not reliably carry an address),…

Output parameters:

- `count` (integer): Number of results in this page.
- `nextCursor`: Opaque pagination cursor for the next page; null if no more results.
- `offset` (integer): Current page offset for pagination.
- `query`: Echo of the input filters.
- `results` (array): Result rows.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/lizzlechen-local-dfw-mcp/local-dfw-mcp#diagnostics

## Score history

- 2026-08-03: 68
- 2026-08-02: 64
- 2026-08-01: 24
- 2026-07-31: 24
- 2026-07-30: 50
- 2026-07-28: 50
- 2026-07-27: 50

## Links

- npm package: https://www.npmjs.com/package/local-dfw-mcp
- Socket report: https://socket.dev/npm/package/local-dfw-mcp
- Repository: https://github.com/LizzleChen/local-dfw-mcp
- Changelog RSS feed: https://verifymcp.io/servers/lizzlechen-local-dfw-mcp/local-dfw-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/lizzlechen-local-dfw-mcp/local-dfw-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/lizzlechen-local-dfw-mcp/local-dfw-mcp
