M-Pesa支付集成服务

Daraja MCP是一个连接AI应用与Safaricom的Daraja API的协议服务器,实现AI驱动的M-Pesa支付处理和金融自动化。

  • by jameskanyiri
  • Python
  • 本地部署
  • 14 星标
  • 更新于
在 GitHub 查看 jameskanyiri/DarajaMCP

使用说明

MCP 级别

🚨 重要通知:存储库已移动

此项目已移动到新存储库。如果您希望贡献或访问最新版本,请访问:

https://github.com/paylinkmcp/paylink

模型上下文协议(MCP)服务器,旨在将人工智能应用程序与Safaricom的Daraja API集成,实现与M-Pesa服务的无缝交互。

⚠️ 警告:未准备好生产

该项目目前正在开发中,不建议用于生产。它的设计目的是:

  • 学习和实验
  • 开发和测试环境
  • 概念验证实施

对于生产使用,请确保:

  • 全面的安全测试
  • 正确的错误处理
  • 完成所有计划功能的实施
  • 符合Safaricom的生产要求

什么是MCP服务器?

MCP(模型上下文协议)服务器为LLM提供了与外部系统交互的能力。MCP服务器可以提供三种主要功能:

  • 资源:可以由客户端读取的类文件数据(如API响应)
  • 工具:LLM可以调用的函数(经用户批准)
  • 提示:帮助用户完成特定任务的预先编写的模板

Daraja MCP专门利用该架构将人工智能系统与Safaricom的Daraja M-Pesa API连接起来。

概述

Daraja MCP是人工智能、金融科技和M-Pesa之间的桥梁,使人工智能驱动的金融自动化变得容易和高效。通过标准化LLM(大型语言模型)和金融交易之间的连接,Daraja MCP允许人工智能驱动的应用程序轻松处理支付、检索交易数据并自动化金融工作流程。

关键能力

  • ✅ 人工智能驱动的M-Pesa交易 –使LLM能够处理B2C、C2B和B2B支付
  • ✅ 标准化集成 MCP确保与多种AI工具的兼容性
  • ✅ 安全且可扩展 –实现OAuth身份验证并支持企业级事务处理
  • ✅ 柔性自动化 –AI代理可以查询账户余额、生成发票并自动对账

需求

  • Python 3.12
  • Safaricom Daraja API凭证(消费者密钥和秘密)

安装

第一步:设置环境

  1. 安装uv包管理器

    对于Mac/Linux:

    curl -LsSf https://astral.sh/uv/install.sh | sh
    

    对于Windows(PowerShell):

    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
    
  2. 克隆存储库

    git clone https://github.com/jameskanyiri/DarajaMCP.git
    cd DarajaMCP
    
  3. 创建和激活虚拟环境

    uv venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    

    ✅ 预期输出:您的终端提示应更改,表示虚拟环境已激活。

  4. 再进行

    uv sync
    

步骤2:设置环境变量

  1. 复制示例环境文件:

    cp .env.example .env
    
  2. 更新 .env 文件中包含您的实际凭据和配置值。

注意:对于开发,请使用沙盒环境。准备就绪后切换到生产URL。

用法

使用Claude Desktop进行测试

  1. 安装克劳德桌面

    • 从下载并安装最新版本 克劳德桌面
    • 确保您运行的是最新版本
  2. 配置Claude桌面

    • 打开您的Claude Desktop配置文件:

      # On MacOS/Linux
      code ~/Library/Application\ Support/Claude/claude_desktop_config.json
      
      # On Windows
      code %APPDATA%\Claude\claude_desktop_config.json
      
    • 如果文件不存在,则创建该文件

  3. 添加服务器配置 选择以下配置之一:

    Anthropic推荐格式

    {
      "mcpServers": {
        "daraja": {
          "command": "uv",
          "args": [
            "--directory",
            "/ABSOLUTE/PATH/TO/PARENT/FOLDER/DarajaMCP",
            "run",
            "main.py"
          ]
        }
      }
    }
    

    工作配置(已测试)

    {
      "mcpServers": {
        "DarajaMCP": {
          "command": "/ABSOLUTE/PATH/TO/PARENT/.local/bin/uv",
          "args": [
            "--directory",
            "/ABSOLUTE/PATH/TO/PARENT/FOLDER/DarajaMCP",
            "run",
            "main.py"
          ]
        }
      }
    }
    

    注:

    • 替换 /ABSOLUTE/PATH/TO/PARENT 与你的实际路径
    • 找到完整的路径 uv,运行:
    # On MacOS/Linux
    which uv
    
    # On Windows
    where uv
    
  4. 验证配置

    • 保存配置文件
    • 重新启动克劳德桌面
    • 寻找锤子🔨 界面中的图标
    • 单击它查看可用工具:
      • generate_access_token
      • stk_push(未来实现)
      • query_transaction_status(未来实现)
      • b2c_支付(未来实施)
      • account_balance(未来实施)

