本项目是一个小型的模型上下文协议(MCP)服务器,借助 Goose 内的MCP UI模块,展示了智能商业的用户体验。它能为 “查找餐厅 → 查看菜单 → 模拟下单 → 生成收据” 这一简单流程返回丰富且交互式的HTML用户界面。
本项目旨在作为MCP扩展供Goose使用。以下是详细的使用步骤:
pnpm install
# 重新生成合成餐厅数据(5MB以上的文件)
# 你可以控制数据密度:
# GEN_MIN_PER_CATEGORY=3 GEN_MAX_PER_CATEGORY=5 pnpm run generate:data
pnpm run generate:data
# 按类别重新生成通用菜单
pnpm run generate:menus
# 在127.0.0.1:8000/mcp启动一个HTTP(可流式传输)MCP服务器
pnpm run dev
# 或者
pnpm run dev:mcp
你可以设置以下环境变量:
# 针对此服务器运行检查器
pnpm run dev:inspector
# 然后打开打印出的检查器URL;尝试直接执行工具
💡 使用建议:如果你的模型/智能体支持MCP UI,它将内联渲染HTML卡片、菜单和收据,并在点击按钮时调度工具调用。
find_restaurants – 按城市/州和查询条件搜索附近的合成餐厅view_restaurant – 餐厅详情卡片view_menu – 带有图片和价格的菜单(如果检测到 “Square”,则使用模拟目录;否则使用通用菜单)order_takeout – 交互式订单页面(可编辑数量、移除商品)view_receipt – 有趣的模拟收据src/server.ts – 带有渲染UI工具的MCP服务器src/ui/* – HTML外壳、样式和视图构建器src/lib/restaurants.ts – 通过OpenStreetMap Nominatim对合成卖家进行本地搜索和地理编码src/lib/square.ts – 用于 “Square检测” 和示例目录的小型模拟src/data/* – 生成的餐厅和分类菜单的JSON数据src/scripts/* – 上述数据的生成器scenarios.md – 示例对话流程和用户体验说明| 工具名称 | 参数 | 返回值 |
|---|---|---|
find_restaurants |
city(字符串,默认 “Austin”),state(可选),query(可选),limit(1..25,默认10) | 附近卖家的UI列表;“详情” 和 “立即下单” 按钮 |
view_restaurant |
business_id(字符串) | 包含地址、营业时间、电话、网站的UI卡片;行动呼吁按钮 |
view_menu |
business_id(字符串) | 如果检测到模拟的 “Square”,则使用模拟目录;否则使用主要类别的通用菜单 |
order_takeout |
business_id(字符串),items({ name, qty, price } 数组) | 带有总计和 “下单” 按钮的交互式订单表 |
view_receipt |
business_id(字符串),items(同上) | 有趣的演示收据UI |
本项目配置为在Netlify上作为无服务器函数部署:
pnpm run builddisthttps://your-site-name.netlify.app/mcphttps://your-site-name.netlify.app/devhttps://your-site-name.netlify.app/mcp本项目采用MIT许可证 - 详情请参阅 LICENSE 文件。