mpesa-mcp
mpesa-mcp
東アフリカのフィンテックAPI用MCPサーバー — M-Pesa (Safaricom Daraja) および Africa's Talking
AIエージェントに、M-Pesa決済のトリガー、取引状況の確認、SMS送信、および20以上のアフリカの通信ネットワークへの通信料チャージ機能を提供します。
なぜこれが必要なのか
M-Pesaは、アフリカにおいてPayPalよりも多くの1日あたりの取引を処理しています。Africa's Talkingは、SMSやUSSDを通じて、20カ国以上のベーシックフォンユーザーにリーチしています。しかし、どちらもMCPサーバーを提供していません。
つまり、現在構築されているすべてのAIエージェント(Claude、GPT、Gemini、またはMCP互換ランタイム)は、カスタム統合作業なしではM-Pesa決済をトリガーしたり、スワヒリ語のSMSを送信したりすることができません。
mpesa-mcp は、pip install 一つでそのギャップを埋めます。
ツール
ツール | 説明 |
| 顧客のM-Pesa電話にSTKプッシュ決済プロンプトを送信 |
| STKプッシュリクエストのステータスを確認 |
| 受領番号でM-Pesa取引を照会 |
| アフリカのネットワーク全体で1〜1,000人の受信者にSMSを送信 |
| 加入者に通信料をチャージ (KES, NGN, GHS, UGXなど) |
対応範囲
M-Pesa: ケニア (Safaricom Daraja v3) — STKプッシュ、C2B、取引ステータス
SMS/通信料: ケニア、ナイジェリア、ガーナ、タンザニア、ウガンダ、ルワンダ、南アフリカ、その他15カ国以上 (Africa's Talking経由)
インストール
pip install mpesa-mcpまたは uvx で直接実行:
uvx mpesa-mcp設定
サーバーを起動する前に、以下の環境変数を設定してください:
# M-Pesa (Safaricom Daraja)
MPESA_CONSUMER_KEY=your_consumer_key
MPESA_CONSUMER_SECRET=your_consumer_secret
MPESA_SHORTCODE=174379 # sandbox test shortcode
MPESA_PASSKEY=your_passkey
MPESA_CALLBACK_URL=https://yourdomain.com/mpesa/callback
MPESA_SANDBOX=true # set false for production
# Africa's Talking
AT_USERNAME=sandbox # your AT username (sandbox for testing)
AT_API_KEY=your_at_api_keyサンドボックス認証情報
M-Pesaサンドボックス: https://developer.safaricom.co.ke — 無料アプリを作成してテスト用認証情報を取得してください。
テスト用ショートコード:
174379テスト用パスキー:
bfb279f9aa9bdbcf158e97dd71a467cd2e0c893059b10f78e6b72ada1ed2c919
Africa's Talkingサンドボックス: https://account.africastalking.com — username=sandbox を使用し、APIキーは何でも構いません。
Claude Desktopでの使用方法
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) に追加してください:
{
"mcpServers": {
"mpesa": {
"command": "uvx",
"args": ["mpesa-mcp"],
"env": {
"MPESA_CONSUMER_KEY": "your_key",
"MPESA_CONSUMER_SECRET": "your_secret",
"MPESA_SHORTCODE": "174379",
"MPESA_PASSKEY": "your_passkey",
"MPESA_CALLBACK_URL": "https://yourdomain.com/mpesa/callback",
"MPESA_SANDBOX": "true",
"AT_USERNAME": "sandbox",
"AT_API_KEY": "your_at_key"
}
}
}
}Claude Codeでの使用方法
claude mcp add mpesa -- uvx mpesa-mcpclaude を実行する前に、シェルで環境変数を設定してください。
プロンプト例
接続後、AIエージェントに以下のように依頼できます:
"注文番号#1234のために、+254712345678へKES 500のSTKプッシュを送信して"
"決済 QKL8ABC123 が受信されたか確認して"
"今日のトウモロコシ価格をこれら5人の農家にSMSで送信して: [リスト]"
"フィールドエージェントにKES 50の通信料をチャージして: [電話番号リスト]"
実践的なシナリオ
フィールドエージェントへの支払い送金
"今日のデータ収集のために、これら12人のフィールドエージェント一人ひとりにKES 300のSTKプッシュを送信して: [リスト]"
エージェントは12件のSTKプッシュを順次トリガーし、各 checkout_request_id を追跡して確認をポーリングします。ユーザー側でのコード記述は不要です。
農家へのアラートと通信料チャージ
"川の水位が上昇していることを200人のガリッサの農家にSMSで知らせて。その後、報告の電話ができるように一人ずつKES 20の通信料をチャージして。"
1つのプロンプトで、Safaricom、Airtel、Telkom全体で200件のSMS送信と200件の通信料チャージが実行されます。
決済照合
"受領番号 OKL8M3B2HF が正常な支払いだったか、いくらだったかを確認して"
Claudeを使用してM-Pesa取引をリアルタイムで検証するサポートエージェントに役立ちます。
ツールのアノテーション
すべてのツールは MCPツールアノテーション を宣言しているため、クライアントは呼び出しを適切に制御できます:
ツール | readOnly | destructive | idempotent |
| ❌ | ✅ | ❌ |
| ✅ | ❌ | ✅ |
| ✅ | ❌ | ✅ |
| ❌ | ✅ | ❌ |
| ❌ | ✅ | ❌ |
Claude Desktopおよびその他のMCPクライアントは、支払い、SMS、または通信料操作をトリガーする前に確認を求めます。
サーバー検出
機能は .well-known/mcp.json を通じてアドバタイズされます。これは新しいMCPサーバーカード標準です。レジストリやブラウザは、接続することなくこのサーバーのツールをインデックス化できます。
# Check capabilities
curl https://raw.githubusercontent.com/gabrielmahia/mpesa-mcp/main/.well-known/mcp.jsonテストと精度
MCPエコシステムのベンチマーク (CData, 2026) によると、ほとんどのMCPサーバーは複雑なクエリに対して60〜75%の精度であり、特に書き込み操作のサイレントエラーや部分的なパラメータ適用に課題があることがわかっています。
mpesa-mcpは、3つのケニアの電話番号形式、境界値の金額、および省略可能なフィールドの欠落に対してテストされています:
pytest tests/ -v # run full suite
pytest tests/test_phone_formats.py # format normalization
pytest tests/test_boundary_amounts.py # min/max amount edge cases書き込み操作 (STKプッシュ、SMS、通信料) は、API呼び出しが行われる前に明示的な検証が行われます。
エコシステムの背景 — Mojaloop + MCP
Mojaloop (ゲイツ財団が出資) は、東アフリカおよびそれ以外の地域のDFSP間で銀行、モバイルマネーウォレット、加盟店を接続する決済の「相互運用性」を処理します。
mpesa-mcp は、AIコーディングアシスタントがM-Pesa決済をプログラムでトリガーおよび照会できるようにする「AIエージェントツールレイヤー」を処理します。
これらは補完的な関係にあります:
Mojaloop: 金融プロバイダー間の相互運用性レール
mpesa-mcp: AIエージェントをそのレールに接続するMCPインターフェースレイヤー
このパターンの詳細については、Mojaloopドキュメントへの貢献 を参照してください。
MCP vs A2A — 2つの異なるプロトコル
mpesa-mcp は MCP (Model Context Protocol) を実装しています。これはAIエージェントがツールとどのように対話するかを定義します。
これとは別に、エージェント同士がどのように対話するかを処理する補完的なプロトコル A2A (Agent-to-Agent) があります。これらは異なる問題を解決し、連携して動作します:
MCP: AIエージェント → mpesa-mcp → Daraja API / Africa's Talking
A2A: オーケストレーターエージェント ↔ 決済サブエージェント ↔ 通知サブエージェント
ほとんどの統合ではMCPのみで十分です。A2Aは、決済ワークフローが他の専門エージェントと連携するマルチエージェントシステムを構築する場合に関連してきます。
開発
git clone https://github.com/gabrielmahia/mpesa-mcp
cd mpesa-mcp
pip install -e ".[dev]"
pytest tests/ -vセキュリティ
APIキーをコミットしないでください。環境変数またはシークレットマネージャーを使用してください。 脆弱性の報告先: contact@aikungfu.dev
ライセンス
CC BY-NC-ND 4.0 — © 2026 Gabriel Mahia
最新情報の受け取り
新しいリリースや東アフリカのAPI開発に関する通知を受け取るには: アップデートを購読する →
または、GitHubでこのリポジトリをウォッチしてリリース通知を受け取ってください。
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gabrielmahia/mpesa-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server