工具和提示

支付工具

stk_push

发起M-Pesa STK推送请求,提示客户在其移动设备上授权付款。

输入:

  • amount (int):应支付的金额
  • phone_number (int):客户的电话号码

退货: JSON格式的M-PESA API响应

generate_qr_code

为付款请求生成二维码,客户可以扫描二维码进行付款。

输入:

  • merchant_name (str):公司名称/M-Pesa商户名称
  • transaction_reference_no (str):交易参考号
  • amount (int):销售/交易的总金额
  • transaction_type (字面意思[“BG”、“WA”、“PB”、“SM”、“SB”]):交易类型
  • credit_party_identifier (str):信用方标识符(手机号码、商业号码、代理截止日期、付款单或商户购买商品)

退货: JSON格式的M-PESA API响应,包含二维码数据

付款提示

stk_push_prompt

生成启动M-Pesa STK推送支付请求的提示。

输入:

  • phone_number (str):客户的电话号码
  • amount (int):应支付的金额
  • purpose (str):付款目的

退货: STK推送请求的格式化提示字符串

generate_qr_code_prompt

生成创建M-Pesa二维码支付请求的提示。

输入:

  • merchant_name (str):商家/企业名称
  • amount (int):待支付金额
  • transaction_type (str):交易类型(BG代表购买商品,WA代表钱包,PB代表付款单,SM代表汇款,SB代表汇款业务)
  • identifier (str):收件人标识符(收款号码、付款单、电话号码)
  • reference (str,可选):交易参考号。如果没有提供,将使用默认值。

退货: 用于生成二维码的格式化提示字符串

文档处理工具

create_source

创建从数据源到非结构化服务器的连接器以进行处理。

输入:

  • connector_name (str):要创建的源连接器的名称

退货: 源连接器详细信息,包括名称和ID

create_destination

创建从非结构化服务器到数据存储目标的连接器。

输入:

  • connector_name (str):要创建的目标连接器的名称

退货: 目标连接器详细信息,包括名称和ID

创建工作流

创建工作流以处理从源连接器到目标连接器的数据。

输入:

  • workflow_name (str):要创建的工作流的名称
  • source_id (str):源连接器的ID
  • destination_id (str):目标连接器的ID

退货: 工作流详细信息,包括名称、ID、状态、类型、来源、目的地和计划

运行工作流

执行工作流。

输入:

  • workflow_id (str):要运行的工作流的ID

退货: 工作流执行状态

get_workflow_details

获取有关工作流的详细信息。

输入:

  • workflow_id (str):获取详细信息的工作流ID

退货: 工作流详细信息,包括名称、ID和状态

fetch_documents

获取工作流执行过程中分析的文档。

输入: 无

退货: 分析文件清单

提示

create_and_run_workflow_prompt

生成一个提示,以创建和运行文档处理的工作流。

输入:

  • user_input (str):用户的处理要求

退货: 工作流创建和执行的格式化提示

例子:

# Example usage
prompt = await create_and_run_workflow_prompt(
    user_input="Process all PDF invoices from the invoices folder and store them in the processed folder"
)
# Returns: "The user wants to achieve Process all PDF invoices from the invoices folder and store them in the processed folder. Assist them by creating a source connector and a destination connector, then setting up the workflow and executing it."

资源

目前,没有可用的资源。

许可证

MIT许可证

致谢

  • Safaricom提供Daraja API
  • MCP框架的拟人化
  • 项目贡献者

联系

如有任何疑问,请在GitHub存储库上打开一个问题。