Skip to main content
Glama
gabrielmahia

mpesa-mcp

by gabrielmahia

mpesa-mcp

동아프리카 핀테크 API를 위한 MCP 서버 — M-Pesa (Safaricom Daraja) 및 Africa's Talking 지원

AI 에이전트가 M-Pesa 결제를 트리거하고, 거래 상태를 확인하며, 20개 이상의 아프리카 통신 네트워크에 SMS를 보내고 통신비를 충전할 수 있는 기능을 제공합니다.

Tests PyPI License: MIT Glama Score Glama

mpesa-mcp MCP server

존재 이유

M-Pesa는 아프리카에서 PayPal보다 하루 더 많은 거래를 처리합니다. Africa's Talking은 SMS와 USSD를 통해 20개국 이상의 피처폰 사용자에게 도달합니다. 하지만 이들 중 MCP 서버를 제공하는 곳은 없습니다.

즉, 오늘날 구축된 모든 AI 에이전트(Claude, GPT, Gemini 또는 MCP 호환 런타임)는 별도의 통합 작업 없이는 M-Pesa 결제를 트리거하거나 스와힐리어 SMS를 보낼 수 없습니다.

mpesa-mcppip install 한 번으로 그 격차를 해소합니다.

Related MCP server: M-Pesa MCP Server

도구

도구

설명

mpesa_stk_push

고객의 M-Pesa 휴대폰으로 STK Push 결제 요청 트리거

mpesa_stk_query

STK Push 요청 상태 확인

mpesa_transaction_status

영수증 번호로 M-Pesa 거래 조회

sms_send

아프리카 네트워크 전역의 1~1,000명 수신자에게 SMS 발송

airtime_send

모든 가입자에게 통신비 충전 (KES, NGN, GHS, UGX 등)

지원 범위

  • M-Pesa: 케냐 (Safaricom Daraja v3) — STK Push, C2B, 거래 상태 조회

  • SMS/통신비: 케냐, 나이지리아, 가나, 탄자니아, 우간다, 르완다, 남아프리카 공화국 등 Africa's Talking을 통한 15개국 이상 지원

Glama (호스팅된 MCP)

mpesa-mcp는 Glama에서 호스팅된 MCP 서버로 이용 가능합니다:

mpesa-mcp MCP server mpesa-mcp score

설치

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 Push를 보내줘"

"결제 QKL8ABC123이 수신되었는지 확인해줘"

"오늘의 옥수수 가격을 이 5명의 농부에게 SMS로 보내줘: [목록]"

"현장 요원들을 위해 KES 50 통신비를 충전해줘: [번호 목록]"

실제 활용 시나리오

현장 요원 결제 지급

"오늘 데이터 수집을 위해 이 12명의 현장 요원 각각에게 KES 300 STK Push를 보내줘: [목록]"

에이전트가 12개의 STK Push를 순차적으로 트리거하고, 각 checkout_request_id를 추적하며, 확인을 위해 폴링합니다. 사용자가 코드를 작성할 필요가 없습니다.

농부 알림 + 통신비 충전

"강물이 불어나고 있다는 내용을 이 200명의 Garissa 농부들에게 SMS로 보내줘. 그런 다음 그들이 보고 전화를 할 수 있도록 각각 KES 20 통신비를 충전해줘."

프롬프트 하나로 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는 세 가지 케냐 전화번호 형식, 경계 금액 값, 누락된 선택적 필드에 대해 모두 테스트되었습니다:

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 push, SMS, 통신비)은 API 호출이 이루어지기 전에 명시적인 유효성 검사를 거칩니다.

생태계 맥락 — Mojaloop + MCP

Mojaloop(Gates Foundation 지원)는 결제 상호 운용성을 처리하며, 동아프리카 및 그 외 지역의 DFSP 간에 은행, 모바일 머니 지갑, 가맹점을 연결합니다.

mpesa-mcpAI 에이전트 도구 계층을 처리하며, AI 코딩 어시스턴트가 M-Pesa 결제를 프로그래밍 방식으로 트리거하고 조회할 수 있도록 합니다.

이 둘은 상호 보완적입니다:

  • Mojaloop: 금융 제공자 간의 상호 운용성 레일

  • mpesa-mcp: AI 에이전트를 해당 레일에 연결하는 MCP 인터페이스 계층

이 패턴에 대한 자세한 내용은 Mojaloop 문서 기여를 참조하세요.

MCP vs A2A — 두 가지 다른 프로토콜

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

라이선스

MIT — © 2026 Gabriel Mahia

최신 소식 받기

