MCP server for US Treasury Fiscal Data β debt, interest rates, exchange rates, and spending.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Query US Treasury national debt, interest rates, exchange rates, and fiscal datasets via MCP.
Public Hosted Server: https://treasury-fiscaldata.caseyjhand.com/mcp
Five tools for querying the US Treasury Fiscal Data API, plus two for SQL analytics over DuckDB-backed DataCanvas dataframes:
| Tool | Description |
|---|---|
treasury_list_datasets | Browse the curated catalog of 17 Treasury Fiscal Data endpoints with field names, descriptions, and update cadence |
treasury_query_dataset | Query any Treasury Fiscal Data endpoint by path, field list, filters, sort, and page β with optional DataCanvas spill |
treasury_get_debt | Fetch national debt (Debt to the Penny) β latest record, specific date, or date-range series with optional DataCanvas spill |
treasury_get_interest_rates | Average interest rates Treasury pays on outstanding securities by type β marketable issues, non-marketable series, and aggregate totals |
treasury_get_exchange_rates | Official Treasury statutory exchange rates for ~165 countries, published quarterly |
treasury_dataframe_describe | List DataCanvas dataframes materialized by the treasury_* tools with schema, row count, and TTL |
treasury_dataframe_query | Run a single-statement SELECT against DataCanvas dataframes using standard DuckDB SQL |
treasury_list_datasetsBrowse the embedded catalog of available Treasury Fiscal Data endpoints. No network calls β serves from a static catalog bundled with the server.
debt, interest_rates, exchange_rates, revenue_spending, savings_bonds, securities, othertreasury_query_datasetbun run verify:catalog, so a dataset Treasury moves or renames fails a gate rather than reaching a callertreasury_query_datasetGeneric parameterized query against any Treasury Fiscal Data endpoint.
{ field, operator, value } where operator is eq, gt, gte, lt, lte, inpage_size (1β10000) and page_number- prefix (e.g. -record_date)"null" means no valuecanvas_id to stage the page as a DataCanvas table β the server assigns the name and returns it in canvas_id; read its schema with treasury_dataframe_describe, then SQL it with treasury_dataframe_query (requires CANVAS_PROVIDER_TYPE=duckdb)treasury_get_debtConvenience tool for national debt (Debt to the Penny) β total public debt outstanding broken into publicly-held debt and intragovernmental holdings.
mode=latest β most recent business-day recordmode=date β specific business day (YYYY-MM-DD; API only records debt on market-open days)mode=series β date range, sorted newest-first; auto-spills to DataCanvas when the series exceeds 500 rowstreasury_get_interest_ratesAverage interest rates the Treasury pays on outstanding securities. Updated monthly (end-of-month records).
security_type takes any security_desc value the data carries, matched exactly; which types Treasury publishes changes over the years, so when a filter matches nothing the response names the types the data does holdmode=latest β most recent month's rates for all or one security typemode=series β time-range history; auto-spills to DataCanvas when results exceed 200 rowstreasury_get_exchange_ratesOfficial Treasury statutory reporting exchange rates for ~165 countries, published quarterly (March 31, June 30, Sep 30, Dec 31).
mode=latest returns one row per currency β the operative rate, newest record_date and then newest effective_date, so an amended rate supersedes the one it replaced and a country holding two legal tenders keeps bothrecord_date with a later effective_date, so both dates ride every row; mixed_record_dates flags a result whose rows are not all from one quartermode=series auto-spills to DataCanvas when results exceed 500 rows (~19,000 rows full history, back to 2001-03-31)treasury_dataframe_describe / treasury_dataframe_queryIn-conversation SQL analytics over the dataframes that treasury_query_dataset, treasury_get_debt, treasury_get_interest_rates, and treasury_get_exchange_rates materialize on a shared DuckDB-backed DataCanvas. Each data-returning call with canvas_id adds a df_XXXXX_XXXXX handle; read its columns with treasury_dataframe_describe, then pass the handle to treasury_dataframe_query for joins, aggregates, window functions, and CTEs β standard DuckDB SQL.
information_schema, pg_catalog, sqlite_master, duckdb_*) are denied at the bridge layer.DECIMAL or DATE for arithmetic and date comparisons.register_as chaining. treasury_dataframe_query can persist its result as a new dataframe with a fresh TTL for multi-step analysis.CANVAS_TTL_MS).CANVAS_PROVIDER_TYPE=duckdb.Built on @cyanheads/mcp-ts-core:
none, jwt, oauthTreasury-specific:
treasury_query_dataset to access datasets not in the catalog.treasury_query_datasetdf_<id> dataframes queryable via DuckDB SQLAgent-friendly output:
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/treasury-fiscaldata-mcp-server)<a href="https://allmcps.com/mcp/treasury-fiscaldata-mcp-server"><img src="https://allmcps.com/api/badge/treasury-fiscaldata-mcp-server?style=directory" alt="Treasury Fiscaldata MCP Server on AllMCPs" /></a>