办公室菜单API

一个提供Intercom伦敦、都柏林和旧金山办公室每周早餐和午餐菜单实时访问的Cloudflare Workers应用。

  • by jasonpraful
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 jasonpraful/intercom-menu

使用说明

内部通讯办公室菜单API

Cloudflare Workers应用程序,为伦敦、都柏林和旧金山的对讲机办公室提供每周早餐和午餐菜单的实时访问。

特性

  • 多地点支持:为伦敦、都柏林和旧金山办事处提供菜单数据
  • 每周菜单管理:商店和供应全周菜单(周一至周五)
  • 智能搜索:按项目名称、饮食要求或膳食类型搜索
  • 膳食过滤器:查找纯素、素食、无麸质和无乳制品选项
  • 全面营养数据:完整的营养信息和过敏原详细信息
  • REST API:用于web访问的传统HTTP端点
  • MCP集成:用于会话菜单查询的AI就绪工具
  • 交互式浏览器:用于测试端点的内置web UI

快速开始

先决条件

  • 包子 (推荐)或npm
  • 启用Workers的Cloudflare帐户
  • 牧马人CLI(bun add -g wrangler)

安装

# Clone the repository
git clone <repository-url>
cd intercom-london-menu

# Install dependencies with Bun (recommended)
bun install

# Or with npm
npm install

本地开发

# Create environment variables file
cp .dev.vars.example .dev.vars

# Add your API key and menu URL
echo "API_KEY=your-secure-api-key" >> .dev.vars
echo "LONDON_MENU_URL=https://menu-source-url" >> .dev.vars

# Start development server
bun run dev

服务器将在以下时间启动 http://localhost:8788

部署

# Deploy to Cloudflare Workers
bun run deploy

# Or use wrangler directly
wrangler deploy

API 文档

完整的API文档和交互式示例可在根端点获得:

# Open in browser for interactive API explorer
http://localhost:8788/

# Or via curl to see available endpoints
curl http://localhost:8788/

MCP工具

该应用程序为AI助手提供了4个MCP工具:

  1. 按日期查询菜单:获取特定日期和地点的菜单
  2. 搜索菜单项:使用灵活的过滤器进行搜索
  3. 获取每周菜单:获取完整的周数据
  4. 按饮食标签查找食物:快速饮食过滤

在以下位置连接到MCP: http://localhost:8788/mcp

环境变量

创建一个 .dev.vars 文件包含:

# Required for workflow creation
API_KEY=your-secure-api-key-here

# Menu source URL
LONDON_MENU_URL=https://menu-source.example.com

对于生产环境,请在Cloudflare仪表板的Workers>Settings>Variables下设置这些参数。

建筑

┌─────────────┐     ┌──────────────┐     ┌────────────────┐
│   Client    │────▶│  REST API    │────▶│ Durable Object │
│             │     │  (Hono)      │     │  (Menu Store)  │
└─────────────┘     └──────────────┘     └────────────────┘
                            │
                            ▼
                    ┌──────────────┐
                    │  MCP Server  │
                    │  (AI Tools)  │
                    └──────────────┘

┌──────────────┐     ┌──────────────┐     ┌────────────────┐
│   Workflow   │────▶│  Puppeteer   │────▶│  External Menu │
│  (Scheduled) │     │  (Scraper)   │     │     Source     │
└──────────────┘     └──────────────┘     └────────────────┘

发展

项目结构

src/
├── index.ts           # Main application with REST routes
├── agent.ts           # MCP server implementation
├── menu-do.ts         # Durable Object for menu storage
├── workflows/
│   ├── fetch-menu.ts  # Workflow to fetch menus
│   └── lib/
│       ├── types.ts   # TypeScript definitions
│       └── london.ts  # Menu scraper implementation
├── helpers/
│   └── date-utils.ts  # Date and week utilities
└── views/
    └── home.tsx       # Interactive API explorer UI

这是如何建造的

该项目由LLM在整个开发过程中处理繁重的工作。从实现MCP服务器和持久对象到编写REST API、执行代码审查、修复错误和创建所有文档,人工智能在构建此应用程序的各个方面都发挥了重要作用。

技术栈

该堆栈因其边缘优先的架构而被选中,通过持久存储和AI集成功能实现了快速的全局访问。

  • Cloudflare员工 -使用持久对象的无服务器边缘计算
  • Cloudflare代理 -AI助手集成和MCP服务器托管
  • 荣誉 -轻量级路由框架
  • TypeScript -类型安全和开发人员经验
  • 操纵者 -自动菜单抓取

支持

对于问题或疑问,请在存储库中打开问题。