새로운 릴리스 및 동아프리카 API 개발 소식을 받아보세요: 업데이트 구독하기 →

또는 GitHub에서 이 저장소를 팔로우하여 릴리스 알림을 받으세요.

자매 패키지

패키지

설치

설명

wapimaji-mcp

pip install wapimaji-mcp

케냐 가뭄 정보 MCP 서버

civic-agent-kit

pip install civic-agent-kit

동아프리카 시민 AI SDK

관련 패키지

모두 MIT 라이선스 · 모두 동아프리카 시민 AI 스택의 일부

패키지

설치

설명

wapimaji-mcp

pip install wapimaji-mcp

케냐 가뭄 정보 MCP 서버

kenya-health-mcp

pip install kenya-health-mcp

케냐 보건 데이터 MCP — NHIF, 시설, 모성, 권리

civic-agent-kit

pip install civic-agent-kit

동아프리카 시민 AI SDK

전체 포트폴리오: gabrielmahia.github.io

Available Tools

5 tools
airtime_sendSend AirtimeA
Destructive

Send airtime top-up to any MTN/Safaricom/Airtel/Vodafone subscriber. Common use: NGO field incentives, survey rewards, agent payouts. No real airtime sent in sandbox mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
phoneYesRecipient phone in E.164 format e.g. '+254712345678'
amountYesAmount as string e.g. '50' (KES 50). Minimum KES 10 in production.
currency_codeNoISO currency code: KES, NGN, GHS, UGX, TZS, RWF, ZARKES

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive/destructiveHint=true. Description adds valuable sandbox behavior disclosure. Does not discuss other aspects like auth or rate limits, but the added sandbox note is useful beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each adding distinct value: action, use cases, sandbox note. No fluff, highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (return values not needed), the description covers purpose, common usage, and sandbox behavior. Lacks prerequisites or error scenarios, but sufficient for a simple tool with good annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already describes each parameter in detail (including minimum amount in production). Description does not add new parameter information beyond what's in the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states action (send airtime top-up) and target (specific network subscribers). Common use cases provided. Distinguishes from siblings like mpesa_stk_push which are for money transfers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Lists common use cases (NGO incentives, survey rewards, agent payouts) and mentions sandbox mode behavior. Does not explicitly compare to alternatives, but given sibling tools, context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mpesa_stk_pushM-Pesa STK PushA
Destructive

Trigger an M-Pesa STK Push — sends a payment prompt to the customer's phone. The customer enters their M-Pesa PIN to complete payment. Returns a CheckoutRequestID to track the transaction with mpesa_stk_query. Async: use mpesa_stk_query after 10-30 seconds to check completion.

ParametersJSON Schema
NameRequiredDescriptionDefault
phoneYesCustomer phone number (any Kenyan format: +254..., 07..., 254...)
amountYesAmount in KES (whole number, minimum 1)
account_refYesAccount reference shown to customer on their phone (max 12 chars)
descriptionNoTransaction description (max 13 chars)Payment

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond annotations: it explains that the tool is async, that the customer enters their PIN to complete payment, and that a CheckoutRequestID is returned for follow-up. This aligns with destructiveHint=true and provides useful actionable information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with four short sentences, all of which provide necessary information. It front-loads the primary action and sequentially covers process, return value, and follow-up. There is no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential aspects of a payment initiation tool: what it does (trigger STK push), the user interaction (customer enters PIN), the result (CheckoutRequestID), and the asynchronous follow-up (use mpesa_stk_query after 10-30 seconds). With an output schema present, the description does not need to detail return fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with descriptions for all parameters. The tool description does not add additional meaning beyond the schema (e.g., no examples or format clarification). Baseline 3 applies as schema already documents parameters adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool triggers an M-Pesa STK Push, sends a payment prompt to the customer's phone, and returns a CheckoutRequestID for tracking. It distinguishes itself from sibling tools like mpesa_stk_query by noting that the query tool is for checking completion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use the sibling tool mpesa_stk_query (after 10-30 seconds) to check completion. It implies that this tool is for initiating payments, but does not explicitly state when not to use it or mention alternatives like airtime_send.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mpesa_stk_queryM-Pesa STK QueryA
Read-onlyIdempotent

Check the status of an STK Push request. Poll this 10-30 seconds after calling mpesa_stk_push. ResultCode 0 = success, 1032 = cancelled by user, 1037 = timed out.

