Safaricom M-Pesa Daraja tools: STK Push, C2B, B2C, B2B, QR, Ratiba. Sandbox-first, idempotent.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add m-pesa-daraja --env DARAJA_CONSUMER_KEY='<DARAJA_CONSUMER_KEY>' --env DARAJA_CONSUMER_SECRET='<DARAJA_CONSUMER_SECRET>' --env DARAJA_PASSKEY='<DARAJA_PASSKEY>' --env DARAJA_SECURITY_CREDENTIAL='<DARAJA_SECURITY_CREDENTIAL>' --env DARAJA_CALLBACK_TOKEN='<DARAJA_CALLBACK_TOKEN>' -- uvx mpesa-daraja-mcp~/.codex/config.toml
[mcp_servers.m-pesa-daraja]
command = "uvx"
args = ["mpesa-daraja-mcp"]
env = { DARAJA_CONSUMER_KEY = "<DARAJA_CONSUMER_KEY>", DARAJA_CONSUMER_SECRET = "<DARAJA_CONSUMER_SECRET>", DARAJA_PASSKEY = "<DARAJA_PASSKEY>", DARAJA_SECURITY_CREDENTIAL = "<DARAJA_SECURITY_CREDENTIAL>", DARAJA_CALLBACK_TOKEN = "<DARAJA_CALLBACK_TOKEN>" }
# codex mcp add m-pesa-daraja --env DARAJA_CONSUMER_KEY='<DARAJA_CONSUMER_KEY>' --env DARAJA_CONSUMER_SECRET='<DARAJA_CONSUMER_SECRET>' --env DARAJA_PASSKEY='<DARAJA_PASSKEY>' --env DARAJA_SECURITY_CREDENTIAL='<DARAJA_SECURITY_CREDENTIAL>' --env DARAJA_CALLBACK_TOKEN='<DARAJA_CALLBACK_TOKEN>' -- uvx mpesa-daraja-mcp~/.cursor/mcp.json
{
"mcpServers": {
"m-pesa-daraja": {
"command": "uvx",
"args": [
"mpesa-daraja-mcp"
],
"env": {
"DARAJA_CONSUMER_KEY": "<DARAJA_CONSUMER_KEY>",
"DARAJA_CONSUMER_SECRET": "<DARAJA_CONSUMER_SECRET>",
"DARAJA_PASSKEY": "<DARAJA_PASSKEY>",
"DARAJA_SECURITY_CREDENTIAL": "<DARAJA_SECURITY_CREDENTIAL>",
"DARAJA_CALLBACK_TOKEN": "<DARAJA_CALLBACK_TOKEN>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"m-pesa-daraja": {
"type": "stdio",
"command": "uvx",
"args": [
"mpesa-daraja-mcp"
],
"env": {
"DARAJA_CONSUMER_KEY": "<DARAJA_CONSUMER_KEY>",
"DARAJA_CONSUMER_SECRET": "<DARAJA_CONSUMER_SECRET>",
"DARAJA_PASSKEY": "<DARAJA_PASSKEY>",
"DARAJA_SECURITY_CREDENTIAL": "<DARAJA_SECURITY_CREDENTIAL>",
"DARAJA_CALLBACK_TOKEN": "<DARAJA_CALLBACK_TOKEN>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"m-pesa-daraja": {
"command": "uvx",
"args": [
"mpesa-daraja-mcp"
],
"env": {
"DARAJA_CONSUMER_KEY": "<DARAJA_CONSUMER_KEY>",
"DARAJA_CONSUMER_SECRET": "<DARAJA_CONSUMER_SECRET>",
"DARAJA_PASSKEY": "<DARAJA_PASSKEY>",
"DARAJA_SECURITY_CREDENTIAL": "<DARAJA_SECURITY_CREDENTIAL>",
"DARAJA_CALLBACK_TOKEN": "<DARAJA_CALLBACK_TOKEN>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"m-pesa-daraja": {
"command": "uvx",
"args": [
"mpesa-daraja-mcp"
],
"env": {
"DARAJA_CONSUMER_KEY": "<DARAJA_CONSUMER_KEY>",
"DARAJA_CONSUMER_SECRET": "<DARAJA_CONSUMER_SECRET>",
"DARAJA_PASSKEY": "<DARAJA_PASSKEY>",
"DARAJA_SECURITY_CREDENTIAL": "<DARAJA_SECURITY_CREDENTIAL>",
"DARAJA_CALLBACK_TOKEN": "<DARAJA_CALLBACK_TOKEN>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"m-pesa-daraja": {
"command": "uvx",
"args": [
"mpesa-daraja-mcp"
],
"env": {
"DARAJA_CONSUMER_KEY": "<DARAJA_CONSUMER_KEY>",
"DARAJA_CONSUMER_SECRET": "<DARAJA_CONSUMER_SECRET>",
"DARAJA_PASSKEY": "<DARAJA_PASSKEY>",
"DARAJA_SECURITY_CREDENTIAL": "<DARAJA_SECURITY_CREDENTIAL>",
"DARAJA_CALLBACK_TOKEN": "<DARAJA_CALLBACK_TOKEN>"
}
}
}
}Environment variables
DARAJA_CONSUMER_KEYDARAJA_CONSUMER_SECRETDARAJA_PASSKEYDARAJA_SECURITY_CREDENTIALDARAJA_CALLBACK_TOKEN
Replace the placeholders with your own credentials and keep them out of version control.