Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
KIRA_HOSTNoHost interface for the HTTP transport. Set to 0.0.0.0 to listen on all interfaces.127.0.0.1
KIRA_PORTNoPort for the HTTP transport when KIRA_TRANSPORT=http.8000
KIRA_TRANSPORTNoTransport mode for the MCP server: 'stdio' or 'http'. Defaults to stdio.stdio
KIRA_CACHE_TTL_SECONDSNoIn-process cache TTL in seconds for DOSM queries. Set 0 to disable.3600
KIRA_RATE_LIMIT_PER_MINUTENoPer-client-IP rate limit for the HTTP transport (requests per minute). Set 0 to disable.60

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
find_seriesA

Find candidate series for a natural-language question about Malaysian official statistics. Returns ranked candidates, each with a one-line reason for the match — always call this before get_series if you don't already have a series id.

A curated KIRA series is not the only source of truth here: this only searches the ~20 series KIRA has registered so far, a small fraction of what DOSM actually publishes (open.dosm.gov.my/data-catalogue has the full list). An empty result means "not curated yet," not "this data doesn't exist" — see the no_match_hint field, and consider raw_query_url once you've found the dataset another way (web search, browsing the catalogue directly).

describe_seriesA

Full metadata for a series: coverage, unit, base years, known breaks/rebases, and caveats. Call this before trusting a comparison across time or before deciding whether a transform is needed.

get_seriesA

Fetch values for a series, optionally transformed (yoy/mom/qoq) and filtered by date range or geography. Every response carries a provenance block and a warnings array — never treat the bare numbers as the whole answer; read the warnings.

compare_seriesA

Align two or more series on a common date index. Refuses to compare a series against its own seasonally-adjusted/not-adjusted counterpart (see each series' sa_counterpart field) rather than silently returning a misleading comparison — call describe_series on each id first if you're unsure whether that applies.

explain_breakA

Why does this series jump/change at a given date? Returns each documented break (rebase, methodology change, classification revision, census baseline shift) in plain language, or says there are none.

latest_releaseB

The newest available data point for a series, plus an estimated next release date derived from the series' frequency and typical release lag. The estimate is not authoritative — DOSM's own release calendar is the source of truth.

computeA

Statistical operations beyond a plain lookup:

  • yoy / mom / qoq: same as get_series(transform=...), offered here too for a uniform entry point.

  • cagr: compound annual growth rate between date_from and date_to.

  • real: deflate series_id (nominal) by secondary_series_id (a price index, e.g. cpi_headline) into base_period prices (default: the latest date in range). secondary_series_id defaults to cpi_headline if omitted, but pick the deflator deliberately — CPI is a consumer basket, not a GDP deflator, and the two can diverge.

  • per_capita: divide series_id by population_series_id (default: population_malaysia), broadcasting the (annual) population estimate across every period within that year.

  • index_to: rebase series_id so its value at base_period (required) reads 100.

  • contribution_to_growth: how many percentage points of secondary_series_id's (the total's) change over the last periods_ago periods is attributable to series_id (the component). Requires secondary_series_id; both series must share a frequency.

raw_queryA

Escape hatch for shapes the curated tools don't cover — e.g. a division/sector/group breakdown a series' source table carries but no registry entry filters to (get_series only ever returns the one row per date the registry's filters picks out). Write a SELECT against series (aliased to series_id's source Parquet); only read-only single-statement SELECT/WITH queries are allowed, capped at row_limit rows. Prefer get_series/compare_series/compute when they cover your question — this bypasses the caveats, breaks, and warnings those carry, since it returns raw table rows, not a curated response.

raw_query_urlA

Escape hatch for a dataset find_series returns nothing for and that has no registry entry at all — not even for raw_query, which still requires an existing series_id. find_series only searches KIRA's ~20 curated series; DOSM publishes far more than that (open .dosm.gov.my/data-catalogue has the full list). If find_series comes up empty, don't conclude the data doesn't exist — check DOSM's catalogue (or web search) for a storage.dosm.gov.my / storage.data.gov.my Parquet URL, then query it directly here, same sandboxing as raw_query (single read-only SELECT, aliased as series). No curation applies: no caveats, no breaks, no unit conversion — read the result with the same care you'd bring to the source file yourself. Only official Malaysian government open-data storage hosts are reachable; this is not a general-purpose fetcher.

list_geographiesA

State / district / parliament (parlimen) / state assembly (DUN) codes and hierarchy, sourced from DOSM's population tables. level is one of state, district, parlimen, dun; pass parent (e.g. a state name) to filter to that parent's children — district and parlimen take a state, dun takes a parlimen.

lookup_classificationA

Look up or traverse a DOSM classification system: mcoicop (consumer expenditure, what CPI divisions are coded against) or msic (industry, Malaysian Standard Industrial Classification). Pass code (e.g. a division or section letter) to get that code's description and its full subtree; omit it to get the whole table.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Syakizz04/kira-dosm'

If you have feedback or need assistance with the MCP directory API, please join our Discord server