Skip to main content
Glama
mbilisphe13
by mbilisphe13

momo-mcp

An MCP server for MTN Mobile Money — the largest mobile money network in Africa, with around 72 million active users across 16 countries. It lets an AI assistant request payments, check account status and track transactions.

It is locked to MTN's sandbox unless a production country is explicitly selected and separately acknowledged.

Node 20+. One runtime dependency (the MCP SDK) plus zod.

The safety model

MoMo has an unusual property worth exploiting: two independent environment levers that must agree.

sandbox

production

host

sandbox.momodeveloper.mtn.com

proxy.momoapi.mtn.com

X-Target-Environment

sandbox

a country, e.g. mtnghana

Either alone is a single point of failure. Sending the sandbox target to the production host, or a country target to the sandbox host, is always a mistake — and it is the kind that gets noticed afterwards.

So this server:

1. Derives both from one setting. You set MOMO_TARGET_ENVIRONMENT; the host follows. They cannot drift apart through configuration.

2. Re-checks coherence on every request, not just at startup. If host and target ever disagree, the request is refused rather than sent.

3. Requires two opt-ins for production. A country target and MOMO_ALLOW_PRODUCTION. Set only the first and the server refuses to start rather than silently running against the sandbox — believing you are live when you are not is worse than not starting.

4. Refuses an unknown target instead of defaulting to sandbox. A typo like mtnnowhere is an error, not a quiet fallback.

5. Refuses a currency the API would ignore. The sandbox settles only in EUR. Setting MOMO_CURRENCY=GHS against it would be silently discarded by MTN, so it is rejected here with an explanation instead.

6. Per-call confirmation, only where it means something. Production payments need confirm="CONFIRM LIVE PAYMENT" exactly. The sandbox does not: friction on imaginary money only teaches people to click through.

7. An amount ceiling, MOMO_MAX_AMOUNT, default 1000 in major units.

8. Validation before the wire. Phone numbers must be digits-only international format, reference ids must be real UUIDs, payer-visible text is length-bounded and single-line. MoMo rejects all of these with opaque errors; this server rejects them with clear ones.

Related MCP server: Mono Banking MCP Server

Setup

Getting started needs no company and no commercial agreement:

  1. Register at momodeveloper.mtn.com and subscribe to Collections. Copy the subscription key.

  2. npm install && cp .env.example .env, and paste that key in.

  3. Start the server and call momo_provision_sandbox_user once. It creates a sandbox API user and key and hands both back.

  4. Save them as MOMO_API_USER and MOMO_API_KEY, restart, then npm run check.

Step 3 is normally three hand-run curl calls with a UUID you generate yourself. The tool does it in one.

Tools

Tool

Reads/writes

Notes

momo_environment

read

Target, host, limits. No network call.

momo_provision_sandbox_user

write

Sandbox only. Creates an API user and key.

momo_verify_credentials

read

Confirms the credentials mint a token.

momo_account_balance

read

Balance of the configured account.

momo_check_account_active

read

Is this number a usable MoMo account? Free.

momo_request_to_pay

write

Asks a subscriber to approve. Confirmation required in production.

momo_payment_status

read

PENDING, SUCCESSFUL or FAILED.

A request to pay returns PENDING, not paid — the subscriber approves on their handset. Poll momo_payment_status with the returned referenceId.

Connecting a client

{
  "mcpServers": {
    "momo": {
      "command": "npx",
      "args": ["-y", "momo-mcp"],
      "env": {
        "MOMO_SUBSCRIPTION_KEY": "...",
        "MOMO_API_USER": "...",
        "MOMO_API_KEY": "...",
        "MOMO_TARGET_ENVIRONMENT": "sandbox"
      }
    }
  }
}

Tests

npm test

27 tests. Fifteen cover the guards as pure functions, including that every production country maps to the production host and that tampered host/target combinations are refused. Twelve spawn the real binary and speak MCP over stdio, checking that the sandbox default holds, that a production target refuses to start unacknowledged, that sandbox provisioning is refused in production, and that malformed amounts, phone numbers and reference ids are rejected before any network call.

Status

