mcpField
M
MyOTP.App

MyOTP.App

远程服务
mcp.myotp.app安全11 天前更新

关于 MyOTP.App

MyOTP.App MCP 服务将一次性密码 API 提供给兼容 MCP 的 Agent,可通过 SMS、WhatsApp 或 Telegram 发送和验证验证码。工具还涵盖账户、用量及充值,并支持本地 stdio 和托管 HTTP 传输。

主要功能

  1. 01通过 SMS、WhatsApp、Telegram 发送验证码
  2. 02验证验证码并查询发送状态
  3. 03创建账户并查看账户信息
  4. 04查询交易用量及充值报价
  5. 05发起积分充值流程
  6. 06工具提供结构化输出模式

适用场景

  1. 01为应用用户发送手机号验证码
  2. 02验证用户提交的一次性密码
  3. 03查看验证码送达情况和账户余额
  4. 04在 Agent 工作流中创建账户或充值

MCP 相关

服务将 MyOTP.App REST API 封装为 MCP 工具,供兼容客户端调用。支持本地 stdio 和 Streamable HTTP,也提供托管 MCP 端点。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.myotp.app/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://mcp.myotp.app/mcp需要授权
安装包
npm@myotp/mcp0.1.14

工具

10
参数类型必填说明
brandstring否显示给接收者的发送方品牌名称(3–16 个字母数字字符,可包含点号)。默认使用与 API key 关联的注册品牌;若未注册,则使用 'MyOTP.App'。
channelenum否发送渠道。'sms'(默认)适用于 190 多个国家/地区。'whatsapp' 最适合印度/巴西/印度尼西亚/墨西哥/尼日利亚/土耳其。'telegram' 最适合注重隐私的用户。三种渠道使用相同的 API。sms | whatsapp | telegram
otp_codestring否提供自行预生成的数字 OTP 验证码(3–8 位;telegram 为 4–8 位),而不使用 MyOTP 生成的验证码。适用于已从其他系统获得验证码的情况。
force_sendboolean否如果为 true,即使该电话号码已有有效 OTP,也会发送新的 OTP。默认情况下,API 在这种情况下会返回 409。请谨慎使用——向同一号码重复发送可能触发运营商级别的垃圾信息过滤。
otp_lengthinteger否自动生成的 OTP 位数。范围为 3–8 位(telegram 为 4–8 位)。默认值为 6。需要 CUSTOM_OTP_LENGTH 权限(Business 计划或更高)。
return_otpboolean否如果为 true,API 响应将以纯文本形式包含生成的 OTP 验证码。适用于测试,或希望通过自己的渠道发送 OTP 的情况。默认值为 false。安全提示:切勿在生产环境的用户流程中启用此选项。
otp_validityinteger否OTP 的有效时长(秒)。范围为 30–14400 秒(telegram 为 30–3600 秒)。默认值为 300 秒(5 分钟)。需要 CUSTOM_OTP_EXPIRY 权限(Business 计划或更高)。
phone_numberstring是目标电话号码,使用国际格式,不带前导 + 或 0。必须为 7–15 位数字,且首位不能为 0。示例:美国号码为 '14155550123',英国号码为 '447911123456'。
template_orderinteger否按序号选择特定消息模板(1–99)。WhatsApp 有四种:12(英语,5 分钟验证码)、13(英语,10 分钟)、14(西班牙语 es_MX,5 分钟)、15(西班牙语 es_MX,10 分钟)。在 WhatsApp 上,模板自身的有效期会覆盖 otp_validity。需要 ACCESS_TO_TEMPLATES 权限(Business 套餐及以上)。Telegram 不支持此功能(Telegram 会生成自己的消息文本)。

详细介绍

@myotp/mcp — MyOTP.App MCP 服务

smithery 徽章

一个 Model Context Protocol 服务,可将 MyOTP.App 的 OTP API 提供给任何兼容 MCP 的 AI Agent:Claude Desktop、Claude Code、Cursor、Windsurf、Codex,以及其他任何支持 MCP 的应用。

直接通过与 Agent 的聊天,或通过 Agent 构建的任何应用,发送和验证一次性密码(SMS、WhatsApp、Telegram)。

功能

提供 10 个工具:

