gupshup mcp(企业网关)
Gupshup Enterprise Gateway API的MCP服务器(enterprise.smsgupshup.com 和 media.smsgupshup.com).
突破性变革:合作伙伴API与企业网关
此仓库有两行不兼容的代码:
- 企业网关(当前):使用
v0.2.0+(这个分支)。用途GUPSHUP_USER_ID/GUPSHUP_PASSWORD和GUPSHUP_WHATSAPP_USER_ID/GUPSHUP_WHATSAPP_PASSWORD. - 合作伙伴API(遗留):使用
v0.1.0标签。它曾经partner.gupshup.io和一个GUPSHUP_PARTNER_TOKENJWT有一套不同的工具。
如果你正在使用 enterprise.smsgupshup.com / media.smsgupshup.com,你想要 企业网关 (v0.2.0+).
发生了什么变化
此服务器现在以企业凭据为目标(userid/password)和网关方法,如 SENDMESSAGE 和 OPT_IN.
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
GUPSHUP_USER_ID | 仅限短信 | 短信网关用户id |
GUPSHUP_PASSWORD | 仅限短信 | 短信网关密码 |
GUPSHUP_WHATSAPP_USER_ID | 仅限WhatsApp | WhatsApp网关用户id |
GUPSHUP_WHATSAPP_PASSWORD | 仅限WhatsApp | WhatsApp网关密码 |
GUPSHUP_API_ENDPOINT | 否 | 默认值 https://enterprise.smsgupshup.com/GatewayAPI/rest |
GUPSHUP_WHATSAPP_API_ENDPOINT | 否 | 默认值 https://media.smsgupshup.com/GatewayAPI/rest |
GUPSHUP_LOG_LEVEL | 没有 | off (默认), info, debug |
GUPSHUP_REDACT_LOGS | 没有 | true 默认情况下;在日志中隐藏秘密/电话/消息 |
GUPSHUP_MAX_RETRIES | 否 | 瞬态错误的重试次数(默认值 3) |
GUPSHUP_RETRY_BASE_MS | 否 | 指数退避基准延迟(默认值 300) |
GUPSHUP_RETRY_MAX_MS | 否 | 每次重试的最大延迟上限(默认值 5000) |
GUPSHUP_RETRY_JITTER_MS | 否 | 随机抖动以分散重试次数(默认值 150) |
您必须至少设置一个凭据对:
- 短讯服务:
GUPSHUP_USER_ID+GUPSHUP_PASSWORD - WhatsApp
GUPSHUP_WHATSAPP_USER_ID+GUPSHUP_WHATSAPP_PASSWORD
安全本地设置
- 创建本地未跟踪的环境变量文件:
cp .env.example .env.enterprise- 填写秘密
.env.enterprise.
- 将env加载到shell中:
set -a
source .env.enterprise
set +a.env git会忽略文件;不要提交凭据。
克劳德代码MCP配置
使用本地生成路径:
{
"mcpServers": {
"gupshup": {
"command": "node",
"args": ["/Users/mac/gupshup-mcp/dist/index.js"],
"env": {
"GUPSHUP_USER_ID": "your-sms-user-id",
"GUPSHUP_PASSWORD": "your-sms-password",
"GUPSHUP_WHATSAPP_USER_ID": "your-wa-user-id",
"GUPSHUP_WHATSAPP_PASSWORD": "your-wa-password"
}
}
}
}工具
check_gateway_credentials:检查是否配置了SMS/WhatsApp凭据。whatsapp_opt_in:运行OPT_IN一个电话号码。whatsapp_send_template:发送模板/HSM消息。whatsapp_send_text:发送一条普通的WhatsApp消息。sms_send_text:发送短信。gateway_raw_request:具有自动注入凭据的高级直接方法调用。
工具示例
check_gateway_credentials
{}whatsapp_opt_in
{
"phoneNumber": "919999999999"
}whatsapp_send_template
{
"sendTo": "919999999999",
"templateId": "7091229",
"variables": {
"var1": "Alice",
"var2": "ORD-123"
}
}whatsapp_send_text
{
"sendTo": "919999999999",
"message": "Hello from gupshup-mcp"
}sms_send_text
{
"sendTo": "919999999999",
"message": "Your OTP is 123456"
}gateway_raw_request
{
"endpoint": "whatsapp",
"httpMethod": "POST",
"requestParams": {
"method": "SENDMESSAGE",
"send_to": "919999999999",
"format": "Text",
"msg_type": "TEXT",
"isTemplate": true,
"isHSM": true,
"template_id": "7091229",
"v": "1.1",
"auth_scheme": "plain",
"data_encoding": "TEXT",
"var1": "Alice",
"var2": "ORD-123"
}
}测试
npm install
npm test
npm run build
npm run smoke -- check然后运行增量实时检查:
npm run smoke -- opt-in 91XXXXXXXXXX
npm run smoke -- send-template 91XXXXXXXXXX YOUR_TEMPLATE_ID var1=Alice var2=Order123
npm run smoke -- send-sms 91XXXXXXXXXX "Test message"记录和重试行为
- 修改日志:当
GUPSHUP_LOG_LEVEL是info或debug,日志以JSON行的形式发出。 - 随着
GUPSHUP_REDACT_LOGS=true,凭据、电话号码和消息正文被屏蔽。 - 重试/回退适用于瞬态故障:
- HTTP: 429, 500, 502, 503, 504 - 网络/获取/超时错误
- 不重试身份验证/验证失败,例如
400/401/403.
实时网关烟雾测试(加载env后):
curl -sS -G "$GUPSHUP_WHATSAPP_API_ENDPOINT" \
--data-urlencode "userid=$GUPSHUP_WHATSAPP_USER_ID" \
--data-urlencode "password=$GUPSHUP_WHATSAPP_PASSWORD" \
--data-urlencode "method=OPT_IN" \
--data-urlencode "phone_number=91XXXXXXXXXX" \
--data-urlencode "v=1.1" \
--data-urlencode "format=json" \
--data-urlencode "auth_scheme=plain" \
--data-urlencode "channel=WHATSAPP"