Swiggy Telegram机器人
使用Telegram中的自然语言下Swiggy订单 克劳德 和那个 旋转MCP (模型上下文协议)。
- Swiggy Food --搜索餐厅、浏览菜单、管理购物车、下食品订单(COD)
- Instamart --搜索产品、购物车、下杂货订单(COD)
- 外出就餐 --发现餐厅、检查位置、预订餐桌(免费预订)
先决条件
- Node.js 18+
- Telegram Bot令牌 来自@BotFather
- 无烟煤API键
- (可选)用于下订单的Swiggy OAuth令牌——请参阅 Swiggy MCP清单
设置
- 克隆并安装
cd swiggy-tg-bot
npm install- 配置环境
cp .env.example .env编辑 .env:
- TELEGRAM_BOT_TOKEN --来自@BotFather - ANTHROPIC_API_KEY --从Anthropic控制台 - SWIGGY_AUTH_TOKEN --可选;下单所需。通过以下方式获取 MCP 检查员: - 跑 npx @modelcontextprotocol/inspector - 传输:SSE或流式HTTP,URL,例如。 https://mcp.swiggy.com/food - 打开身份验证设置→ 快速OAuth流程→ copy access_token 进入 SWIGGY_AUTH_TOKEN
- 运行机器人
npm start或者自动重启: npm run dev
如果您看到“Swiggy工具无法加载”
- 在中设置令牌
.env\
添加一行: SWIGGY_AUTH_TOKEN= \ 仅使用 access_token OAuth响应中的值(否 Bearer ,没有引用)。保存后重新启动机器人 .env.
- 使用新的错误消息\
机器人现在返回真正的失败原因(例如“SWIGGY_AUTH_TOKEN缺失”、“MCP初始化失败:401”、“无会话id”)。检查Telegram中的消息,查看令牌是否错误、过期或MCP服务器无法访问。
- 令牌到期\
Swiggy代币到期。如果它曾经工作过,然后停止了,那就换一个新的 access_token 通过OAuth(例如MCP Inspector中的引导OAuth)并更新 SWIGGY_AUTH_TOKEN.
用法
- /开始 --简介和提示
- /帮助 --示例提示
- 或者只需输入自然语言,例如:
- *“查找我附近的biryani餐厅并将其添加到购物车中”* - *“将牛奶和面包添加到我的Instamart购物车中,以便送货到家”* - *“明天晚上8点在Koramangala的一家意大利餐厅预订一张2人桌”*
提示: 请注明您的收货地址(例如“使用我的家庭住址”)。订单仅为货到付款,一旦下单就不能取消。请勿同时使用Swiggy应用程序以避免会话问题。
运作原理
- 您在中发送消息 电报.
- 消息转到 克劳德 (人类信息API)与Swiggy MCP工具定义(食品,Instamart,Dineout)。
- Claude解释用户的意图,调用正确的MCP工具(搜索、购物车、订单等),并在Telegram中回复。
所以: 电报→ 克劳德(选择工具)→ 我们称之为Swiggy MCP→ 结果→ 克劳德(格式回复)→ 电报。 你的 Swiggy OAuth令牌 仅在调用MCP服务器时使用(步骤4)。
故障排除:OAuth令牌(“未能发现OAuth元数据”)
如果MCP检查器(或其他OAuth客户端)显示 “未能发现OAuth元数据” 当您使用Swiggy MCP URL时(https://mcp.swiggy.com/food),这是因为:
- OAuth发现在 域根,不低于
/food. - 有效的发现URL:
https://mcp.swiggy.com/.well-known/oauth-authorization-server - 许多客户端从MCP URL获取发现(例如。
.../food/.well-known/...),Swiggy不提供服务,因此发现失败。
获取代币的方法:
- OAuth流程引导(推荐)\
在MCP Inspector(或您的客户)中,使用 “引导OAuth流” 而不是“快速OAuth流”,并设置:
- 发现/授权服务器: https://mcp.swiggy.com/.well-known/oauth-authorization-server\ 或 手动: - 授权URL: https://mcp.swiggy.com/auth/authorize - 令牌URL: https://mcp.swiggy.com/auth/token - 重定向URI:其中之一 白名单URI (例如。 http://localhost/callback).\ 如果该工具要求提供自定义发现URL,请使用上面的发现URL。
- 首先使用受支持的客户端\
Swiggy支架 克劳德桌面,光标,VS代码,Raycast,Kiro在其中一个中添加Swiggy MCP(例如Cursor或Claude Desktop),在那里完成OAuth,然后使用bot;令牌由该客户端管理。对于独立的机器人,你仍然需要一个令牌(例如通过上面的Guided OAuth)。
- 无令牌运行\
你可以走了 SWIGGY_AUTH_TOKEN 未设置。搜索、菜单浏览和类似的只读流可以在没有身份验证的情况下工作;为您的帐户下订单或更新购物车通常需要一个令牌。你可以尝试不带令牌的机器人,稍后再添加一个。
- 问Swiggy\
有关更多选项(例如,额外的重定向URI或无头令牌流),请联系 Swiggy开发团队.
使用Cursor(mcp.json)中的令牌
Cursor不会将Swiggy OAuth令牌存储在可读的地方。 你的 ~/.cursor/mcp.json 有 swiggy-food 和 "headers": {} --Cursor要么没有完成Swiggy的OAuth,要么将令牌保存在系统密钥链中,不将其写入配置。所以你 不能 自动从Cursor“获取”令牌。
如果您获得令牌(例如通过 OAuth引导 在MCP检查器中使用发现URL https://mcp.swiggy.com/.well-known/oauth-authorization-server),您可以:
- 放进去
.env\
SWIGGY_AUTH_TOKEN=your_token_here
- 或者把它放在Cursor的mcp.json中 (光标+这个机器人的一个位置):\
编辑 ~/.cursor/mcp.json 并在下面添加令牌 swiggy-food (或 swiggy-instamart / swiggy-dineout):
"swiggy-food": {
"type": "http",
"url": "https://mcp.swiggy.com/food",
"headers": { "Authorization": "Bearer YOUR_ACCESS_TOKEN" }
}机器人将使用 SWIGGY_AUTH_TOKEN 从env开始;如果没有设置,它将从中读取令牌 ~/.cursor/mcp.json 对于任何Swiggy MCP条目。
