Labsco
MCP SERVER

Africa's Talking Airtime MCP

by nasoma

Send airtime to phone numbers across several African countries and keep a local record of every top-up — balance, history, totals and per-number counts.

Payments, Billing & Subscriptions
Summary
The local ledger is what makes it more than an API call.

Sending airtime is one API call; knowing what you have already sent is the part providers make you dig for. Writing each transaction to SQLite means the history, the running totals and the per-number counts are answerable in the same conversation as the send. Two things to hold in mind: this moves real balance, and summing across mixed currencies returns an error rather than a plausible-looking wrong figure — which is the right behaviour, but you will meet it.

What it is

An MCP server over the Africa's Talking airtime API. It sends airtime, checks what is left on the account, and writes every transaction to a local SQLite database so the history questions — what did I send, to whom, how much in total — can be answered without going back to the provider.

What you get
  • The current airtime balance on your Africa's Talking account, or the error if the call failed — `check_balance`
  • Airtime sent to a phone number for a given amount and currency code, with the transaction recorded — `load_airtime`
  • The most recent top-up transactions, defaulting to the last 3 — `get_last_topups`
  • The sum of the last N top-ups, defaulting to 3, with an error rather than a wrong number if the transactions are in different currencies — `sum_last_n_topups`
  • How many successful top-ups have gone to one phone number — `count_topups_by_number`
  • Phone numbers formatted to the right country code automatically, from the country you configured
Requirements

An Africa's Talking account with funds on it — sending airtime spends real money. Four environment values go in the client entry: `username`, `api_key`, `country` (kenya, uganda, dr congo, rwanda, south africa) and `currency_code` (KES, UGX, NGN). Python 3.10 or higher and the uv package manager; `uv sync` sets up the environment, and the client runs `uv` with `--directory` pointing at the repository and `main.py` as the target. The database file `airtime_transactions.db` is created in the project directory on first use. The pyproject name is `africas-talking-airtime-mcp-server` (0.1.0).

Setup effort

One command plus a key — npx -y @smithery/cli install @nasoma/africastalking-airtime-mcp --client claude, then supply credentials