使用说明
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--来自@BotFatherANTHROPIC_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=<paste your access_token here>
仅使用access_tokenOAuth响应中的值(否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条目。
