mpesa-daraja-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mpesa-daraja-mcpSend KES 250 to 0712345678 for order #1042 and wait for the result."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
M-Pesa Daraja Agent Kit: Agent Skills that teach your agent to use Daraja API, and an MCP server that lets it call Daraja safely. Works with Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, and any agent that supports Agent Skills or MCP.
Use cases | Choose a setup | Quick start | Safety | Docs
Use cases
Who it helps
Team | What the kit does for them |
Developers | A coding agent that writes correct Daraja code: STK checkout, B2C payouts, callback handlers, retries that never pay twice. It also reviews and fixes an existing integration |
Online shops and SaaS | Checkout at the till or in the app, Dynamic QR at the counter, subscriptions through Ratiba standing orders |
Support teams | An agent that answers "did my payment go through?" from the transaction itself, not a guess |
Finance and operations | Reconciling C2B payments against invoices, balance checks, reversals and status lookups from chat |
Platforms that pay people | Payouts to drivers, riders, agents and suppliers, safe to retry because every request is idempotent |
Landlords, schools, chamas and SACCOs | Invoices and reminders through Bill Manager, contributions collected by STK Push |
Businesses filing tax | KRA remittance through B2B, with the right command and fields |
Anyone learning Daraja | Sandbox experiments with real responses, and docs that explain why each rule exists |
What to ask your agent
Ask | Uses |
"Add M-Pesa checkout to my Django order flow, with a callback that marks orders paid." | Skills |
"Send KES 250 to 0712345678 for order #1042 and wait for the result." | MCP |
"Build a B2C payout job for driver earnings that never pays twice." | Skills |
"A customer says they paid. Did receipt TJK7Q2X9LM go through?" | MCP |
"My STK push returns 400.002.02. What's wrong with this request?" | Skills |
"Pull yesterday's C2B transactions and match them against my invoices." | Both |
"Set up a monthly KES 500 standing order for this subscriber." | Both |
"Opt my paybill into Bill Manager and invoice these 20 tenants." | Both |
Related MCP server: Daraja API MCP Server
Three ways to use it
The two halves are independent. Pick the one that fits the job, or use both.
Your agent writes M-Pesa code for your app: STK checkout, B2C payouts, callback handlers. The skills give it Daraja's rules and tested scripts, so the code is right the first time.
Pick this when you're building an integration in your own codebase.
Your agent calls Daraja for you: sends an STK push, checks a balance, looks up a transaction, reverses a payment. Nothing to write; results come back as SUCCESS, FAILED or UNKNOWN.
Pick this when you want to operate M-Pesa from chat, or test against the sandbox.
The skills tell your agent which tool to call and why. The server makes the call safely. Build the integration and try it live in the same conversation.
Pick this when you want the agent to build and verify.
npx skills add \
Mr-Macharia/mpesa-daraja-skills-and-mcpuvx mpesa-daraja-mcp setupRun both commands.
Quick start
Let your agent install it
Paste this into Claude Code, Codex, Cursor, Gemini CLI or any coding agent:
Install the M-Pesa Daraja Agent Kit for me:
1. Install the Agent Skills for yourself: npx skills add Mr-Macharia/mpesa-daraja-skills-and-mcp -a <your agent id>
(agent ids: claude-code, codex, cursor, github-copilot, gemini-cli). Use -g if I want them in every project.
2. Add the MCP server to yourself, named "mpesa", with the command: uvx mpesa-daraja-mcp
It needs no keys in your config. If uv is missing, tell me how to install it first.
3. Don't ask me for my Daraja keys. Tell me to run `uvx mpesa-daraja-mcp setup` in my own terminal,
which saves them privately, then to restart you.
4. After I restart you, call mpesa_check_credentials and tell me if everything works.Your agent installs both halves; you only type your Daraja keys into the setup wizard, never into the chat.
Claude Code: one plugin for both
The plugin installs all 15 skills and the MCP server in one step. The server runs through uv, so install that first, and make sure uvx is on the PATH Claude Code sees:
/plugin install mpesa-daraja-skills --marketplace Mr-Macharia/mpesa-daraja-skills-and-mcpThen run uvx mpesa-daraja-mcp setup once in a terminal to save your Daraja keys. When it offers to add the server to Claude Code, answer n: the plugin already did. Restart Claude Code.
Or install it yourself
1. Install the skills. Needs Node.js 22.20 or later.
npx skills add Mr-Macharia/mpesa-daraja-skills-and-mcp2. Install the MCP server. Needs uv.
uvx mpesa-daraja-mcp setupThe wizard asks for your Daraja keys (secrets are typed hidden), checks them live with Safaricom, saves them to a file only you can read, and registers the server with Claude Code, Codex, Gemini CLI or Cursor. Restart your agent when it's done.
No keys go in these commands; the server reads them from its config file.
Agent | Command |
Claude Code |
|
Codex |
|
Gemini CLI |
|
Cursor, VS Code, others | JSON snippets in docs/clients.md |
Then run uvx mpesa-daraja-mcp setup to save your keys, or write the config file yourself as described in docs/clients.md.
Try it
Check my M-Pesa credentials, then send a KES 1 STK push to 0712345678 and tell me when it's paid.
The agent calls mpesa_check_credentials, then mpesa_stk_push_and_wait, and answers with one of three results:
Result | Meaning |
| Paid. Includes the M-Pesa receipt number |
| Not paid, with the reason, e.g. |
| Not known yet, with what to check next. Never retried blindly |
Everything starts in the sandbox. No real money moves until you opt in.
How it works
Why this exists
M-Pesa Daraja Agent Kit makes M-Pesa payment handling and integration easier for:
Developers building payment integration systems. With the kit, your coding agent knows the Daraja API, so you describe the integration and review the code, instead of piecing it together from the portal. Test it all in the sandbox before going live.
Learners finding out how the Daraja API works. Send real requests to the sandbox, a safe test environment, see what comes back, and read docs that explain why each step exists.
Businesses and teams that want an AI agent to handle payments: collecting them, checking whether they went through, and reconciling them through an agent.
What's inside
15 Agent Skills. Every major Daraja API, plus helper skills for callbacks, sandbox setup and go-live, credentials and security, and troubleshooting. Each skill bundles tested scripts that validate requests, build STK passwords, encrypt credentials and parse callbacks, so the agent runs known-good code instead of improvising.
The MCP server, mpesa-daraja-mcp. 24 mpesa_* tools. mpesa_stk_push_and_wait returns a payment's final outcome in one call, and an optional built-in callback receiver records results for mpesa_get_result.
Load only what you need. Every tool the server offers takes up space in your agent's context, even when it's never called. Set DARAJA_TOOLSETS to the groups you use, and the agent sees only those tools. For example, DARAJA_TOOLSETS=stk for a shop that only takes STK payments, or stk,payouts if it also pays people. The groups are stk, c2b, payouts, ops, qr, ratiba and billmanager; the basic tools (core) are always on. Leave it unset to load everything.
Daraja API | Skill | MCP tools |
OAuth |
| |
M-Pesa Express (STK Push) |
| |
C2B and Pull Transactions |
| |
B2C and Pochi la Biashara |
| |
B2B, B2C top-up, B2B Express Checkout |
| |
Tax remittance (KRA) |
| |
Transaction Status, Account Balance, Reversal |
| |
Dynamic QR |
| |
Ratiba (standing orders) |
| |
Bill Manager |
|
Offline tools also explain result codes, normalise phone numbers, build STK passwords and parse callbacks, with no Daraja call.
Safety
Risk | Safeguard |
Moving real money by accident | Sandbox by default. In production, money tools refuse to run until |
Paying twice on a retry | Each money request is stored under an idempotency key. Repeating the key returns the stored outcome; only a definite failure can be re-sent |
Reporting "accepted" as "paid" | Only a callback or a status query can produce |
Malformed requests | Bodies are checked against Daraja's rules before sending, using the same validator as the skills |
Leaked secrets | Tokens and secrets never appear in tool output, keys never go in agent config, and callback URLs carry a secret path token |
Found a security problem? Report it privately, as described in SECURITY.md.
FAQ
Documentation
Read | For |
Setup for each agent: skills folders, MCP config, config files | |
Every tool and setting, the callback receiver, toolsets | |
The skill catalogue, and why each skill is built the way it is | |
How Daraja works: transaction types, callbacks, OAuth, credentials, sandbox | |
Rules for AI agents working on M-Pesa code or on this repo |
Contributing
Bug reports, Daraja corrections and new skills are welcome. Start with CONTRIBUTING.md, which covers the dev setup, tests and release process, and follow the Code of Conduct. Changes are recorded in CHANGELOG.md.
License
MIT © 2026 Mr-Macharia
An independent open-source project, not affiliated with or endorsed by Safaricom PLC. M-Pesa and Daraja are trademarks of Safaricom PLC. When you go live, you are responsible for complying with Safaricom's terms and payments regulation.
This server cannot be deployed
Maintenance
Related MCP Connectors
Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.
Pay-per-use tool API for AI agents. Free tier, x402 USDC micropayments, or API key.
17 pay-per-call web, finance, legal and onchain tools for AI agents. USDC on Base via x402/MPP.
Prepaid balance for AI agents: one key, 4,900+ tools your agent can run today, caps, receipts.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that integrates AI applications with Safaricom's Daraja API, enabling AI-driven financial transactions and automation through M-Pesa services.14-
- AlicenseNot gradedqualityDmaintenanceProvides AI assistants with access to comprehensive Safaricom Daraja API documentation for all 22 M-Pesa APIs through searchable tools, enabling developers to query payment processing, transaction management, and business operations documentation.17MIT
- FlicenseNot gradedqualityDmaintenanceAn experimental MCP server that lets AI agents interact with guarded payment workflows through typed tools, enabling safe agent-assisted payments with M-Pesa and mock Airtel Money.2-
- AlicenseAqualityCmaintenanceEnables interaction with Safaricom M-Pesa Daraja 3.0 API, covering payments, disbursements, treasury, and fraud checks, with a built-in simulator for testing without credentials.253 npmMIT