Faostat MCP Server
UnclaimedGlobal food & agriculture statistics from the UN FAOSTAT bulk-download corpus, served from a local SQLite mirror with a DataCanvas SQL surface, over MCP. STDIO & Streamable HTTP.
Install
docker run --rm -p 3010:3010 -v faostat-mirror:/usr/src/app/.faostat-mirror faostat-mcp-serverUnclaimed listing
Is this your MCP server?
This listing was auto-indexed from the public record. Claim it to edit the page, set compatibility and unlock growth tools. Takes under two minutes.
Claim this serverTools (13)
canvas_id
is optional on both tools — omit it to operate on the tables staged in the current session (the common case).
code
for an exact domain lookup (e.g. "RL") — one full record, without a topic search that can match unrelated domains
faostat_commodity_profile
Workflow: assemble top producers, the production trend, and trade flows for one commodity from the production and trade domains in a single call.
faostat_dataframe_describe
List the canvas tables staged this session, each with provenance, row count, and column schema.
faostat_dataframe_query
Run a read-only SQL SELECT against the canvas tables staged by the analytical tools.
faostat_list_domains
Discover FAOSTAT statistical domains with codes, descriptions, last-update date, upstream row count, and local index status. The entry point — every query keys on a domain code.
faostat_query_observations
Query a domain's cube by area(s), item(s), element(s), and year range. Inline preview for small results; large sets spill to a DataCanvas table.
faostat_resolve_codes
Resolve human terms to the opaque integer codes a query needs (areas, items, elements), flagging each area as a country or an aggregate region.
indexed_only
to list just the domains queryable from the local mirror
limit
caps the inline page (default 200, max 1000); a match that outgrows the page is staged to the canvas table in full, and when no table is staged the response reports how many matched — so a low limit trims the response without putting rows out of reach
offset
+ limit to page the catalog; the response reports totalMatches, truncated, and the nextOffset to resume at. Domain descriptions are long, so a browse call is bounded by default — raise limit (max 200) to pull the whole catalog in one response
Read-only.
Writes, DDL, DROP, COPY, PRAGMA, ATTACH, and external-file table functions are rejected by the framework SQL gate. System catalogs (informationschema, sqlitemaster, duckdb) are denied so a caller can't enumerate staged tables it doesn't hold a handle for — list them via faostatdataframedescribe.
topic
substring filter over code, name, and topic (e.g. "trade", "emissions", "QCL")