LLM工具协议服务器

Bravova MCP Server是一个基于Go的模型上下文协议(MCP)服务器,将Bravova Superbravo杂货配送API暴露为LLM(如Claude)的工具。

  • by abrahamduran
  • Go
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 abrahamduran/bravova-mcp

使用说明

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

身份验证优先级:

  1. BRAVOVA_AUTH_TOKEN -如果设置,则直接使用
  2. BRAVOVA_USERNAME + BRAVOVA_PASSWORD -启动时自动登录
  3. 两者都没有-使用 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更改
  • 数据丢失或其他损坏

本项目为 教育和个人使用 只有。使用本软件即表示您了解这些风险,并对您的使用承担全部责任。

许可证

麻省理工学院-参见 许可证 了解详情。