返回市场
达拉雅mcp

达拉雅mcp

作者:jameskanyiri14 星标更新:2025-09-03

项目介绍

Daraja MCP

🚨 重要通知:仓库已迁移

该项目已迁移到新的仓库。如果您希望贡献或访问最新版本,请访问:

https://github.com/paylinkmcp/paylink

一个设计用于集成AI应用与Safaricom的Daraja API的模型上下文协议(MCP)服务器,使与M-Pesa服务的无缝交互成为可能。

⚠️ 警告:尚未准备好投入生产

本项目目前仍在开发中,不建议用于生产环境。它旨在用于:

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

对于生产使用,请确保:

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

什么是MCP服务器?

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

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

Daraja MCP特别利用这种架构连接AI系统与Safaricom的Daraja M-Pesa API。

概述

Daraja MCP是AI、金融科技和M-Pesa之间的桥梁,使得AI驱动的金融自动化变得可访问且高效。通过标准化LLMs与金融交易之间的连接,Daraja MCP允许AI驱动的应用程序轻松处理支付、检索交易数据并自动化财务工作流程。

关键能力

  • AI驱动的M-Pesa交易 – 允许LLMs处理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  # 在Windows上:.venv\Scripts\activate
    

    ✅ 预期输出:终端提示符应改变,表明虚拟环境已被激活。

  4. 安装依赖项

    uv sync
    

第二步:设置环境变量

  1. 复制示例环境文件:

    cp .env.example .env
    
  2. 使用实际凭证和配置值更新.env文件。

注意:开发时使用沙箱环境。准备就绪时切换到生产URL。

使用方法

使用Claude Desktop进行测试

  1. 安装Claude Desktop

    • Claude Desktop下载并安装最新版本
    • 确保您正在运行最新版本
  2. 配置Claude Desktop

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

      # 在MacOS/Linux上
      code ~/Library/Application\ Support/Claude/claude_desktop_config.json
      
      # 在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的完整路径,运行:
    # 在MacOS/Linux上
    which uv
    
    # 在Windows上
    where uv
    
  4. 验证配置

    • 保存配置文件
    • 重启Claude Desktop
    • 查看界面中的锤子🔨图标
    • 点击它查看可用工具:
      • generate_access_token
      • stk_push (未来实现)
      • query_transaction_status (未来实现)
      • b2c_payment (未来实现)
      • 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 (Literal["BG", "WA", "PB", "SM", "SB"]): 交易类型
  • credit_party_identifier (str): 信用方标识符(手机号码、商务号码、代理收银台、Paybill或商户购买商品)

返回: 包含二维码数据的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表示Paybill,SM表示汇款,SB表示发送给商家)
  • identifier (str): 收款人标识符(收银台号码、Paybill、电话号码)
  • reference (str, 可选): 交易参考编号。如果没有提供,则使用默认值。

返回: 格式化的二维码生成提示字符串

文档处理工具

create_source

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

输入:

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

返回: 包括名称和ID的源连接器详细信息

create_destination

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

输入:

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

返回: 包括名称和ID的目的地连接器详细信息

create_workflow

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

输入:

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

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

run_workflow

执行工作流。

输入:

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

返回: 工作流执行状态

get_workflow_details

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

输入:

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

返回: 包括名称、ID和状态的工作流详细信息

fetch_documents

获取工作流执行期间分析过的文档。

输入:

返回: 分析过的文档列表

提示

create_and_run_workflow_prompt

生成用于创建并执行文档处理工作流的提示。

输入:

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

返回: 工作流创建和执行的格式化提示

示例:

# 示例用法
prompt = await create_and_run_workflow_prompt(
    user_input="处理发票文件夹中的所有PDF发票,并将它们存储在已处理文件夹中"
)
# 返回:"用户希望实现处理发票文件夹中的所有PDF发票,并将它们存储在已处理文件夹中。通过创建源连接器和目的地连接器来协助他们,然后设置工作流并执行它。"

资源

当前没有可用资源。

许可证

MIT许可证

致谢

  • Safaricom提供Daraja API
  • Anthropic提供MCP框架
  • 项目贡献者

联系方式

如有任何疑问,请在GitHub仓库上打开问题。