taste-filipino-mcp
v1.1.0
Published
Connect Claude Code to Taste Filipino — manage B2B orders, accounts, shipments and customer messages directly from your editor.
Maintainers
Readme
Taste Filipino MCP Server
Connect Claude Code to Taste Filipino — manage B2B orders, accounts, shipments, customer messages, and generate AI ads directly from your editor.
Works with any project (Laravel, Vue, React, Node, etc.).
Quick Setup (2 minutes)
1. Generate an MCP secret
In your Taste Filipino Laravel .env, add:
MCP_SECRET=some-long-random-stringGenerate one: openssl rand -hex 32
2. Add to your project
Create .mcp.json in your project root:
{
"mcpServers": {
"taste-filipino": {
"command": "npx",
"args": ["-y", "taste-filipino-mcp"],
"env": {
"TASTE_FILIPINO_URL": "https://your-api.example.com/api",
"TASTE_FILIPINO_SECRET": "your-secret-here"
}
}
}
}3. Restart Claude Code
After saving .mcp.json, restart Claude Code (or run /mcp to reload servers). Verify with:
"What orders need to go out today?"
Claude should respond with today's shipment list. That's it — you're connected.
Available Tools
Ad Generation
| Tool | Description | Example prompt |
|---|---|---|
| create_ad | Parse a plain-language ad request with AI, build the brand prompt, and queue image generation in one step | "Make me 4 ads with the ube packaging and lattes on a countertop. Text: Taste Ube now!" |
| list_ads | List ad generation batches with their current status | "Show all generated ad batches" |
| get_ad | Get full details of a batch including image URLs and approval status | "Show me ad generation 42 with all its images" |
| approve_ad_image | Approve a generated image | "Approve image 7 from ad generation 42" |
| reject_ad_image | Reject a generated image | "Reject image 3 — the composition is off" |
B2B Operations
| Tool | Description | Example prompt |
|---|---|---|
| get_daily_operations_overview | Combined daily summary: shipments + messages + warnings | "Give me the daily operations overview" |
| get_orders_due_today | All orders due or overdue for shipment, with per-order warnings | "Which orders need to go out today?" |
| list_orders | List B2B orders, filtered by status or account | "Show all unconfirmed orders" |
| get_order | Full order details by ID or order number | "Show me order MSB-2026-0042" |
| list_accounts | List B2B accounts, filter by lifecycle/segment/search | "List all active horeca accounts" |
| get_account | Account details with recent orders and messages | "Everything about account 7" |
| list_pending_messages | Unresolved customer support messages | "Any messages waiting for a reply?" |
| get_pending_customer_replies | Messages awaiting reply, priority-flagged after 24 h | "Which customers haven't heard back?" |
| prepare_customer_email | Fetch full context to draft a reply — never auto-sends | "Draft a reply to message 42" |
Usage Examples
Generate AI ads
"Make me 4 ads with the ube packaging in the frame and desserts and lattes
next to it on a countertop. Including the text: Taste Ube now!"Claude will:
- Parse your description with AI to extract scene, copy, and composition details
- Build the full brand prompt using the Taste Filipino brandkit
- Queue image generation (4 variants)
- Return the ad generation ID
Check progress:
"Show me ad generation 12 — are the images ready?"Once status is "generated", image URLs appear in the response. Review them and approve or reject:
"Approve image 3 from ad generation 12."
"Reject image 1 — the colours look off."Ad generation statuses:
| Status | Meaning |
|---|---|
| draft | Created, not yet generating |
| prompt_generated | Brand prompt built, ready to generate |
| generating | Image generation in progress |
| generated | Images ready for review |
| approved | Batch approved |
| rejected | Batch rejected |
| failed | Generation failed (check errorMessage) |
Daily operations
"Give me the daily operations overview."Claude will summarize today's shipments, pending customer messages, and any warnings in one shot.
Check shipments
"Which orders are due to go out today?"
"Are there any overdue orders?"Manage orders
"Show all orders with status ingediend."
"Get the full details of order MSB-2026-0139."Customer messages
"Which customers are still waiting for a reply?"
"Draft a reply to message 12."Claude will fetch the full message context and compose a draft — you review it before anything is sent.
Accounts
"List all active horeca accounts."
"Give me everything you know about account 7."Order Statuses
| Status | Meaning |
|---|---|
| concept | Draft |
| ingediend | Submitted |
| bevestigd | Confirmed |
| in-productie | In production |
| verzonden | Shipped |
| geleverd | Delivered |
| geannuleerd | Cancelled |
Environment Variables
| Variable | Required | Description |
|---|---|---|
| TASTE_FILIPINO_URL | Yes | Base URL of the Laravel API (e.g. https://your-api.example.com/api) |
| TASTE_FILIPINO_SECRET | Yes | Shared secret — must match MCP_SECRET in your Laravel .env |
Troubleshooting
"TASTE_FILIPINO_SECRET environment variable is required" error
Check that both env vars are set in your .mcp.json. Restart Claude Code after any change.
"API error (401)"
Your secret doesn't match the MCP_SECRET in the Laravel API. Make sure both values are identical.
Tools not showing up
Run /mcp in Claude Code to check server status. Make sure Node.js 18+ is installed and available in your PATH.
Ad generation stuck on "generating"
The image generation runs as a background queue job. Make sure your Laravel queue worker is running:
php artisan queue:workCI/CD: Auto-publish to npm
This repo includes a GitHub Actions workflow (.github/workflows/publish-npm.yml) that runs on every push to main that touches the mcp/ directory.
What it does:
- Installs dependencies
- Builds the TypeScript source
- Bumps the patch version automatically
- Commits the version bump back to
main - Publishes the new version to npm
Required GitHub secret:
Add this repository secret in GitHub:
| Name | Value |
|---|---|
| NPM_TOKEN | Your npm access token (Automation or Publish token) |
GitHub path: Settings → Secrets and variables → Actions → New repository secret
Architecture
Claude Code (AI tool)
│ stdio
▼
taste-filipino-mcp (this package)
│ HTTP + X-MCP-Secret
▼
Laravel API (/api/mcp/*)
│ ┌─ orders, accounts, messages, shipments
│ └─ ad generation (AI parsing → prompt build → image queue)
▼
Database + Image storageThe MCP server authenticates to the Laravel API using a shared secret passed via the X-MCP-Secret header. All MCP endpoints are grouped under /api/mcp/* and protected by the EnsureMcpSecret middleware.
For ad generation, the Laravel side uses Claude (Haiku) to parse the natural language description into structured form fields, then builds a brand-consistent image prompt using the Taste Filipino brandkit, and dispatches image generation to the queue.
