azerbaijan-mcp-azstat
MCP server for the State Statistical Committee of Azerbaijan (azstat.gov.az). It searches the Committee's statistical tables (about 1,800 in 31 topics: population, labour market, education, prices, trade and more) and reads their data through the Committee's open data API: no API key, no scraping.
Tools
| Tool | What it does |
|---|---|
list_topics(lang?) |
The 31 topics with their table counts. |
search_tables(query?, topic?, limit?, offset?, lang?) |
Searches table titles and descriptions. Every word must appear and title matches rank first. Without a query it lists the tables of a topic. |
describe_table(table_id, category_query?, lang?) |
What a table holds: description, periods, units and each dimension's categories. category_query finds the exact category names. |
get_table_data(table_id, period_from?, period_to?, where?, limit?, offset?, lang?) |
Rows in long format. where filters categories, for example {"Indicator": "Total population"}. limit is 1-500 (default 50) and next_offset pages on. |
A typical question, "what was the population of Azerbaijan in 2023?", takes search_tables("population"),
then describe_table("DT_AA_001"), then
get_table_data("DT_AA_001", period_from=2023, where={"Indicator": "Total population"}).
Things worth knowing:
langisenoraz; the API offers no other. Titles, categories and the words searched are in that language. Accents are ignored, sogelirfindsgəlir.- Data is in long format, one row per period and category combination.
columnsnames the cells:period, one column per dimension,value, andsymbolandunitwhen rows have them. Periods are written2023for years and202603for months. A nested category readsparent > child. - A
nullvalue with asymbol(seen:-and...) means the Committee published the symbol instead of a number. The symbol is returned as published, not interpreted. Many tables give their unit only in the title. - The API has no filters, so a table is read whole and cut here. At most 20 MB per table is read (a
larger one returns
statustoo_large), and it is cached for 30 minutes. The largest table in the sample checked was 9 MB. - Some tables seem to leave out a dimension. In a sample of 26 tables, 2 had several values for the
same period and categories with nothing to tell them apart. For those,
get_table_datareturnsstatusambiguous, no rows and the link to the table on the Committee's site;describe_tablestill shows what they hold.
Install
Add to your MCP client configuration (requires uv):
{
"mcpServers": {
"azstat": {
"command": "uvx",
"args": ["azerbaijan-mcp-azstat"]
}
}
}
In Claude Code: claude mcp add azstat -- uvx azerbaijan-mcp-azstat.
One optional setting goes in the client's env:
| Variable | Default | Meaning |
|---|---|---|
AZSTAT_API_BASE |
https://www.azstat.gov.az/AsisOpenDataApi |
API base URL, https only. |
Data source and terms
The data is published by the State Statistical Committee at https://www.azstat.gov.az. This server
reads its open data API, the tables and data actions of AsisOpenDataApi. The API has no public
documentation (no documentation page answers at the usual paths), so a live contract test pins the
shape of its answers. Answers to the checklist in the repository's
data policy, read on 2026-11-01:
- Terms: the Committee's own pages state no terms for the API and ask users to cite the source. The
national open data portal, opendata.az, lists
AsisOpenDataApiaddresses among the files of 1,426 of the Committee's 1,662 datasets there, and all 1,662 carry the CC0 licence. Its FAQ (https://opendata.az/page/faq, updated 8 April 2025) defines open data as data anyone can access, use and share again, and tells developers they can build applications on the data and the API. - robots.txt: none is published (
www.azstat.gov.az/robots.txtanswers 404). - Attribution: every response has
sourceandattributionfields and the link to the table's page. Cite the Committee when you use the numbers. - Rate limit and cache: the User-Agent is
azerbaijan-mcp-azstat/<version>, with at most one request per second, one retry for network errors and 5xx, and a stop on 403 or 429. The table list is cached for an hour and each table for 30 minutes. - Personal data: none. The tables are aggregate statistics.
- Publisher contacted: no.
- Decision: go, as an official, read-only API.
Unofficial project, not affiliated with or endorsed by the State Statistical Committee.
tests/fixtures/ holds trimmed copies of real answers from the API; DT_AA_001 and DT_BE_119 are
whole.
Metadata
Release files for azerbaijan-mcp-azstat 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| azerbaijan_mcp_azstat-0.1.0.tar.gz | 47.3 kB | With provenance | Details for azerbaijan_mcp_azstat-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| azerbaijan_mcp_azstat-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for azerbaijan_mcp_azstat-0.1.0-py3-none-any.whl |
Total release size: 65.4 kB
Release files / azerbaijan_mcp_azstat-0.1.0.tar.gz
| Download URL | azerbaijan_mcp_azstat-0.1.0.tar.gz |
|---|---|
| Size | 47.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b0e8a342e212817db0f4515d6a67209154a07353d95f6728f4586c31ac7123ab
|
|
BLAKE2b-256 checksum How to use checksums |
969699b882a2a4b613b4a625a1021116b454260359e7a61b40a2b44dc35bbae7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / azerbaijan_mcp_azstat-0.1.0-py3-none-any.whl
| Download URL | azerbaijan_mcp_azstat-0.1.0-py3-none-any.whl |
|---|---|
| Size | 18.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
61198ea3744496fc46704708f32e41e35ac8f2a63eb6f8d10afebb7a276b04d0
|
|
BLAKE2b-256 checksum How to use checksums |
8a1593abf6bcd18c0691ad88328ea6f6fe6cf247e06d4dc1ee0c6be4d2434bc1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logSecurity for azerbaijan-mcp-azstat 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for azerbaijan_mcp_azstat-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.