工具用途
generate_otp通过 SMS、WhatsApp 或 Telegram 发送 OTP。返回 message_id。
verify_otp验证最终用户提交的代码。
check_otp_status检查送达状态/OTP 是否仍有效。
extend_otp延长有效 OTP 的时间,无需重新发送。
get_account_info检查 API 密钥和 IP 白名单是否配置正确(调用 GET /me)。
get_usage_report按日期范围分页查看交易记录。
create_account无需 API 密钥即可创建 Agent 账户,并返回一次性密钥。
get_account_status检查验证状态、余额、套餐和账户状态;还可选择重新发送验证邮件。
get_topup_quote获取信用额度购买报价,并返回 USDC 和银行卡支付命令。
top_up_credits返回 MPP 支付质询和重试详情,或已充值结果。

每个工具都声明了 outputSchema,因此客户端可以对 structuredContent 进行类型检查;错误结果包含 { error, status?, endpoint?, body? },且 isError: true。

所有工具都会调用 MyOTP 公共 REST API:https://api.myotp.app。如需使用模拟服务,可通过 MYOTP_BASE_URL 环境变量覆盖。

安装

无需全局安装任何内容——npx 会按需获取并运行最新版本:

npx @myotp/mcp

请使用带作用域的名称。myotp-mcp 是包内的二进制文件名,并不是 npm 上的包,因此 npx myotp-mcp 无法解析。

如果要固定版本或在本地安装:

npm install --save-dev @myotp/mcp

获取 API 密钥

使用电子邮件地址和可选的姓名调用 create_account。这是唯一一个无需配置密钥的账户工具。请立即保存返回的 API 密钥:它只会显示一次,且新账户的余额为零。将该密钥配置为 stdio 的 MYOTP_API_KEY,或在托管请求中发送该密钥,然后调用 get_topup_quote 或 top_up_credits 添加信用额度。

确认邮件需要由人工点击确认。确认后即可使用银行卡充值;未确认前也可以使用 USDC 充值。人工注册仍可通过 myotp.app/sign-up/ 进行,并遵循控制面板的电子邮件、电话号码、API 密钥和 IP 允许列表流程。

与 Claude Desktop 搭配使用

编辑 Claude Desktop 配置文件(macOS 上为 ~/Library/Application Support/Claude/claude_desktop_config.json,Windows 上为 %APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "myotp": {
      "command": "npx",
      "args": ["-y", "@myotp/mcp"],
      "env": {
        "MYOTP_API_KEY": "your-32-character-api-key"
      }
    }
  }
}

重启 Claude Desktop。向 Agent 发送请求:“向我的手机 +1 415 555 0123 发送测试 OTP。” 它会调用 generate_otp 并报告 message_id。

与 Claude Code 搭配使用

将其添加到项目的 .mcp.json:

{
  "mcpServers": {
    "myotp": {
      "command": "npx",
      "args": ["-y", "@myotp/mcp"],
      "env": {
        "MYOTP_API_KEY": "your-32-character-api-key"
      }
    }
  }
}

也可以通过 Claude Code CLI 全局注册:

claude mcp add myotp -- npx -y @myotp/mcp
# Set the env var separately, then restart claude.

与 Cursor 搭配使用

Cursor 读取相同的 .mcp.json 格式。将其添加到工作区设置或 .cursor/mcp.json:

{
  "mcpServers": {
    "myotp": {
      "command": "npx",
      "args": ["-y", "@myotp/mcp"],
      "env": {
        "MYOTP_API_KEY": "your-32-character-api-key"
      }
    }
  }
}

在 URL 中传递配置的网关

某些 MCP 网关会通过查询参数而非请求头传递每位用户的设置。托管服务接受 ?apiKey=<key>(也接受 ?api_key=,或包含 apiKey 字段的 base64url ?config= JSON 数据)作为备用方式。请求头中的 X-API-Key 或 Authorization: Bearer 密钥始终优先于 URL 中的密钥。在 Smithery 上,配置架构会将密钥映射到 x-api-key 请求头,因此无需使用 URL 参数。

与 Codex CLI 搭配使用

Codex 读取 TOML,而不是 JSON。添加到 ~/.codex/config.toml:

