Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Venture Sproutscore

FreeNot checked

SproutScore public MCP server (Streamable HTTP): queryable NYC childcare-center inspection data for AI assistants. Data 2020-2023.

GitHubEmbed

About

SproutScore public MCP server (Streamable HTTP): queryable NYC childcare-center inspection data for AI assistants. Data 2020-2023.

README

Public, read-only Model Context Protocol (Streamable HTTP) access to NYC childcare-center inspection summaries — so AI assistants can answer "is this daycare safe?" with real city data.

Endpoint: POST https://mcp.sproutscore.mehyar.us/mcp (fallback: https://sproutscore-mcp.<account>.workers.dev/mcp) Usage doc: GET https://mcp.sproutscore.mehyar.us/

Data caveat (read this)

Inspection data covers 2020–2023 only (last city update 2023-04-24). The city has not published newer daycare inspection data since April 2023. Every tool description and response carries this caveat — never present results as current/live.

Violation plain-English decodes are AI-seeded and pending human review — not expert-verified.

Tools

Tool Args Returns
search_centers query (name substring), borough, limit (default 10, max 50) Matching centers: id, name, borough, address, inspection count, flagged count, SproutScore comparison grade (A–F vs NYC cohort average; "N/A" if <3 inspections)
get_center_report center_id (e.g. DC1000) Decoded summary: counts vs NYC cohort average (verdict + plain text), top violations in plain English with severity + inspection dates, statuses
decode_violation code (e.g. 47.41(j); family prefix like 47.33 returns a family-level decode) Plain-English meaning, severity tier (critical/major/minor), category, tour question. Unknown codes → clean unknown_violation_code error

All tools are read-only. No auth. No email, no payments, no PII collection.

Example requests

Initialize + list tools:

curl -X POST https://mcp.sproutscore.mehyar.us/mcp \
  -H 'Content-Type: application/json' -H 'Accept: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Search centers:

curl -X POST https://mcp.sproutscore.mehyar.us/mcp \
  -H 'Content-Type: application/json' -H 'Accept: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
       "params":{"name":"search_centers",
                 "arguments":{"query":"jackson","borough":"queens"}}}'

Center report:

curl -X POST https://mcp.sproutscore.mehyar.us/mcp \
  -H 'Content-Type: application/json' -H 'Accept: application/json' \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call",
       "params":{"name":"get_center_report",
                 "arguments":{"center_id":"DC3133"}}}'

Decode a violation:

curl -X POST https://mcp.sproutscore.mehyar.us/mcp \
  -H 'Content-Type: application/json' -H 'Accept: application/json' \
  -d '{"jsonrpc":"2.0","id":4,"method":"tools/call",
       "params":{"name":"decode_violation",
                 "arguments":{"code":"47.41(j)"}}}'

Example response (decode_violation → 47.41(j)):

{
  "jsonrpc": "2.0", "id": 4,
  "result": { "content": [{ "type": "text", "text": "{\n  \"level\": \"code\",\n  \"code\": \"47.41(j)\",\n  \"plain_english\": \"Floors/walls ceilings were not maintained; ...\",\n  \"severity\": \"minor\",\n  \"category\": \"Physical plant upkeep\",\n  \"tour_question\": \"...\",\n  \"decode_caveat\": \"Plain-English violation decodes are AI-seeded and pending human review - not expert-verified.\",\n  \"data_as_of\": \"2023-04-24\"\n}" }] }
}

Protocol notes

  • MCP Streamable HTTP: send JSON-RPC 2.0 to POST /mcp. initialize, tools/list, tools/call, ping supported.
  • Accept: application/json → JSON body; Accept: text/event-stream → SSE envelope.
  • Notifications (notifications/*) return 202 with no body.

Rate limiting

60 requests/minute per IP, enforced in the Worker (best-effort per edge location — a distributed flood across many locations can exceed it briefly). Exceeding it returns HTTP 429 with a JSON-RPC error and retry_after_seconds.

Regenerating the data pack

src/data.js and src/codes.js are generated from the SproutScore source bundles — never edit them by hand:

python3 pack.py   # reads ~/workspace/sproutscore/data/{centers,violation-translations}.json
python3 deploy.py # uploads worker + enables workers.dev + attaches custom domain

Source of truth: NYC DOHMH via NYC Open Data (dsg6-ifza), pulled 2026-09-19.

Layout

  • src/worker.js — MCP server (hand-written)
  • src/data.js — packed center aggregates (generated)
  • src/codes.js — trimmed violation translation table (generated)
  • pack.py — regenerable pack script
  • deploy.py — Cloudflare API deploy (no wrangler needed; deploys to the [email protected] account that owns the mehyar.us zone)

from github.com/mehyar500/venture-sproutscore-mcp

Installing Venture Sproutscore

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/mehyar500/venture-sproutscore-mcp

FAQ

Is Venture Sproutscore MCP free?

Yes, Venture Sproutscore MCP is free — one-click install via Unyly at no cost.

Does Venture Sproutscore need an API key?

No, Venture Sproutscore runs without API keys or environment variables.

Is Venture Sproutscore hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Venture Sproutscore in Claude Desktop, Claude Code or Cursor?

Open Venture Sproutscore on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Venture Sproutscore with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All ai MCPs