Early. Every endpoint path was probed directly against MTN's hosts and returns the expected unauthenticated responses, so the surface is right. But the server has not been run against a real subscription key — request and response bodies are built from MTN's documentation, not from observed traffic. Expect to adjust field names on first contact.

Not covered yet: disbursements and remittances beyond token minting, pre-approvals, invoices, and webhook/callback verification.

Licence

MIT

Available Tools

7 tools
momo_account_balanceGet MoMo account balanceB
Read-only

Read the balance of the configured MoMo account. Read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, so the trailing "Read-only" is pure repetition of structured data. The only added detail is that the account is "configured" (no account id parameter), but nothing is said about network/auth failure modes despite openWorldHint, or about what the balance represents.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action. The second sentence is wasted words because it restates the readOnlyHint annotation, costing a point.

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

Completeness3/5

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

For a simple zero-parameter read this is close to sufficient, but with no output schema the description never says what the balance result contains (currency, available vs. current balance) or that an error occurs when credentials are not configured. A sentence on the return shape would close the remaining gap.

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

Parameters4/5

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

The tool takes no parameters, so there is nothing for the description to compensate for; the baseline for a zero-parameter tool applies.

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

Purpose4/5

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

States a specific verb and resource ("Read the balance of the configured MoMo account"), which is clearly distinct from siblings like momo_check_account_active or momo_verify_credentials. It does not explicitly differentiate itself from those siblings, but the resource noun does most of that work.

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

Usage Guidelines2/5

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

There is no statement of when to call this versus momo_check_account_active, momo_verify_credentials, or momo_environment, and no preconditions (e.g., credentials must be configured first). Usage is only implied by the name and the word "configured".

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

momo_check_account_activeCheck a MoMo account is activeA
Read-only

Check whether a phone number is a usable MoMo account before trying to charge it. Read-only and free. Worth calling before any request to pay.

NameRequiredDescriptionDefault
phoneNumberYesInternational format, digits only, no +. e.g. 233240000000

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true; the description restates read-only and adds one genuinely new trait, that the call is free. It says nothing about the response shape, what an inactive/nonexistent number looks like, or error behavior, so it clears the lowered bar but does not enrich it much.

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 short sentences, purpose first, then the pre-charge recommendation. Every sentence carries distinct information and nothing is padded.

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?

For a single-parameter read-only check with a fully documented schema, the definition is nearly complete. The only meaningful omission is what the tool returns (e.g. an active/inactive flag) and how an unknown number is surfaced, which the agent would have to discover at call time.

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 phoneNumber format (international, digits only, no +) is fully documented in the schema; the description adds no parameter guidance beyond it, so the 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?

States a specific verb and resource ('Check whether a phone number is a usable MoMo account') and frames it against the charge flow, so it is clearly distinguishable from siblings like momo_request_to_pay and momo_payment_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?

Gives an explicit pre-condition ('before trying to charge it', 'before any request to pay'), which is exactly the routing signal an agent needs to sequence this call ahead of momo_request_to_pay.

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

momo_environmentShow MoMo environmentA
Read-only

Report which MTN MoMo environment this server targets, whether it moves real money, and the configured limits. Call this first, and always before any payment.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds meaningful context by saying it reports whether the server moves real money and what limits apply — a behavioral trait the agent needs before transacting. It does not describe the response shape in detail, which keeps it just short of a 5.

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?

One compact sentence with the effect first and the calling instruction second. Every clause carries load: what it reports, why it matters (real money), and when to call it.

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?

With no parameters and no output schema, the description must convey what comes back, and it does — environment, real-money status, and configured limits. That is everything an agent needs to decide to call it before a payment.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for 0 params applies. The description correctly stays silent on inputs rather than inventing them.

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?

States a specific verb+resource: reports the target MTN MoMo environment. It further pins down the exact scope (real-money status and configured limits), which clearly separates it from sibling tools like momo_account_balance or momo_request_to_pay.

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?

Gives an explicit trigger and ordering rule: 'Call this first, and always before any payment.' The condition that selects it over every payment sibling is stated directly, leaving nothing to inference.

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

momo_payment_statusCheck a MoMo paymentA
Read-only