[mcp_servers.myotp]
command = "npx"
args = ["-y", "@myotp/mcp"]

[mcp_servers.myotp.env]
MYOTP_API_KEY = "your-32-character-api-key"

Codex 也可以通过 HTTP 连接托管服务,而无需在本地启动任何程序。它会将令牌作为 Authorization: Bearer 发送,而托管端点也接受它作为 X-API-Key 的别名:

[mcp_servers.myotp]
url = "https://mcp.myotp.app/mcp"
bearer_token_env_var = "MYOTP_API_KEY"

对于只支持 stdio 服务的旧版 Codex,在条目上方添加 experimental_use_rmcp_client = true。

如果使用托管 URL,请将 108.61.176.199 添加到 API 密钥的 IP 允许列表中。 托管调用会从该地址而不是你的计算机访问 MyOTP API,在允许该地址之前,每次调用都会返回 403。上面的 stdio 选项没有此要求,因为请求是从你自己的计算机发出的。

与其他客户端搭配使用

任何支持 MCP 的客户端都可以使用。stdio 配置块的格式处处相同 (command: npx、args: ["-y", "@myotp/mcp"]、环境中的 MYOTP_API_KEY),因此 Windsurf、Zed、Continue、OpenClaw、Hermes 和 Grokbot 都可以使用上述配置块对应的 JSON 或 TOML 配置。

对于托管客户端,将其指向 https://mcp.myotp.app/mcp,并将密钥作为 X-API-Key 或 Authorization: Bearer 发送。使用客户端实际支持设置的方式。

传输模式

stdio(默认 — 用于本地 Agent 安装)

服务从 stdin 读取 JSON-RPC 消息,并将消息写入 stdout。API 密钥来自 MYOTP_API_KEY 环境变量,该变量在 Agent 启动服务时设置。这是 Claude Desktop、Claude Code 和 Cursor 等桌面应用的合适模式。

MYOTP_API_KEY=sk_... npx @myotp/mcp
# or explicitly
MYOTP_API_KEY=sk_... npx @myotp/mcp --stdio
Streamable HTTP(用于托管服务)

运行 HTTP 服务,任何兼容 MCP 的 Agent 都可以连接到它。需要身份验证的工具会在每次请求中通过 X-API-Key 接收 API 密钥,因此一个托管实例可以为多个租户提供服务;匿名工具则不需要此请求头。

npx @myotp/mcp --http --port 3000
# or with the env switch
MYOTP_MCP_TRANSPORT=http PORT=3000 npx @myotp/mcp

MCP 端点为 POST /mcp(根据规范,也接受 GET 和 DELETE)。健康检查端点为 GET /healthz。

我们在 https://mcp.myotp.app/mcp 托管的就是此服务。将客户端指向该 URL,并在需要身份验证的工具请求中发送 X-API-Key: <your-key>。

配置

环境变量默认值描述
MYOTP_API_KEY—你的 MyOTP.App API 密钥。需要身份验证的工具必需;create_account 和 get_topup_quote 无需此密钥即可使用。
MYOTP_BASE_URLhttps://api.myotp.appAPI 基础 URL。可覆盖为模拟服务地址。
MYOTP_MCP_TRANSPORTstdio设置为 http 以 HTTP 模式启动。
PORT3000HTTP 监听端口。
HOST0.0.0.0HTTP 绑定地址。
MCP_PATH/mcpMCP 流量的 HTTP 路由。
MCP_SESSION_IDLE_MS1800000HTTP 模式:在此时长内没有请求后关闭会话。客户端会收到 404 并重新初始化。
MCP_SESSION_BUSY_MS3600000HTTP 模式:关闭已打开的请求(例如 SSE 流)启动时间超过此时长的会话。
MCP_MAX_SESSIONS1000HTTP 模式:同时保留的最多会话数;新会话会关闭最近最少使用的会话,优先关闭空闲会话。

工具调用示例