ParametersJSON Schema
NameRequiredDescriptionDefault
checkout_request_idYesCheckoutRequestID from mpesa_stk_push response

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint, idempotentHint), the description adds polling timing and result code meanings, disclosing behavioral traits like non-immediate result and cancellation handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, each essential: purpose, timing advice, and result interpretation. No extraneous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one parameter and existing output schema, the description fully covers polling strategy, result codes, and usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description merely restates the parameter's purpose ('CheckoutRequestID from mpesa_stk_push response') without adding additional meaning or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Check the status of an STK Push request' with a specific verb and resource, distinguishing it from siblings like mpesa_stk_push (initiates) and mpesa_transaction_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to poll 10-30 seconds after calling mpesa_stk_push, and interprets result codes (0=success, 1032=cancelled, 1037=timed out), providing clear when-to-use and expected outcomes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mpesa_transaction_statusM-Pesa Transaction StatusA
Read-onlyIdempotent

Query the status of any M-Pesa transaction by receipt number. Requires MPESA_INITIATOR_NAME and MPESA_SECURITY_CREDENTIAL env vars.

ParametersJSON Schema
NameRequiredDescriptionDefault
transaction_idYesM-Pesa receipt number e.g. QKL8XXXXXX

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, non-destructive. Description adds valuable prerequisite info (env vars) beyond annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both essential. Front-loaded with purpose, then prerequisite. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given simple tool with output schema and rich annotations, description is mostly complete. Missing rate limits or side-effect details, but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers 100% of parameter with example. Description adds no new semantics, so baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear specific verb (Query) and resource (transaction status) with receipt number. Distinguishes from sibling tools like airtime_send and sms_send.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mentions required environment variables but does not explicitly state when to use this tool vs alternatives like mpesa_stk_query. Usage is implied by name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sms_sendSend SMSA
Destructive

Send SMS to one or many recipients via Africa's Talking. Supports up to 1,000 recipients per call. Works across Kenya, Nigeria, Ghana, Tanzania, Uganda, and 15+ African markets. Returns per-recipient status and cost.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesSMS message text. Unicode supported (Kiswahili, etc.)
sender_idNoOptional pre-registered alphanumeric sender ID
recipientsYesList of phone numbers in E.164 format e.g. ['+254712345678']

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and idempotentHint=false. The description adds valuable behavioral details: the maximum recipient limit, geographic coverage, and that it returns per-recipient status and cost. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences long, each serving a distinct purpose: what the tool does, its capacity and scope, and its return value. No wasted words, and the most critical information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with three well-documented parameters and an existing output schema, the description covers the essential aspects: operation, capacity, geographic scope, and return format. It is sufficiently complete for an agent to understand and use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema itself clearly documents all three parameters. The description adds no additional parameter-level meaning beyond what is in the schema (e.g., it mentions Unicode support which is already in the message description). Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool sends SMS via Africa's Talking, specifies the maximum recipients (1,000), mentions geographic coverage, and indicates return of per-recipient status and cost, distinguishing it from sibling tools like airtime_send or mpesa_stk_push which perform different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool (sending SMS to one or many recipients) and includes practical limits (1,000 recipients). It does not explicitly mention when not to use it or compare to alternatives, but the sibling tools are sufficiently different that no confusion arises.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedairtime_send
    • First observedmpesa_stk_push
    • First observedmpesa_stk_query
    • First observedmpesa_transaction_status
    • First observedsms_send

TDQS

A4.2/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct function: airtime sending, STK push initiation, STK push status query, transaction status by receipt, and SMS sending. There is no overlap or ambiguity.

Naming Consistency4/5

Most tools follow a verb_noun or noun_verb pattern (e.g., airtime_send, sms_send, mpesa_stk_push), but mpesa_transaction_status lacks a verb, breaking the pattern slightly.

Tool Count5/5

With 5 tools, the server is well-scoped for its purpose, covering core M-Pesa and SMS operations without being too few or too many.

Completeness3/5

The set covers STK push initiation/query and basic transaction status, but lacks airtime status, B2C/C2B transfers, or account balance queries, leaving notable gaps for a full M-Pesa integration.

Maintenance

ActivityActive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Open-source MCP server that streamlines payment integration for AI agents and financial apps in Africa, providing unified tools for providers like M-Pesa.
    1
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that integrates Safaricom's M-PESA Daraja API with Claude, enabling natural language payment processing and real-time transaction notifications.
    3
    -
  • A
    license
    C
    quality
    D
    maintenance
    An MCP server that enables AI assistants to interact with Interswitch APIs for payments, transfers, VAS, cardless paycodes, Transaction Search, Card 360, lending, payouts, agency banking, and fintech card-processing utilities.
    74
    58 npm
    1
    MIT