Safaricom M-Pesa Daraja tools: STK Push, C2B, B2C, B2B, QR, Ratiba. Sandbox-first, idempotent.
Connect Runs on your machine
claude mcp add mpesa-daraja-mcp -e DARAJA_CONSUMER_KEY=<DARAJA_CONSUMER_KEY> -e DARAJA_CONSUMER_SECRET=<DARAJA_CONSUMER_SECRET> -e DARAJA_ENV=<DARAJA_ENV> -e DARAJA_SHORTCODE=<DARAJA_SHORTCODE> -e DARAJA_PASSKEY=<DARAJA_PASSKEY> -e DARAJA_INITIATOR_NAME=<DARAJA_INITIATOR_NAME> -e DARAJA_SECURITY_CREDENTIAL=<DARAJA_SECURITY_CREDENTIAL> -e DARAJA_CALLBACK_BASE_URL=<DARAJA_CALLBACK_BASE_URL> -e DARAJA_CALLBACK_LISTEN=<DARAJA_CALLBACK_LISTEN> -e DARAJA_CALLBACK_TOKEN=<DARAJA_CALLBACK_TOKEN> -e DARAJA_TOOLSETS=<DARAJA_TOOLSETS> -e DARAJA_READ_ONLY=<DARAJA_READ_ONLY> -e DARAJA_APPROVAL_THRESHOLD=<DARAJA_APPROVAL_THRESHOLD> -e DARAJA_ALLOWED_RECIPIENTS=<DARAJA_ALLOWED_RECIPIENTS> -e DARAJA_ALLOW_LIVE_MONEY_MOVEMENT=<DARAJA_ALLOW_LIVE_MONEY_MOVEMENT> -e DARAJA_INITIATOR_PASSWORD=<DARAJA_INITIATOR_PASSWORD> -e DARAJA_CERT_PATH=<DARAJA_CERT_PATH> -e DARAJA_STATE_DB=<DARAJA_STATE_DB> -e DARAJA_OUTPUT_DIR=<DARAJA_OUTPUT_DIR> -e DARAJA_CONFIG_DIR=<DARAJA_CONFIG_DIR> -e DARAJA_DOTENV=<DARAJA_DOTENV> -e DARAJA_MCP_TOKEN=<DARAJA_MCP_TOKEN> -e DARAJA_MCP_HOST=<DARAJA_MCP_HOST> -e DARAJA_MCP_PORT=<DARAJA_MCP_PORT> -e DARAJA_FORWARD_URL=<DARAJA_FORWARD_URL> -e DARAJA_FORWARD_SECRET=<DARAJA_FORWARD_SECRET> -- uvx mpesa-daraja-mcp==0.1.6
{
"mcpServers": {
"mpesa-daraja-mcp": {
"command": "uvx",
"args": [
"mpesa-daraja-mcp==0.1.6"
],
"env": {
"DARAJA_CONSUMER_KEY": "<DARAJA_CONSUMER_KEY>",
"DARAJA_CONSUMER_SECRET": "<DARAJA_CONSUMER_SECRET>",
"DARAJA_ENV": "<DARAJA_ENV>",
"DARAJA_SHORTCODE": "<DARAJA_SHORTCODE>",
"DARAJA_PASSKEY": "<DARAJA_PASSKEY>",
"DARAJA_INITIATOR_NAME": "<DARAJA_INITIATOR_NAME>",
"DARAJA_SECURITY_CREDENTIAL": "<DARAJA_SECURITY_CREDENTIAL>",
"DARAJA_CALLBACK_BASE_URL": "<DARAJA_CALLBACK_BASE_URL>",
"DARAJA_CALLBACK_LISTEN": "<DARAJA_CALLBACK_LISTEN>",
"DARAJA_CALLBACK_TOKEN": "<DARAJA_CALLBACK_TOKEN>",
"DARAJA_TOOLSETS": "<DARAJA_TOOLSETS>",
"DARAJA_READ_ONLY": "<DARAJA_READ_ONLY>",
"DARAJA_APPROVAL_THRESHOLD": "<DARAJA_APPROVAL_THRESHOLD>",
"DARAJA_ALLOWED_RECIPIENTS": "<DARAJA_ALLOWED_RECIPIENTS>",
"DARAJA_ALLOW_LIVE_MONEY_MOVEMENT": "<DARAJA_ALLOW_LIVE_MONEY_MOVEMENT>",
"DARAJA_INITIATOR_PASSWORD": "<DARAJA_INITIATOR_PASSWORD>",
"DARAJA_CERT_PATH": "<DARAJA_CERT_PATH>",
"DARAJA_STATE_DB": "<DARAJA_STATE_DB>",
"DARAJA_OUTPUT_DIR": "<DARAJA_OUTPUT_DIR>",
"DARAJA_CONFIG_DIR": "<DARAJA_CONFIG_DIR>",
"DARAJA_DOTENV": "<DARAJA_DOTENV>",
"DARAJA_MCP_TOKEN": "<DARAJA_MCP_TOKEN>",
"DARAJA_MCP_HOST": "<DARAJA_MCP_HOST>",
"DARAJA_MCP_PORT": "<DARAJA_MCP_PORT>",
"DARAJA_FORWARD_URL": "<DARAJA_FORWARD_URL>",
"DARAJA_FORWARD_SECRET": "<DARAJA_FORWARD_SECRET>"
}
}
}
}
{
"mcpServers": {
"mpesa-daraja-mcp": {
"command": "uvx",
"args": [
"mpesa-daraja-mcp==0.1.6"
],
"env": {
"DARAJA_CONSUMER_KEY": "<DARAJA_CONSUMER_KEY>",
"DARAJA_CONSUMER_SECRET": "<DARAJA_CONSUMER_SECRET>",
"DARAJA_ENV": "<DARAJA_ENV>",
"DARAJA_SHORTCODE": "<DARAJA_SHORTCODE>",
"DARAJA_PASSKEY": "<DARAJA_PASSKEY>",
"DARAJA_INITIATOR_NAME": "<DARAJA_INITIATOR_NAME>",
"DARAJA_SECURITY_CREDENTIAL": "<DARAJA_SECURITY_CREDENTIAL>",
"DARAJA_CALLBACK_BASE_URL": "<DARAJA_CALLBACK_BASE_URL>",
"DARAJA_CALLBACK_LISTEN": "<DARAJA_CALLBACK_LISTEN>",
"DARAJA_CALLBACK_TOKEN": "<DARAJA_CALLBACK_TOKEN>",
"DARAJA_TOOLSETS": "<DARAJA_TOOLSETS>",
"DARAJA_READ_ONLY": "<DARAJA_READ_ONLY>",
"DARAJA_APPROVAL_THRESHOLD": "<DARAJA_APPROVAL_THRESHOLD>",
"DARAJA_ALLOWED_RECIPIENTS": "<DARAJA_ALLOWED_RECIPIENTS>",
"DARAJA_ALLOW_LIVE_MONEY_MOVEMENT": "<DARAJA_ALLOW_LIVE_MONEY_MOVEMENT>",
"DARAJA_INITIATOR_PASSWORD": "<DARAJA_INITIATOR_PASSWORD>",
"DARAJA_CERT_PATH": "<DARAJA_CERT_PATH>",
"DARAJA_STATE_DB": "<DARAJA_STATE_DB>",
"DARAJA_OUTPUT_DIR": "<DARAJA_OUTPUT_DIR>",
"DARAJA_CONFIG_DIR": "<DARAJA_CONFIG_DIR>",
"DARAJA_DOTENV": "<DARAJA_DOTENV>",
"DARAJA_MCP_TOKEN": "<DARAJA_MCP_TOKEN>",
"DARAJA_MCP_HOST": "<DARAJA_MCP_HOST>",
"DARAJA_MCP_PORT": "<DARAJA_MCP_PORT>",
"DARAJA_FORWARD_URL": "<DARAJA_FORWARD_URL>",
"DARAJA_FORWARD_SECRET": "<DARAJA_FORWARD_SECRET>"
}
}
}
}
{
"servers": {
"mpesa-daraja-mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"mpesa-daraja-mcp==0.1.6"
],
"env": {
"DARAJA_CONSUMER_KEY": "<DARAJA_CONSUMER_KEY>",
"DARAJA_CONSUMER_SECRET": "<DARAJA_CONSUMER_SECRET>",
"DARAJA_ENV": "<DARAJA_ENV>",
"DARAJA_SHORTCODE": "<DARAJA_SHORTCODE>",
"DARAJA_PASSKEY": "<DARAJA_PASSKEY>",
"DARAJA_INITIATOR_NAME": "<DARAJA_INITIATOR_NAME>",
"DARAJA_SECURITY_CREDENTIAL": "<DARAJA_SECURITY_CREDENTIAL>",
"DARAJA_CALLBACK_BASE_URL": "<DARAJA_CALLBACK_BASE_URL>",
"DARAJA_CALLBACK_LISTEN": "<DARAJA_CALLBACK_LISTEN>",
"DARAJA_CALLBACK_TOKEN": "<DARAJA_CALLBACK_TOKEN>",
"DARAJA_TOOLSETS": "<DARAJA_TOOLSETS>",
"DARAJA_READ_ONLY": "<DARAJA_READ_ONLY>",
"DARAJA_APPROVAL_THRESHOLD": "<DARAJA_APPROVAL_THRESHOLD>",
"DARAJA_ALLOWED_RECIPIENTS": "<DARAJA_ALLOWED_RECIPIENTS>",
"DARAJA_ALLOW_LIVE_MONEY_MOVEMENT": "<DARAJA_ALLOW_LIVE_MONEY_MOVEMENT>",
"DARAJA_INITIATOR_PASSWORD": "<DARAJA_INITIATOR_PASSWORD>",
"DARAJA_CERT_PATH": "<DARAJA_CERT_PATH>",
"DARAJA_STATE_DB": "<DARAJA_STATE_DB>",
"DARAJA_OUTPUT_DIR": "<DARAJA_OUTPUT_DIR>",
"DARAJA_CONFIG_DIR": "<DARAJA_CONFIG_DIR>",
"DARAJA_DOTENV": "<DARAJA_DOTENV>",
"DARAJA_MCP_TOKEN": "<DARAJA_MCP_TOKEN>",
"DARAJA_MCP_HOST": "<DARAJA_MCP_HOST>",
"DARAJA_MCP_PORT": "<DARAJA_MCP_PORT>",
"DARAJA_FORWARD_URL": "<DARAJA_FORWARD_URL>",
"DARAJA_FORWARD_SECRET": "<DARAJA_FORWARD_SECRET>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
DARAJA_CONSUMER_KEYRequired, secret | Daraja app Consumer Key |
DARAJA_CONSUMER_SECRETRequired, secret | Daraja app Consumer Secret |
DARAJA_ENVOptional | sandbox (default) or production |
DARAJA_SHORTCODEOptional | Paybill / store number (174379 in sandbox) |
DARAJA_PASSKEYOptional, secret | M-Pesa Express passkey (STK Push) |
DARAJA_INITIATOR_NAMEOptional | API operator username (B2C, B2B, status, balance, reversal) |
DARAJA_SECURITY_CREDENTIALOptional, secret | Encrypted initiator password |
DARAJA_CALLBACK_BASE_URLOptional | Public HTTPS base for callback URLs |
DARAJA_CALLBACK_LISTENOptional | host:port for the built-in callback receiver |
DARAJA_CALLBACK_TOKENOptional, secret | 16+ random characters; secret path for callbacks |
DARAJA_TOOLSETSOptional | Comma list: stk,c2b,payouts,ops,qr,ratiba,billmanager |
DARAJA_READ_ONLYOptional | true hides every tool that moves money or writes |
DARAJA_APPROVAL_THRESHOLDOptional | Payouts above this many shillings need approval in the chat |
DARAJA_ALLOWED_RECIPIENTSOptional | Comma list of phones/shortcodes that payouts may go to |
DARAJA_ALLOW_LIVE_MONEY_MOVEMENTOptional | true to allow production charges and payouts |
DARAJA_INITIATOR_PASSWORDOptional, secret | Initiator password, encrypted into SecurityCredential at startup (alternative to DARAJA_SECURITY_CREDENTIAL) |
DARAJA_CERT_PATHOptional | Path to Safaricom's public certificate, used with DARAJA_INITIATOR_PASSWORD |
DARAJA_STATE_DBOptional | Path of the SQLite file that stores request state and callbacks |
DARAJA_OUTPUT_DIROptional | Directory where generated QR PNGs are saved |
DARAJA_CONFIG_DIROptional | Directory holding the saved config (default: user config dir) |
DARAJA_DOTENVOptional | Path of a .env file to load instead of the project one |
DARAJA_MCP_TOKENOptional, secret | Bearer token for HTTP mode (32+ random characters) |
DARAJA_MCP_HOSTOptional | HTTP mode bind address (default 127.0.0.1) |
DARAJA_MCP_PORTOptional | HTTP mode port (default 8000) |
DARAJA_FORWARD_URLOptional | Your app's URL: every callback is POSTed on to it, HMAC-signed |
DARAJA_FORWARD_SECRETOptional, secret | HMAC secret for forwarded callbacks (16+ characters) |
Details
| Package | [email protected] (PYPI, stdio) |
| First published | 29 Oct 2026 |
| Last updated | 29 Oct 2026 |
| Registry name | io.github.Mr-Macharia/mpesa-daraja-mcp |
More other servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
