Bravova MCP服务器
一个基于Go-的MCP(模型上下文协议)服务器,将Bravova Superbravo杂货配送API公开为Claude等LLM的工具。
特性
- 36个MCP工具 涵盖整个Bravova API:
- 7个公共目录工具(章节、文章、搜索) - 2个身份验证工具(登录、注销) - 7购物车工具(获取、添加、批量添加、更新、删除、清除、计数) - 10个收藏夹和列表工具(收藏夹CRUD、购物清单CRUD、批量操作) - 10个其他客户工具(地址、订单、订单详情、重复订单、忠诚度、推荐)
- 自动登录 通过环境变量
- stdio传输 便于与Claude Desktop和其他MCP客户端集成
- 仅限标准库 -无外部依赖关系
安装
从源代码构建
cd bravova-mcp
go build -o bravova-mcp ./cmd/bravova-mcp用法
运行服务器
./bravova-mcp服务器支持通过登录 login 工具或通过环境变量自动登录。
Claude桌面配置
添加到您的 claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
选项1:使用凭据(自动登录)
{
"mcpServers": {
"bravova": {
"command": "/path/to/bravova-mcp",
"env": {
"BRAVOVA_USERNAME": "your-cedula",
"BRAVOVA_PASSWORD": "your-password"
}
}
}
}选项2:使用预先存在的身份验证令牌
{
"mcpServers": {
"bravova": {
"command": "/path/to/bravova-mcp",
"env": {
"BRAVOVA_AUTH_TOKEN": "your-auth-token",
"BRAVOVA_STORE_ID": "1008"
}
}
}
}配置凭据后,MCP会在启动时自动登录,并从您的收货地址中自动检测商店ID。当直接使用令牌时,设置 BRAVOVA_STORE_ID 手动进行正确定价。
环境变量
| 变量 | 描述 |
|---|---|
BRAVOVA_AUTH_TOKEN | 预先存在的身份验证令牌(最高优先级) |
BRAVOVA_USERNAME | Cedula用于自动登录 |
BRAVOVA_PASSWORD | 自动登录密码 |
BRAVOVA_STORE_ID | 定价/可用性的默认商店ID |
身份验证优先级:
BRAVOVA_AUTH_TOKEN-如果设置,则直接使用BRAVOVA_USERNAME+BRAVOVA_PASSWORD-启动时自动登录- 两者都没有-使用
login手动工具
商店ID行为:
- 登录(用户名/密码):商店ID会从您的送货地址自动检测到
- 仅使用令牌:set
BRAVOVA_STORE_ID为了获得正确的定价(例如。,1008) - 如果未设置:工具如
search_articles除非你通过,否则不会退还价格storeId明确地
可用工具
公共目录工具(无需身份验证)
| 工具 | 说明 |
|---|---|
list_sections | 列出所有产品类别/部分 |
get_section | 获取特定部分的详细信息 |
list_articles | 列出带有可选过滤器的产品 |
get_article | 获取详细的产品信息 |
search_articles | 按名称搜索产品 |
search_suggestions | 获取搜索自动完成建议 |
check_auth | 验证身份验证令牌 |
身份验证工具
| 工具 | 说明 |
|---|---|
login | 使用用户名(cedula)和密码进行身份验证 |
logout | 注销并使会话无效 |
购物车工具(需要身份验证)
| 工具 | 说明 |
|---|---|
get_cart | 获取购物车内容 |
get_cart_count | 获取购物车中的商品数量 |
add_to_cart | 将文章添加到购物车 |
bulk_add_to_cart | 一次将多篇文章添加到购物车 |
update_cart_quantity | 更新购物车商品的数量 |
remove_from_cart | 从购物车中删除商品 |
clear_cart | 从购物车中删除多个商品 |
收藏夹工具(需要身份验证)
| 工具 | 说明 |
|---|---|
check_favorite | 检查产品是否受到青睐 |
add_favorite | 将产品添加到收藏夹 |
remove_favorite | 从收藏夹中删除产品 |
list_favorites | 列出所有喜爱的产品 |
购物清单工具(需要身份验证)
| 工具 | 说明 |
|---|---|
list_user_lists | 列出用户的购物清单 |
create_user_list | 创建新的购物清单 |
get_user_list | 获取包含文章的列表 |
update_user_list | 重命名购物清单 |
delete_user_list | 删除购物清单 |
add_article_to_list | 将文章添加到列表中 |
remove_article_from_list | 从列表中删除文章 |
bulk_remove_articles_from_list | 从列表中删除多篇文章 |
其他客户工具(需要身份验证)
| 工具 | 说明 |
|---|---|
register_device | 注册推送通知设备 |
list_addresses | 列出已保存的收货地址 |
list_orders | 列出订单历史记录 |
get_order | 获取详细的订单信息 |
repeat_order | 将以前订单中的商品添加到购物车 |
get_loyalty_info | 获取Bravísima忠诚度计划信息 |
get_most_purchased | 获取购买最多的商品 |
get_home_recommendations | 获得个性化推荐 |
测试
测试初始化和工具/列表
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"capabilities":{}}}' | ./bravova-mcp
echo '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | ./bravova-mcp测试公共端点
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"capabilities":{}}}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_sections","arguments":{}}}' | ./bravova-mcp测试搜索
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"capabilities":{}}}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_articles","arguments":{"query":"leche"}}}' | ./bravova-mcp测试登录
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"capabilities":{}}}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"login","arguments":{"username":"YOUR_CEDULA","password":"YOUR_PASSWORD"}}}' | ./bravova-mcp项目结构
bravova-mcp/
├── cmd/
│ └── bravova-mcp/
│ └── main.go # Entry point
├── internal/
│ ├── api/
│ │ ├── client.go # HTTP client
│ │ ├── models.go # Data models
│ │ ├── articles.go # Article endpoints
│ │ ├── sections.go # Section endpoints
│ │ ├── cart.go # Cart endpoints
│ │ ├── orders.go # Order endpoints
│ │ ├── auth.go # Auth endpoints
│ │ ├── customer.go # Customer endpoints (favorites, addresses, etc.)
│ │ └── lists.go # Shopping lists endpoints
│ ├── mcp/
│ │ ├── server.go # MCP protocol handler
│ │ ├── tools.go # Tool definitions
│ │ └── types.go # MCP protocol types
│ └── transport/
│ └── stdio.go # stdio transport
├── go.mod
└── README.md未来功能(很高兴有)
- \[ \] 可流式HTTP传输 -根据MCP规范添加支持流媒体的HTTP传输(SSE传输是传统的)
- \[ \] 令牌到期时自动重新登录 -检测身份验证失败,如果凭据可用,则自动重新登录,重试失败的请求,并通知用户会话已刷新
- \[ \] 令牌持久性 -将令牌保存到
~/.bravova-token成功登录后,在启动时加载以避免重新身份验证 - \[ \] 令牌过期检测 -在令牌过期之前主动刷新令牌
免责声明
这个项目是 非官方的 并且是 与Supermercados Bravo或其任何子公司或附属公司没有附属关系、背书或联系.
该软件与Supermercados Bravo的API交互的方式可能违反其服务条款。使用此软件的风险由您自行承担。作者对以下情况不承担任何责任:
- 账户暂停或终止
- Supermercados Bravo采取的任何法律行动
- 破坏功能的API更改
- 数据丢失或其他损坏
本项目为 教育和个人使用 只有。使用本软件即表示您了解这些风险,并对您的使用承担全部责任。
许可证
麻省理工学院-参见 许可证 了解详情。
