Safe Biter MCP connector

Safe Bite serves official restaurant health inspection records for six U.S. cities. The public website is safebiter.com. This page documents the Model Context Protocol (MCP) server only.

Endpoint: https://www.safebiter.com/mcp
Transport: Streamable HTTP (POST JSON-RPC 2.0)
Authentication: None required
Privacy: /privacy

Connect

  1. In Claude, Cursor, or MCP Inspector, add a remote MCP server with URL https://www.safebiter.com/mcp.
  2. Use POST with Accept: application/json, text/event-stream (hosts that render MCP Apps need the event stream).
  3. Call tools/list, then tools/call with the tool names below.

Hosts that support MCP Apps render an inline restaurant card or map. The card lists violation types only; do not quote inspector narratives, temperatures, or long comment text from raw records.

Supported cities

Tool arguments use lowercase slugs: chicago, nyc, minneapolis, milwaukee, austin, denver, or all where noted.

SlugCityOfficial sourceWebsite vs MCP
chicagoChicagoCity of Chicago Open Data (CDPH Food Inspections)Last 4 weeks only on the website map; MCP tools search the full stored dataset.
nycNew YorkNYC Department of Health (DOHMH)Last 4 weeks only on the website map; MCP tools search the full stored dataset.
minneapolisMinneapolisCity of Minneapolis Health DepartmentLast 90 days only on the website map; MCP tools search the full stored dataset.
milwaukeeMilwaukeeCity of Milwaukee Health DepartmentLast 6 months only on the website map; MCP tools search the full stored dataset.
austinAustinCity of Austin Public HealthLast 4 months only on the website map; MCP tools search the full stored dataset.
denverDenverDenver Dept. of Public Health & Environment (Accela ePermits)Last 6 months only on the website map; MCP tools search the full stored dataset.

Data refresh

Production data is stored in PostgreSQL and refreshed from the city sources above.

Tools

Every tool below returns an MCP App result (restaurant card or map) when the host supports UI resources. Tool metadata lives in tools/list; this section is the human-readable reference.

show_inspection

Primary tool for natural-language questions. Pass a restaurant name for a card, or a violation keyword plus city for a map (for example pest inspections in Milwaukee). Parameters: query, violation, city (required for violation maps), view (auto, card, map), limit (1–12).

search_restaurants

Fuzzy name search. Parameters: query (required), optional city (all or a slug), limit (1–50), threshold (0–1 match strictness), history_n recent inspections per match (1–20).

find_nearby_restaurants

Restaurants within a radius of a point or address. Provide latitude and longitude, or address (geocoded when coordinates are omitted). Optional radius_miles (default 0.25), city, limit (1–100), history_n.

get_city_inspections

Worst recent inspections in one city, ranked for the MCP App card. Parameters: city (required), limit (1–500, use 500 for a wide window), offset for paging (see Pagination).

get_milwaukee_inspections

Same as get_city_inspections but fixed to Milwaukee. Parameters: limit, offset.

MCP resources (JSON pagination)

Besides tools, the server exposes read-only resources such as safe-bite://chicago/inspections (and the same pattern for each city slug), plus safe-bite://all/violations for cross-city violation summaries. Use resources/read with optional query parameters on the URI:

The JSON body includes a pagination object:

When has_more is true, the response may include a second content item whose URI is the next page. Default limit is 500; maximum is 500.

Tool pagination vs resources

Example prompts

Troubleshooting

SymptomWhat to check
405 Use POST for MCPCall /mcp with POST, not GET.
Empty card or “no data”Confirm city slug spelling; try search_restaurants with a partial name; database may still be loading after deploy.
No inline UI, only textHost may not support MCP Apps; use a client that implements io.modelcontextprotocol/ui.
Geocode errors on nearby searchSupply explicit latitude / longitude instead of address.
Stale datesCompare with the official city portal in the table above; daily refresh cannot exceed city publication.
CORS errors in InspectorInspector should call the public URL directly; preflight OPTIONS is supported.

Results are official public records repackaged for reading. They are not a health inspection Safe Biter performed, and they are not advice about whether to eat somewhere.

Questions: vangilder.andrew@gmail.com.