Look up a payment by the referenceId returned from momo_request_to_pay. Read-only. Status is PENDING, SUCCESSFUL or FAILED.

NameRequiredDescriptionDefault
referenceIdYesThe UUID returned by momo_request_to_pay

TDQS

A4.2/5.0
Behavior4/5

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

The status enumeration (PENDING, SUCCESSFUL, FAILED) is genuine added value not present in annotations or any output schema. 'Read-only' merely restates readOnlyHint and the openWorldHint implication (network call to MoMo) is left unmentioned, so it is not a fully rich disclosure.

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 short sentences, front-loaded with the action and the provenance of the input. Nothing is padding.

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?

For a single-parameter read tool with no output schema, the description supplies the key return information (the three status values) and the source of the input. It omits whether SUCCESSFUL/FAILED are terminal and whether polling is safe, which would help an agent decide its next step.

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% and already says the referenceId is the UUID returned by momo_request_to_pay; the description repeats rather than extends that. No additional format, validation or failure-case guidance is added.

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?

States a specific verb and resource ('look up a payment') plus the exact lookup key ('by the referenceId'), and explicitly names the sibling tool that produces that key. An agent can distinguish it from momo_request_to_pay without opening either schema.

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 ties usage to the outcome of momo_request_to_pay, making the intended call sequence clear. It does not state exclusions such as whether polling is expected or how often the status may be re-checked.

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

momo_provision_sandbox_userProvision a sandbox API userA

SANDBOX ONLY. Create an API user and API key in the MoMo sandbox and return them, so you can finish setup without hand-running three curl commands. The values must then be saved to MOMO_API_USER and MOMO_API_KEY. Refused outright in production, where MTN issues these credentials.

NameRequiredDescriptionDefault
providerCallbackHostNoHostname MTN will call back, e.g. example.com. Not used in sandbox.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare openWorldHint=true and destructiveHint=false, so the description correctly adds non-obvious behavior: the tool is sandbox-enforced, refuses in production, and returns credentials that must be persisted to specific environment variables. It does not say whether calling it twice mints a new key, which matters given idempotentHint=false.

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 tight sentences, with the most important constraint ('SANDBOX ONLY') front-loaded. The 'three curl commands' rationale earns its place by explaining why the tool exists.

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?

With no output schema, the description compensates by saying exactly what comes back (API user and API key) and what the caller must do with it (save to MOMO_API_USER and MOMO_API_KEY). Combined with the production refusal, an agent has everything needed to call it 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 coverage is 100% and the single parameter is fully documented there ('Not used in sandbox'), so the schema carries the load. The description adds nothing about providerCallbackHost, though it implies the call needs no meaningful input in sandbox.

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?

States a specific verb and resource ('Create an API user and API key in the MoMo sandbox') plus scope ('SANDBOX ONLY'), which no sibling tool covers. An agent can immediately tell this is a credential-bootstrap tool distinct from payment or account 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?

Explicitly scopes usage to the sandbox and states the tool is 'Refused outright in production', which is a clear when-not-to-use signal. It doesn't name an alternative for production, but the description explains why none exists (MTN issues credentials there), which is nearly as good.

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

momo_request_to_payRequest a MoMo paymentA
Destructive

Ask a subscriber to approve a payment on their phone. Returns a referenceId; the payment is PENDING until they approve, so poll momo_payment_status. In a production environment this collects REAL money and requires explicit confirmation from the human you are working for - never supply the confirmation phrase on your own initiative.

NameRequiredDescriptionDefault
amountYesAmount in major units, e.g. 25.50
confirmNoRequired in production only. Must be exactly "CONFIRM LIVE PAYMENT".
payeeNoteNoKept on your side, max 160 chars
externalIdNoYour own order reference
phoneNumberYesPayer's number, digits only, no +
payerMessageNoShown to the payer, max 160 chars

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, and the description adds real value on top: it discloses the return value (referenceId), the PENDING-until-approved lifecycle, and the critical safety constraint that production moves real money and the confirmation phrase must never be supplied autonomously. That last point is behavior an agent cannot infer from any structured field.

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, zero waste. The action and its result lead, then the lifecycle and safety constraint follow in priority order.

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?

