875a190983
Exposes live + historical ag-bids commodity data (from the ag-monitor service at agbids.paul.farm) as MCP tools, sitting behind MetaMCP at https://mcp.jpaul.io/metamcp/ag-bids/mcp. Pattern mirrors zerto-docs-rag with one addition: HTTP Basic auth in front of the streamable-HTTP transport so namespace guessers can't reach the tools. Stdio transport is unaffected (used by local Claude Desktop dev). Tools (markdown returns, ~15 LOC each): best_local_bid(commodity) — where to sell corn/soy/wheat today, for the current calendar month only current_lime_price() — latest lime quotes ($/ton) current_input_price(product?) — MAP / Potash / Lime latest_prices(...) — filtered snapshot price_history(...) — per-(source,delivery) trend list_sources / list_commodities / list_deliveries source_health() — healthy / stale / down buckets todays_summary() — same shape as morning brief snapshot Data path: ag-bids-mcp -> X-API-Key -> /api/data/* on ag-monitor (reuses BRIEF_API_KEY). Tests: 24 covering the httpx client, markdown formatters, HTTP Basic middleware (401/200), and JSONL usage logging. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
39 lines
1.6 KiB
YAML
39 lines
1.6 KiB
YAML
# Paste this service block into /home/justin/zerto-docs-rag/deploy/docker-compose.yml
|
|
# on 192.168.0.2 (the MetaMCP host), alongside zerto-docs-mcp. It joins the
|
|
# same `mcp` Docker network so MetaMCP can reach it by container DNS name.
|
|
#
|
|
# Required env vars (set in the same .env that already powers the rest of the
|
|
# MetaMCP stack):
|
|
# AG_BIDS_API_KEY — copy from ag-monitor's .env (BRIEF_API_KEY)
|
|
# AG_BIDS_MCP_USER — username MetaMCP will send in Basic auth
|
|
# AG_BIDS_MCP_PASS — password MetaMCP will send in Basic auth
|
|
|
|
ag-bids-mcp:
|
|
container_name: ag-bids-mcp
|
|
image: git.jpaul.io/justin/ag-bids-mcp:latest
|
|
pull_policy: always
|
|
restart: unless-stopped
|
|
environment:
|
|
MCP_TRANSPORT: streamable-http
|
|
MCP_HOST: 0.0.0.0
|
|
MCP_PORT: "8000"
|
|
# Behind a Docker DNS name, FastMCP's localhost-only rebinding-protection
|
|
# would 421 every call from MetaMCP. Disable it; the mcp network is private.
|
|
MCP_DISABLE_DNS_REBINDING_PROTECTION: "1"
|
|
# --- upstream ag-monitor (Cloudflare Tunnel from .0.126) ---
|
|
AG_BIDS_API_URL: https://agbids.paul.farm
|
|
AG_BIDS_API_KEY: ${AG_BIDS_API_KEY}
|
|
AG_BIDS_API_TIMEOUT_SECS: "20"
|
|
# --- HTTP Basic auth in front of this MCP ---
|
|
AG_BIDS_MCP_USER: ${AG_BIDS_MCP_USER}
|
|
AG_BIDS_MCP_PASS: ${AG_BIDS_MCP_PASS}
|
|
# --- per-tool-call JSONL usage log ---
|
|
USAGE_LOG_DIR: /app/var/logs
|
|
USAGE_LOG_KEEP_DAYS: "90"
|
|
volumes:
|
|
# Survive container recreates (Watchtower rolls this every ~5 min).
|
|
- ./ag-bids-mcp-logs:/app/var/logs
|
|
networks: [mcp]
|
|
labels:
|
|
com.centurylinklabs.watchtower.enable: "true"
|