Skip to main content
Glama

Chicken Business Management MCP Server

by PSYGER02

mcp-server

Add to .env: JWT_SECRET=your_jwt_secret_here (generate a strong one, e.g., via openssl rand -hex 32)

Real-Time WebSockets

For live voice parsing (e.g., orders with inaccuracies), use WebSockets on port 3002.

Client Example (Browser with Web Speech API)

const ws = new WebSocket('ws://localhost:3002'); // Add ?token=your-jwt for auth ws.onopen = () => console.log('Connected'); const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)(); recognition.continuous = true; recognition.interimResults = true; recognition.onresult = (event) => { for (let i = event.resultIndex; i < event.results.length; i++) { const chunk = event.results[i][0].transcript; ws.send(JSON.stringify({ toolName: 'live_voice_stream', params: { streamId: 'session1', transcriptChunk: chunk, products: [{id: 'whole', name: 'Whole Chicken'}] } })); } }; ws.onmessage = (event) => { const data = JSON.parse(event.data); if (data.partialParse) console.log('Partial:', data.partialParse); // e.g., {items: [{productId: 'whole', qty: 2}], confidence: 0.8} if (data.final) console.log('Final sales:', data.final); // Structured {items, payment} if (data.streamChunk) console.log('Gemini correction:', data.streamChunk); }; recognition.start();

Server Protocol

  • Connect: ws://localhost:3002 (upgrade with Authorization: Bearer )

  • Send: JSON {toolName: 'live_voice_stream', params: {streamId, transcriptChunk, products?}}

  • Receive: Streamed {partialParse: {...}, confidence: number} or {final: {structuredSales: {...}}, streamId}

  • Timeout: 5s for final parse; fuzzy + Gemini streaming handles "chikin" → "Whole Chicken".

Integrate with Todo 1 auth for secure streams.

Database Migrations

The server auto-migrates the DB on startup using service role (runs sql/enhanced-database-schema.sql if tables missing, idempotent check via notes table).

  • Auto: On npm run dev/start, migrate() called in constructor—logs to ai_audit_logs.

  • Manual: Build (npm run build), then node dist/migrate.js (standalone run, logs errors).

  • Schema: Edit sql/enhanced-database-schema.sql for changes (tables: notes, entities, relations, observations, ai_audit_logs, products, sales; pgvector indexes).

  • Fallback: If fails, manual Supabase SQL editor run schema.sql (service role bypasses RLS).

Scalability

For production scale, use cluster mode:

  • Run: npm run start:cluster (env WORKERS=4 for multi-core).

  • Guide: See [MD files/scalability.md](MD files/scalability.md) for multi-instance, concurrency opts (batch=5), load balancing (WS sticky).

API Integration Examples

Note Workflow (curl with JWT)

  1. Auth: curl -X POST http://localhost:3002/auth -H "Content-Type: application/json" -d '{"token":"your_mcp_auth_token"}' → {"token": "jwt_here"}

  2. Collect note: curl -X POST http://localhost:3002/api/tools/call -H "Authorization: Bearer jwt_here" -H "Content-Type: application/json" -d '{"name":"note_collection","arguments":{"content":"Bought 20 bags whole chicken for 10000 pesos","userRole":"owner"}}' → {"success":true,"result":{"note_id":"uuid","message":"Note collected"}}

  3. Parse: curl -X POST ... -d '{"name":"parse_chicken_note","arguments":{"note_id":"uuid"}}' → {"success":true,"result":{"parsed_data":{"purchases":[{"productId":"whole","qty":20,"cost":10000}],"status":"parsed"}}}

  4. Apply: curl -X POST ... -d '{"name":"apply_to_stock","arguments":{"note_id":"uuid"}}' → {"success":true,"message":"Stock updated"}

Deployment (Heroku/Codespace)

  • Heroku: heroku create, git push heroku main, heroku config:set GEMINI_API_KEY=... SUPABASE_URL=... JWT_SECRET=... WORKERS=4

  • Procfile: web: npm run start:cluster

  • Codespace: npm run dev:cluster (env WORKERS=2)

  • Scale: heroku ps:scale web=2 (multi-dyno load balance)