There is no output schema, and the description compensates by naming the referenceId return and the PENDING state, plus the polling path. Combined with annotations covering the safety profile, an agent has everything needed to call this correctly and responsibly.

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

Parameters4/5

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

Schema coverage is 100%, so parameters are already well documented and the baseline is 3. The description adds meaning beyond the schema for the `confirm` parameter by framing it as a human-authorization gate the agent must not self-supply, which is semantic guidance the schema's 'must be exactly ...' text does not convey.

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?

States a specific verb and resource ('Ask a subscriber to approve a payment on their phone') and immediately distinguishes itself from the sibling momo_payment_status by naming it as the follow-up polling step. An agent knows exactly what this initiates without opening the schema.

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?

Explicitly routes the agent to momo_payment_status for follow-up and states the production precondition (explicit human confirmation). It stops short of naming any alternative initiation path or when-not-to-call condition, but the sequencing and gating guidance is clear.

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

momo_verify_credentialsVerify MoMo credentialsA
Read-only

Check that the subscription key, API user and API key can mint an access token. Moves no money.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered; the description still adds real context by naming the three credentials consumed and disclosing that it performs a live token-mint call (i.e., it hits the network and will fail on bad credentials). 'Moves no money' is a useful explicit reassurance beyond the annotations, though failure behaviour and whether a token is returned are left unstated.

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 short sentences with no filler; the operational claim comes first and the safety caveat second. Every clause carries information the agent needs.

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?

For a zero-param, no-output-schema tool the description covers what is checked and the network/money-safety profile, which is nearly everything. It stops short of saying what a success or failure looks like (token returned vs. thrown error), which would fully close the loop given there is no output schema.

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

Parameters4/5

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

The tool takes zero parameters, so per the baseline there is nothing for the description to disambiguate and a 4 is appropriate. The description does usefully explain that the credentials are implicit (environment-configured) rather than arguments.

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

Purpose4/5

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

Specific verb ('Check') and resource (the subscription key / API user / API key trio minting an access token), which clearly separates it from money-moving siblings like momo_request_to_pay and from momo_check_account_active (account status, not credential validity). It never names a sibling explicitly, so the differentiation is inferential rather than stated.

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?

There is no explicit when-to-use or when-not-to-use statement and no alternative tool is named. The phrase 'Moves no money' implicitly signals a safe pre-flight/sanity check, which an agent can reasonably read as 'call this before live payment calls', but that is inference rather than guidance.

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. 7 tool updatesv0.1.0
    • First observedmomo_account_balance
    • First observedmomo_check_account_active
    • First observedmomo_environment
    • First observedmomo_payment_status
    • First observedmomo_provision_sandbox_user
    • First observedmomo_request_to_pay
    • First observedmomo_verify_credentials

TDQS

A4/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a clearly distinct action or resource: environment inspection, sandbox user provisioning, credential verification, balance reading, account activity checking, payment initiation, and payment status lookup. There is minimal risk of confusing tools, even though environment and verify_credentials both relate to configuration, because their outputs and purposes are explicitly different.

Naming Consistency4/5

All tools share a consistent momo_ prefix and snake_case formatting. The action/resource phrasing is slightly mixed (e.g., momo_environment and momo_account_balance are noun-like, while momo_verify_credentials and momo_request_to_pay are verb-like), but the pattern remains readable and predictable.

Tool Count5/5

Seven tools is well-scoped for a focused MoMo payments integration surface. Each tool earns its place by covering setup, verification, account validation, payment initiation, and status checking without obvious redundancy.

Completeness4/5

The surface covers the core collection workflow end to end: environment discovery, credential setup and verification, account validation, payment request, and status polling. Minor gaps exist around refunds, disbursements, or transaction listing, but those may be outside the intended collections-only scope.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to perform Nigerian banking operations including account management, payments, and identity verification through the Mono Open Banking API.
    59
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server that connects AI assistants to the CinetPay API for mobile money payments across Africa, enabling balance checks, payment initialization, transfers, and more.
    7
    8 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server for Mobile Money in Francophone West Africa that enables AI agents to make payments via MTN MoMo (sandbox) using tools like request_payment, check_payment_status, and disburse_payment.
    1
    MIT