配置好服务后,你可以向 Agent 提出这样的请求:

  • “通过 WhatsApp 向 14155550123 发送一次性密码。”
  • “使用 MyOTP 验证该电话号码对应的代码 482913。”
  • “上次的一次性密码送达了吗?查询消息 ID a1b2… 的状态。”
  • “显示我过去 7 天的一次性密码使用情况。”
  • “我的这个 MyOTP 账户还有多少余额?”
  • “为 [email protected] 创建一个 MyOTP Agent 账户。”
  • “检查我的 Agent 账户邮箱是否已验证,如有需要,请重新发送验证邮件。”
  • “查询再购买 500 个 MyOTP 额度的价格。”
  • “发送失败,提示 NoBalance。充值 100 个额度。”

在底层,Agent 会选择合适的工具,根据我们发布的 JSON Schema 验证输入,并调用 MyOTP API。

作为 Agent 购买额度

Agent 可以自行购买 MyOTP 额度:一次 402、一次付款,无需结账页面或银行卡表单。每个额度售价 $0.02,每次调用最低购买 25 个($0.50),最高 50,000 个。每个账户在滚动 24 小时内通过银行卡充值的上限为 $100;USDC 充值没有上限。试用账户首次充值后会转为 Starter 按量付费定价方案,不会创建订阅。

发送 OTP 时,如果返回 HTTP 403 insufficient balance 或 NoBalance,请调用 get_topup_quote 查看价格,或调用 top_up_credits 开始购买。top_up_credits 会先获取报价,然后使用已配置的 API 密钥向 /v1/topup 发起请求,不携带支付凭证。预期的 402 响应中包含 MPP 支付选项:Tempo 上的 USDC,以及在银行卡限额允许时通过 Stripe 使用银行卡或 Link。该工具会返回解码后的支付选项、质询 ID、准确的重试 URL 和请求体,以及带有凭证占位符的标头。

MCP 服务无法保管 Agent 的钱包。请在本地将返回命令中的 your MyOTP API key 替换为你的密钥后运行;MPP 客户端会付款,并使用支付凭证重试相同请求。重试后,额度会充入账户。如果运行时已使用 MPP 凭证提供程序封装 fetch,该工具可以直接接收并返回成功充值的响应。

USDC 钱包(创建 mppx 账户会生成钱包,测试网会自动充值):

npx -y [email protected] https://api.myotp.app/v1/topup -X POST -H "x-api-key: your MyOTP API key" -H "content-type: application/json" -d "{\"credits\":100}"

银行卡或 Link 钱包(请先运行一次 npx @stripe/link-cli auth login):

npx -y @stripe/link-cli mpp pay https://api.myotp.app/v1/topup -X POST -d "{\"credits\":100}" -H "x-api-key: your MyOTP API key" --context "Buying MyOTP.App credits to send one-time passcodes over SMS, WhatsApp and Telegram for phone verification in my app."

创建账户

create_account 工具会调用实时的、无需身份验证的 POST /v1/agent/register 端点,传入电子邮件地址和可选姓名。响应包含完整账户记录和一个 32 字符的 API 密钥,该密钥仅显示一次。请立即保存,并设置 MYOTP_API_KEY(或配置托管客户端发送该密钥)。Agent 账户的 IP 允许列表开放,无需验证手机号,初始余额为 0,并使用 Starter 按量付费方案。

系统会向提供的地址发送确认邮件。用户必须在 24 小时内点击链接,才能启用银行卡充值;USDC 充值可立即使用。使用 get_account_status 检查 email_verified、余额、方案和账户状态;也可以传入 resend_verification: true,再次发送邮件。然后使用 get_topup_quote 或 top_up_credits 为账户充值,再发送 OTP。

开发

git clone https://github.com/brntech/myotp-agentkit
cd myotp-agentkit/mcp-server
npm install
npm run build
npm run start:stdio   # or start:http

安全说明

  • 此服务不会记录你的 API 密钥。
  • 在 HTTP 模式下,每个请求都只从 X-API-Key 读取 API 密钥——启动时不会配置全局密钥。
  • MyOTP API 还会强制执行 IP 白名单;请确保运行此服务的主机(或 HTTP 模式下终端用户的 IP)已添加到所用密钥的允许列表中。
  • 以纯文本形式返回 OTP 验证码(return_otp: true)仅用于测试——切勿在生产环境的用户流程中启用。

许可证

MIT — 参见 LICENSE。

由 BroadNet Technologies 构建。有问题?请联系 [email protected]。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。