Troubleshooting

  • Proxy retries: AdvancedGeminiProxy backoff 3x on 429/5xx (check logs).

  • Rate limits: 10/min/user (Todo 1, 429 error); increase env MAX_REQUESTS_PER_MINUTE.

  • DB issues: Auto-migrate on start; manual node dist/migrate.js if fail (check ai_audit_logs).

  • WS auth: ws://localhost:3002?token=jwt_here for live_voice_stream.

Integration Examples

Note Workflow (curl with JWT)

  1. Auth: curl -X POST http://localhost:3002/auth -H "Content-Type: application/json" -d '{"token":"your_mcp_auth_token"}' (get JWT).

  2. Collect Note: curl -X POST http://localhost:3002/api/tools/call -H "Authorization: Bearer " -H "Content-Type: application/json" -d '{"name":"note_collection","arguments":{"content":"Bought 20 bags whole chicken for ₱10k","userRole":"owner"}}' (response {note_id, success}).

  3. Parse: curl -X POST ... -d '{"name":"parse_chicken_note","arguments":{"note_id":""}}' (response {parsed: {purchases: [{productId:"whole", qty:20, cost:10000}]}}).

  4. Apply: curl -X POST ... -d '{"name":"apply_to_stock","arguments":{"note_id":"","dry_run":false}}' (response {success, stockUpdated}).

Voice Stream (WS)

See Real-Time WebSockets section.

Forecast: curl -X POST ... -d '{"name":"forecast_stock","arguments":{"salesHistory":[{"date":"2025-09-22","amount":5000}]}}' (response {predictedSales: [{day:"1", amount:5500, confidence:0.8}], summary}).

Deployment

Heroku

  1. Procfile: web: npm start:cluster

  2. Env: GEMINI_API_KEY, SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY, MCP_AUTH_TOKEN, JWT_SECRET, PORT=3002, WORKERS=2

  3. Deploy: git push heroku main; heroku scale web=2 (multi-dyno for scale).

Codespace

  1. .devcontainer/devcontainer.json: postCreateCommand "npm i && npm run build"

  2. Run: npm run dev:cluster (env WORKERS=4)

See scalability.md for multi-instance.

Troubleshooting

  • Proxy Retries: advanced-gemini-proxy.ts backoff on 429/5xx (env GEMINI_RETRY_MAX=3).

  • Rate Limits: 10/min/user (per Todo 1); 429 response—wait 60s.

  • DB Issues: Auto-migrate on start; manual node dist/migrate.js if fail (check Supabase logs).

  • Auth Errors: 401/403—verify JWT expiry (1h, refresh via /auth); MCP_AUTH_TOKEN in .env.

  • Tool Errors: 422 validation (check schemas in openapi.yaml); log ai_audit_logs for details.

  • WS Disconnect: Reconnect on close, pass token in query ?token=.

-
security - not tested
F
license - not found
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Enables real-time voice-to-text order processing and chicken business management through WebSocket connections and REST APIs. Supports inventory tracking, sales parsing, stock forecasting, and note collection with AI-powered transcript correction and structured data extraction.

  1. Real-Time WebSockets
    1. Client Example (Browser with Web Speech API)
    2. Server Protocol
  2. Database Migrations
    1. Scalability
      1. API Integration Examples
        1. Note Workflow (curl with JWT)
        2. Deployment (Heroku/Codespace)
        3. Troubleshooting
      2. Integration Examples
        1. Note Workflow (curl with JWT)
        2. Voice Stream (WS)
        3. Forecast: curl -X POST ... -d '{"name":"forecast_stock","arguments":{"salesHistory":[{"date":"2025-09-22","amount":5000}]}}' (response {predictedSales: [{day:"1", amount:5500, confidence:0.8}], summary}).
      3. Deployment
        1. Heroku
        2. Codespace
      4. Troubleshooting

        MCP directory API

        We provide all the information about MCP servers via our MCP API.

        curl -X GET 'https://glama.ai/api/mcp/v1/servers/PSYGER02/mcpserver'

        If you have feedback or need assistance with the MCP directory API, please join our Discord server