NestDaddy

M-Pesa Daraja

io.github.Mr-Macharia/mpesa-daraja-mcp · v0.1.6

Safaricom M-Pesa Daraja tools: STK Push, C2B, B2C, B2B, QR, Ratiba. Sandbox-first, idempotent.

Connect Runs on your machine

Terminal
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
claude_desktop_config.json
{
  "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>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "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>"
      }
    }
  }
}
.vscode/mcp.json
{
  "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

NameDescription
DARAJA_CONSUMER_KEY
Required, secret
Daraja app Consumer Key
DARAJA_CONSUMER_SECRET
Required, secret
Daraja app Consumer Secret
DARAJA_ENV
Optional
sandbox (default) or production
DARAJA_SHORTCODE
Optional
Paybill / store number (174379 in sandbox)
DARAJA_PASSKEY
Optional, secret
M-Pesa Express passkey (STK Push)
DARAJA_INITIATOR_NAME
Optional
API operator username (B2C, B2B, status, balance, reversal)
DARAJA_SECURITY_CREDENTIAL
Optional, secret
Encrypted initiator password
DARAJA_CALLBACK_BASE_URL
Optional
Public HTTPS base for callback URLs
DARAJA_CALLBACK_LISTEN
Optional
host:port for the built-in callback receiver
DARAJA_CALLBACK_TOKEN
Optional, secret
16+ random characters; secret path for callbacks
DARAJA_TOOLSETS
Optional
Comma list: stk,c2b,payouts,ops,qr,ratiba,billmanager
DARAJA_READ_ONLY
Optional
true hides every tool that moves money or writes
DARAJA_APPROVAL_THRESHOLD
Optional
Payouts above this many shillings need approval in the chat
DARAJA_ALLOWED_RECIPIENTS
Optional
Comma list of phones/shortcodes that payouts may go to
DARAJA_ALLOW_LIVE_MONEY_MOVEMENT
Optional
true to allow production charges and payouts
DARAJA_INITIATOR_PASSWORD
Optional, secret
Initiator password, encrypted into SecurityCredential at startup (alternative to DARAJA_SECURITY_CREDENTIAL)
DARAJA_CERT_PATH
Optional
Path to Safaricom's public certificate, used with DARAJA_INITIATOR_PASSWORD
DARAJA_STATE_DB
Optional
Path of the SQLite file that stores request state and callbacks
DARAJA_OUTPUT_DIR
Optional
Directory where generated QR PNGs are saved
DARAJA_CONFIG_DIR
Optional
Directory holding the saved config (default: user config dir)
DARAJA_DOTENV
Optional
Path of a .env file to load instead of the project one
DARAJA_MCP_TOKEN
Optional, secret
Bearer token for HTTP mode (32+ random characters)
DARAJA_MCP_HOST
Optional
HTTP mode bind address (default 127.0.0.1)
DARAJA_MCP_PORT
Optional
HTTP mode port (default 8000)
DARAJA_FORWARD_URL
Optional
Your app's URL: every callback is POSTed on to it, HMAC-signed
DARAJA_FORWARD_SECRET
Optional, secret
HMAC secret for forwarded callbacks (16+ characters)

Details

Package[email protected] (PYPI, stdio)
First published29 Oct 2026
Last updated29 Oct 2026
Registry nameio.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.