Skip to main content
Glama

mpesa-mcp

東アフリカのフィンテックAPI用MCPサーバー — M-Pesa (Safaricom Daraja) および Africa's Talking

AIエージェントに、M-Pesa決済のトリガー、取引状況の確認、SMS送信、および20以上のアフリカの通信ネットワークへの通信料チャージ機能を提供します。

Tests PyPI License: CC BY-NC-ND 4.0 Glama Score Glama

mpesa-mcp MCP server

なぜこれが必要なのか

M-Pesaは、アフリカにおいてPayPalよりも多くの1日あたりの取引を処理しています。Africa's Talkingは、SMSやUSSDを通じて、20カ国以上のベーシックフォンユーザーにリーチしています。しかし、どちらもMCPサーバーを提供していません。

つまり、現在構築されているすべてのAIエージェント(Claude、GPT、Gemini、またはMCP互換ランタイム)は、カスタム統合作業なしではM-Pesa決済をトリガーしたり、スワヒリ語のSMSを送信したりすることができません。

mpesa-mcp は、pip install 一つでそのギャップを埋めます。

ツール

ツール

説明

mpesa_stk_push

顧客のM-Pesa電話にSTKプッシュ決済プロンプトを送信

mpesa_stk_query

STKプッシュリクエストのステータスを確認

mpesa_transaction_status

受領番号でM-Pesa取引を照会

sms_send

アフリカのネットワーク全体で1〜1,000人の受信者にSMSを送信

airtime_send

加入者に通信料をチャージ (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.comusername=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-mcp

claude を実行する前に、シェルで環境変数を設定してください。

プロンプト例

接続後、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

mpesa_stk_push

mpesa_stk_query

mpesa_transaction_status

sms_send

airtime_send

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でこのリポジトリをウォッチしてリリース通知を受け取ってください。

-
security - not tested
F
license - not found
-
quality - not tested

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