使用说明
@mrmonei/mcp服务器
MCP服务器 许多 API允许任何AI代理通过自然语言访问钱包、转账、加密货币发送、掉期、出口和账单支付。
适用于Claude Desktop、Cursor和任何兼容MCP的代理平台。
快速开始
克劳德桌面版
添加 claude_desktop_config.json:
{
"mcpServers": {
"monei": {
"command": "npx",
"args": ["-y", "@mrmonei/mcp-server"],
"env": {
"MONEI_API_KEY": "your_api_key_here",
}
}
}
}
重新启动克劳德桌面。您应该在工具菜单中看到可用的Monei工具。
光标(本地)
添加 .cursor/mcp.json 在您的项目中:
{
"mcpServers": {
"monei": {
"command": "npx",
"args": ["-y", "@mrmonei/mcp-server"],
"env": {
"MONEI_API_KEY": "your_api_key_here"
}
}
}
}
光标(通过铁路远程)
{
"mcpServers": {
"monei": {
"url": "https://mcp.monei.cc/sse",
"headers": {
"Authorization": "Bearer your_api_key_here"
}
}
}
}
环境变量
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
MONEI_API_KEY |
是(stdio) | - | 您的Monei API密钥。HTTP/SSE模式下不需要--传递 Authorization: Bearer 改为标题 |
MONEI_TRANSPORT |
没有 | stdio |
运输方式: stdio, http,或 sse |
PORT |
没有 | 3000 |
HTTP/SSE服务器端口 |
MONEI_TIMEOUT |
没有 | 30000 |
请求超时(毫秒)。最多120000 |
MONEI_API_URL |
没有 | https://api.monei.cc |
覆盖实时API基础URL |
运输方式
| 模式 | 用例 | 如何开始 |
|---|---|---|
stdio |
Claude Desktop,本地游标 | 默认值——只需运行服务器 |
http |
自定义代理、API集成 | MONEI_TRANSPORT=http node dist/index.js |
sse |
光标遥控器,Claude.ai | MONEI_TRANSPORT=sse node dist/index.js |
在 http 和 sse 模式服务器是无状态和多用户的。每个客户端通过 Authorization: Bearer <key>一个部署的服务器为许多用户服务。
工具参考
账户
monei_get_account
返回经过身份验证的用户的个人资料。
输入: 无
退货:
{
"id": "string",
"email": "string",
"firstName": "string",
"lastName": "string",
"phone": "string"
}
示例提示: “我以谁的身份登录?”
钱包
monei_get_wallet
返回NGN余额和所有子钱包。
输入: 无
退货:
{
"ngnBalance": "number",
"subWallets": [{ "id": "string", "type": "string", "balance": "number" }]
}
示例提示: “我的钱包余额是多少?”
monei_get_evm_portfolio
返回EVM链的完整代币组合,包括美元价值。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
chainId |
number | Yes | 链ID。56=BSC,137=多边形,8453=基础,1=以太坊 |
示例提示: “我在Base上有什么代币?”
monei_get_solana_portfolio
返回美元价值的SOL和所有SPL代币余额。
输入: 无
示例提示: “显示我的Solana钱包”
monei_get_my_solana_address
返回用户的Solana钱包地址。
输入: 无
示例提示: “我的索拉纳地址是什么?我想收到SOL。”
monei_get_supported_networks
列出所有支持的EVM链及其链ID和名称。
输入: 无
示例提示: “你支持什么锁链?”
存款
monei_generate_deposit_link
生成用户可以打开以存入NGN的支付链接。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
amount |
number | 是 | 要存入的NGN金额 |
退货:
{
"paymentLink": "string",
"reference": "string"
}
示例提示: “我想把50000韩元存入我的Monei账户”
monei_check_deposit_status
通过参照检查存款状态。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
reference |
string | 是 | 引用自 monei_generate_deposit_link |
示例提示: “我的押金通过了吗?”
NGN支出
monei_send_naira_to_bank
将NGN发送到尼日利亚银行账户。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
amount |
number | Yes | 金额(NGN) |
bankCode |
string | 是 | 来自的银行代码 monei_get_banks |
accountNumber |
string | 是 | 10位账号 |
transactionPin |
string | 是 | 用户的4-6位交易PIN |
narration |
string | 否 | 传输描述 |
总是打电话
monei_verify_bank_account首先,在发送之前向用户显示帐户名。
示例提示: “向我的GTBank账户0123456789发送20000韩元”
monei_send_naira_to_user
通过电子邮件或电话将NGN发送给另一个Monei用户。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
receiver |
string | 是 | 收件人电子邮件或电话号码 |
amount |
number | Yes | 金额(NGN) |
transactionPin |
string | 是 | 用户的4-6位交易PIN |
示例提示: “发送5000韩元至john@gmail.com"
银行公用事业
monei_get_banks
返回受支持的尼日利亚银行及其代码的完整列表。
输入: 无
示例提示: “你支持哪些银行?” / “GTBank的银行代码是什么?”
monei_verify_bank_account
验证银行账号并返回账户持有人姓名。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
accountNumber |
string | 是 | 10位银行帐号 |
bankCode |
string | 是 | 来自的银行代码 monei_get_banks |
退货:
{
"accountName": "string",
"accountNumber": "string",
"bankCode": "string"
}
在任何银行付款之前,始终调用此功能,并向用户显示帐户名称以供确认。
示例提示: “验证GTBank的帐户0123456789”
加密货币发送
monei_send_crypto_evm
在任何支持的EVM链上发送本机令牌或ERC-20。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
to |
string | 是 | 收件人钱包地址(0x…) |
amount |
string | 是 | 以字符串形式发送的金额(例如“0.1”) |
chainId |
number | 是 | 链ID |
tokenAddress |
string | 否 | ERC-20合约地址。省略本机令牌发送 |
示例提示:
- “向0x742d发送0.01 ETH…”
- “在BSC上向0x发送100 USDT…”
monei_send_crypto_solana
在Solana上发送SOL或SPL令牌。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
to |
string | 是 | 收件人Solana地址 |
amount |
string | 是 | 要发送的金额 |
tokenMintAddress |
string | 否 | SPL令牌造币厂地址。忽略SOL发送 |
示例提示:
- “向5AH3发送2个SOL…”
- “将索拉纳的50美元兑换成5AH3…”
代币互换
monei_swap_tokens_evm
在EVM上交换代币。根据令牌是本机令牌还是ERC-20令牌自动路由。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
amount |
string | 是 | 要交换的金额 |
chainId |
number | 是 | 链ID |
tokenIn |
string | 否 | ERC-20合约待售。出售本地代币时省略 |
tokenOut |
string | 否 | 购买ERC-20合约。购买本地代币时忽略 |
slippageBps |
number | No | 基点滑动公差。默认值:50(0.5%) |
示例提示:
- “在基础上将0.1 ETH兑换为USDC”
- “在Polygon上将100美元兑换成USDT”
monei_swap_tokens_solana
在Solana上交换代币。SOL和SPL令牌之间自动路由。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
amount |
number | string | Yes |
inputMint |
string | 否 | 要出售的代币的Mint地址。销售SOL时省略 |
outputMint |
string | 否 | 要购买的代币的薄荷地址。购买SOL时省略 |
slippageBps |
number | No | 基点滑动公差。默认值:50(0.5%) |
示例提示:
- “将1 SOL兑换为USDC”
- “将100美元兑换成SOL”
匝道
monei_get_offramp_quote
获取向NGN出售加密货币的实时汇率。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
token |
string | 是 | 要出售的代币: USDT, USDC,或 CNGN |
network |
string | 是 | 网络: base, polygon, arbitrum-one, bnb-smart-chain, ethereum, optimism |
amount |
number | 是 | 要出售的代币数量 |
fiat |
string | 否 | 要接收菲亚特。违约: NGN |
示例提示: “今天在Base卖出100 USDT的价格是多少?”
monei_sell_crypto_for_naira
出售加密货币并将收益存入尼日利亚银行账户。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
amount |
number | 是 | 要出售的代币数量 |
token |
string | 是 | 要出售的代币: USDT, USDC,或 CNGN |
network |
string | 是 | 令牌所在的网络 |
fiatCurrency |
string | 否 | 默认值: NGN |
bankCode |
string | 是 | 目标银行代码 |
accountNumber |
string | 是 | 目标帐号 |
accountName |
string | 是 | 帐户持有人姓名来自 monei_verify_bank_account |
退货:
{
"reference": "string",
"status": "string",
"amounts": { "crypto": {}, "fiat": {}, "exchangeRate": 0, "totalFee": 0 },
"onChain": { "depositAddress": "string" }
}
呼叫
monei_get_offramp_quote首先显示速率。呼叫monei_verify_bank_account为了得到accountName。在调用此功能之前,请向用户显示两者以供确认。
示例提示: “向我的GTBank账户0123456789出售100 USDT”
monei_track_offramp
检查出口交易的状态。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
reference |
string | 是 | 引用自 monei_sell_crypto_for_naira |
状态: initiated → awaiting_deposit → deposit_received → processing → fiat_sent → completed
示例提示: “我的USDT销售情况如何?”
账单支付
monei_get_bill_providers
列出某个账单类别的可用账单和套餐。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
category |
string | 是 | AIRTIME, MOBILEDATA, CABLEBILLS,或 UTILITYBILLS |
billerName |
string | 条件性 | 非电力类别所需(例如。 MTN, DSTV) |
示例提示:
- “有哪些MTN数据计划可用?”
- “你们支持哪些电力供应商?”
monei_pay_bill
支付账单。根据以下内容路由到正确的付款方式 category.
常见输入: category (必填),加上特定类别的字段:
| 类别 | 必填字段 |
|---|---|
AIRTIME |
phoneNumber, biller, amount |
MOBILEDATA |
phoneNumber, biller, itemCode |
UTILITYBILLS |
meterNumber, disco, amount |
CABLEBILLS |
smartcardNumber, biller, itemCode |
所有类别也接受 isSchedule, scheduleData, saveBeneficiary, beneficiaryName.
总是打电话
monei_get_bill_providers首先获得有效biller和itemCode价值观。
示例提示:
- “购买1000 MTN通话时间08012345678”
- “向我的IKEDC电表支付5000韩元12345678901”
- “订阅DSTV Compact智能卡1234567890”
- “每月1号支付我的DSTV”
monei_get_bill_history
返回所有类别的最近账单付款历史记录。
输入: 无
示例提示: “显示我最近的账单付款”
交易
monei_get_transaction_history
返回最近的钱包交易。
输入: 无
示例提示: “显示我最近的交易记录”
monei_get_transaction
按ID或引用获取单个事务。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
reference |
string | 是 | 事务ID或引用字符串 |
示例提示: “交易ref_abc123发生了什么?”
常见代理模式
这些自然语言提示开箱即用:
检查余额并发送奈拉
“检查我的余额,然后向我的GTBank账户0123456789发送10000韩元。银行代码是058。”
代理流: get_wallet → verify_bank_account → 与用户确认→ send_naira_to_bank
全部出口流量
“我想在Polygon上向我的Access Bank账户0987654321出售200 USDT”
代理流: get_offramp_quote → get_banks → verify_bank_account → 显示费率+账户名称→ 确认→ sell_crypto_for_naira → track_offramp
购买通话时间
“购买500 Airtel通话时间08098765432”
代理流: get_bill_providers (AIRTIME,Airtel)→ get_wallet → pay_bill
交换和检查
“在Base上将0.05 ETH兑换为USDC,然后向我展示我更新的投资组合”
代理流: get_evm_portfolio → 确认→ swap_tokens_evm → get_evm_portfolio
对等传输
“发送₦2000至jane@example.com从我的Monei钱包”
代理流: get_wallet → 确认余额→ send_naira_to_user
故障排除
工具未显示在Claude Desktop中
- 检查一下
MONEI_API_KEY已设置claude_desktop_config.json - 配置更改后完全重新启动Claude Desktop
- 检查stderr日志:
tail -f ~/Library/Logs/Claude/mcp*.log(macOS)
Authentication failed — your API key is invalid or expired
- 在Monei仪表板中验证您的API密钥
- 确保
MONEI_ENV匹配您的密钥所属的环境(沙盒vs实时) - 在HTTP/SSE模式下,检查
Authorization: Bearer正在发送标头
Rate limit exceeded — please wait a moment
- 服务器自动重试最多3次,并采用指数回退
- 如果您在工具响应中看到这一点,则重试已用尽——请等待30秒,然后重试
Session not found or expired (SSE模式)
- SSE会话已过期(1小时TTL)或服务器已重新启动
- 重新打开
/sse在大多数情况下,MCP客户端会自动重新连接
工具输入上的Zod验证错误
- 代理传递了错误的类型(例如。
"100"而不是100金额) - 所有金额字段都使用
z.coerce.number()因此接受字符串数字 - 如果看到此情况,请检查错误消息中的确切字段名,并修复代理提示
安全
- API密钥从不出现在日志、错误消息或堆栈跟踪中
- 事务PIN是请求范围的。从未存储、缓存或记录
- Zod验证在接触SDK之前运行。无效输入立即被拒绝
许可证
麻省理工学院