🚨 重要通知:仓库已迁移
该项目已迁移到新的仓库。如果您希望贡献或访问最新版本,请访问:
一个设计用于集成AI应用与Safaricom的Daraja API的模型上下文协议(MCP)服务器,使与M-Pesa服务的无缝交互成为可能。
⚠️ 警告:尚未准备好投入生产
本项目目前仍在开发中,不建议用于生产环境。它旨在用于:
- 学习和实验
- 开发和测试环境
- 概念验证实现
对于生产使用,请确保:
- 完整的安全性测试
- 正确的错误处理
- 所有计划功能的完全实现
- 符合Safaricom的生产要求
MCP(模型上下文协议)服务器提供了大型语言模型(LLMs)与外部系统交互的能力。MCP服务器可以提供三种主要类型的功能:
Daraja MCP特别利用这种架构连接AI系统与Safaricom的Daraja M-Pesa API。
Daraja MCP是AI、金融科技和M-Pesa之间的桥梁,使得AI驱动的金融自动化变得可访问且高效。通过标准化LLMs与金融交易之间的连接,Daraja MCP允许AI驱动的应用程序轻松处理支付、检索交易数据并自动化财务工作流程。
安装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"
克隆仓库
git clone https://github.com/jameskanyiri/DarajaMCP.git
cd DarajaMCP
创建并激活虚拟环境
uv venv
source .venv/bin/activate # 在Windows上:.venv\Scripts\activate
✅ 预期输出:终端提示符应改变,表明虚拟环境已被激活。
安装依赖项
uv sync
复制示例环境文件:
cp .env.example .env
使用实际凭证和配置值更新.env文件。
注意:开发时使用沙箱环境。准备就绪时切换到生产URL。
安装Claude Desktop
配置Claude Desktop
打开您的Claude Desktop配置文件:
# 在MacOS/Linux上
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
# 在Windows上
code %APPDATA%\Claude\claude_desktop_config.json
如果不存在,请创建该文件
添加服务器配置 选择以下配置之一:
{
"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
验证配置
发起M-Pesa STK推送请求,提示客户在移动设备上授权支付。
输入:
amount (int): 待支付金额phone_number (int): 客户电话号码返回: JSON格式的M-PESA API响应
生成付款请求的二维码,客户可以扫描此二维码进行支付。
输入:
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响应
生成用于发起M-Pesa STK推送支付请求的提示。
输入:
phone_number (str): 客户电话号码amount (int): 待支付金额purpose (str): 支付目的返回: 格式化的STK推送请求提示字符串
生成用于创建M-Pesa二维码支付请求的提示。
输入:
merchant_name (str): 商户/企业的名称amount (int): 待支付金额transaction_type (str): 交易类型(BG表示购买商品,WA表示钱包,PB表示Paybill,SM表示汇款,SB表示发送给商家)identifier (str): 收款人标识符(收银台号码、Paybill、电话号码)reference (str, 可选): 交易参考编号。如果没有提供,则使用默认值。返回: 格式化的二维码生成提示字符串
从数据源创建到非结构化服务器的连接器以进行处理。
输入:
connector_name (str): 要创建的源连接器名称返回: 包括名称和ID的源连接器详细信息
从非结构化服务器创建到目的地的连接器以存储数据。
输入:
connector_name (str): 要创建的目的地连接器名称返回: 包括名称和ID的目的地连接器详细信息
创建从源连接器到目的地连接器的数据处理工作流。
输入:
workflow_name (str): 要创建的工作流名称source_id (str): 源连接器的IDdestination_id (str): 目的地连接器的ID返回: 包括名称、ID、状态、类型、来源、目的地和计划的工作流详细信息
执行工作流。
输入:
workflow_id (str): 要运行的工作流ID返回: 工作流执行状态
获取关于工作流的详细信息。
输入:
workflow_id (str): 要获取详细信息的工作流ID返回: 包括名称、ID和状态的工作流详细信息
获取工作流执行期间分析过的文档。
输入: 无
返回: 分析过的文档列表
生成用于创建并执行文档处理工作流的提示。
输入:
user_input (str): 用户的处理需求返回: 工作流创建和执行的格式化提示
示例:
# 示例用法
prompt = await create_and_run_workflow_prompt(
user_input="处理发票文件夹中的所有PDF发票,并将它们存储在已处理文件夹中"
)
# 返回:"用户希望实现处理发票文件夹中的所有PDF发票,并将它们存储在已处理文件夹中。通过创建源连接器和目的地连接器来协助他们,然后设置工作流并执行它。"
当前没有可用资源。
如有任何疑问,请在GitHub仓库上打开问题。