The NYC budget MCP server
An MCP server lets an AI assistant, such as Claude, look things up in real data instead of guessing. Ours, @betanyc/nyc-budget-mcp, answers questions about the Council's discretionary funding and capital money, and gives the source of every row. It is built from the same data as the Council explorer on this site, and a test checks that the two agree.
The City agency budgets on this site are not in the MCP server yet.
Set it up
You need Node 22 or newer. Add this to your MCP client's settings (Claude Desktop, Claude Code, and others), then restart the client:
"mcpServers": {
"nyc-budget": {
"command": "npx",
"args": ["-y", "@betanyc/nyc-budget-mcp@2"]
}
}
Four of the tools answer from the tables we read from the Council's budget PDFs. Those tables are a separate, one-time download (about 17 MB). Run this once in a terminal:
npx @betanyc/nyc-budget-mcp download --pdf-tables
Until then, those four tools reply with that command instead of data. The README has the full setup and every option, and the changelog lists what changed in each version.
What it can answer
You don't call the tools by name. Ask your assistant the question, and it picks the tool.
| Tool | What it answers | Example question |
|---|---|---|
search_disclosure_awards | The Council's list of discretionary expense awards (the expense funding disclosure): by organization, EIN, Council member, funding source, agency, ZIP, status, or amount. | “How much Council discretionary funding did EIN 13-2612524 get in FY2026, cleared vs. pending?” |
search_council_capital | The capital projects the Council funded, by budget line, sponsor, borough, or title. | “Which Bronx capital projects did the Council fund in FY2027?” |
compare_capital_to_omb | For each capital budget line, the Council's total next to OMB's adopted capital budget, with a verdict: match, differ, or only on one side. | “Which Council capital budget lines in FY2026 don't match OMB's adopted budget?” |
list_available_fiscal_years | What each fiscal year holds, where it came from, which years are missing, and whether the PDF tables are installed. | “Which years does the budget tool cover?” |
search_schedule_c_awardsneeds the PDF tables | Schedule C: the discretionary awards as printed in the adopted budget, by organization, EIN, member, initiative, agency, or purpose. | “Which Digital Inclusion awards in the FY2027 adopted budget went through the Fund for the City of New York?” |
search_transparency_changesneeds the PDF tables | The transparency resolutions: designations, rescissions, and purpose changes made after the budget was adopted. | “What transparency resolution changes in FY2026 involved this organization?” |
search_capital_bookneeds the PDF tables | The capital book (the §254 supporting detail, Parts I and II). | “What does the FY2025 capital book list for budget line PV CT001?” |
search_terms_conditionsneeds the PDF tables | Terms and Conditions: the reports the budget requires agencies to make. | “What reports does the FY2027 budget require from the Department of Education?” |
Years it covers
| Data | Years | Gaps |
|---|---|---|
| Expense funding disclosure | FY2009, FY2011–FY2027 | FY2010 is not included, because the Council's own file for that year is missing rows that NYC Open Data has, and we never mix the two. FY2009 and FY2013 are early snapshots, so their Cleared totals are not headline figures. |
| Council capital designations | FY2015–FY2017, FY2019–FY2027 | FY2018 is in no source found. |
| Council vs. OMB capital | FY2019–FY2027 | |
| Schedule C (PDF tables) | FY2018–FY2027 | |
| Transparency resolutions (PDF tables) | FY2018–FY2026 | |
| Capital book (PDF tables) | FY2018–FY2020, FY2022–FY2027 | |
| Terms and Conditions (PDF tables) | FY2018, FY2021–FY2027 |
The PDF tables are "checked, review in progress": the reader's output passed its checks, and people are still working through the review. FY2017 and earlier are not re-read yet. The About page explains how they are checked.
How to cite an answer
- Disclosure figures: name the fiscal year and the Council workbook it came from; every answer lists it. Use the Cleared total as the headline, and only when the answer labels it a headline.
- PDF-table figures: every row gives its PDF page and a link to the row in the Council explorer. Cite the page or the explorer view, and say "checked, review in progress".
- Searches by name: a name search finds only the rows whose text matches, so write "at least". Search by EIN where you can.
Our other MCP servers
BetaNYC maintains a set of open-source MCP servers for NYC and New York State civic data. The full directory, with install details for each, is on beta.nyc: AI tools for NYC's democracy.
- nyc-checkbook-mcp
- NYC Checkbook: spending, contracts, budget, payroll, and revenue. Pairs with this server: follow an organization's money by EIN. GitHub · npm
- nyc-council-mcp
- NYC Council legislation from Legistar: bills, sponsors, votes, and the resolutions that adopt and change the budget. GitHub · npm
- nyc-record-mcp
- NYC City Record notices, from NYC Open Data. GitHub · npm
- nyc-311-mcp
- The NYC 311 Public API: the city-services calendar, status alerts, and 311 service-request lookup. GitHub · npm
- nys-openlegislation-mcp
- New York State legislation, from the NYS Open Legislation API. GitHub · npm
- ny-data-registry-mcp
- Finds open data across every New York portal in BetaNYC's registry: which portal covers a place, how to query it, and what datasets and columns exist. GitHub · npm
- mta-mcp
- NYC subway service alerts and elevator and escalator outages, from the MTA's public feeds. Early (alpha); build it from source, it is not on npm. GitHub
Built something with these? Tell us, and we may share it in our newsletter. Something wrong? Report a problem.