Paxaver MCP Server
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Paxaver MCP ServerWhat's the lunch menu at my school today?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Paxaver MCP Server
AI-facing adapter over the Paxaver school community platform. Implements the Model Context Protocol (MCP) on Cloudflare Workers with RS256 JWT validation, capability-first authorization, and Streamable HTTP transport.
What this is
The Paxaver MCP server lets AI assistants (ChatGPT, Claude, Perplexity, and any MCP-compatible client) act on behalf of a Paxaver user: check a lunch menu, order lunch, register for fundraising events, volunteer, and — for school administrators — manage restaurants, menu items, events, and daily orders.
It is a thin adapter. It contains no business logic and never touches the database, Stripe, or email directly. Every action is delegated to the private Paxaver backend API over a Cloudflare service binding (same region, no public network hop). The MCP server's only responsibilities are:
MCP protocol handling (JSON-RPC 2.0, Streamable HTTP)
RS256 JWT validation via JWKS from the centralized Paxaver auth worker
Per-tool capability policy and role gating
Sanitized, user-safe error mapping
Authentication is handled by the Paxaver auth worker (auth.paxaver.com), which
serves as the OAuth 2.0 / OIDC authorization server. The MCP server validates
the resulting RS256 JWTs and forwards them to the backend. The MCP server itself
is not an authorization server.
Related MCP server: IIITH Mess MCP
Architecture
┌───────────────┐ MCP (Streamable HTTP) ┌──────────────────────┐
│ AI Client │ ─────────────────────────────▶ │ Paxaver MCP Worker │
│ ChatGPT/Claude│ ◀───────────────────────────── │ (this repo) │
│ /Perplexity │ RS256 JWT + JSON-RPC 2.0 │ Hono + jose │
└───────────────┘ └──────────┬───────────┘
│
Cloudflare service binding
(PAXAVER_API, same region)
│
▼
┌──────────────────────┐
│ Paxaver API Worker │
│ (private backend) │
│ D1 · Stripe · SES │
└──────────────────────┘The MCP worker never binds D1, Stripe, or SES. The service binding carries a
short-lived JWT (120s TTL, audience paxaver-internal) that the backend trusts as
an internal call while still attributing the action to the authenticated Paxaver
user. See docs/architecture.md for the full picture.
Quick start
Install
npm install @paxaver/mcpDevelop locally
# 1. Install dependencies (Node >= 22)
npm install
# 2. Run the worker locally (Miniflare)
npm run dev
# 3. Typecheck, lint, and test
npm run typecheck
npm run lint
npm testThe local dev server starts on http://localhost:8787. Discovery endpoints live
under /.well-known/; the MCP endpoint is POST /mcp.
Note: Local development without the
PAXAVER_APIservice binding falls back to authenticated HTTPS againstAPI_BASE_URL(defaulthttp://localhost:8787). For full integration testing, run the Paxaver backend worker locally and pointAPI_BASE_URLat it.
Deployment
Two environments, each a separate Worker with its own custom domain:
Environment | Worker name | Domain |
|
|
|
|
|
|
The production worker serves both CA and US users through a single endpoint
(mcp.paxaver.com). User region is resolved from the JWT tenant_id claim,
and the worker routes to the correct regional backend via service bindings
(PAXAVER_API_CA, PAXAVER_API_US). Currency is determined by the user's
school, not by the MCP endpoint.
npm run deploy:staging # wrangler deploy --env staging
npm run deploy:prod # wrangler deploy --env productionThe worker requires no secrets. See
docs/deployment.md.
Tools
The server exposes 26 tools grouped into six categories. Visibility in
tools/list is filtered by the caller's roles; every call is re-authorized
before dispatch, and the backend re-checks data-level access (defense-in-depth).
Category | Tools |
User / account |
|
Wallet |
|
Orders & menu |
|
Events |
|
Admin / restaurant |
|
Financial and destructive tools are labeled and require user confirmation. Full
reference: docs/tools.md. Authorization policy:
docs/authorization.md.
Privacy
No personal contact information (email, phone, address) is collected or
returned through MCP tools. The get_user_info tool returns only the user's
name, school, students, and roles. Student data is limited to IDs, names, and
school slugs. Allergies, notes, birthday, and other PII are not exposed in
read responses. The MCP server does not log user data.
Documentation
Document | Topic |
System architecture, service binding boundary, regional isolation | |
JWT validation, JWKS, auth worker delegation, token format | |
Capability policy table, role gating, defense-in-depth | |
Full tool reference with input schemas and classifications | |
Wrangler config, environments, secrets, custom domains | |
Security model, CORS, CSRF, error sanitization, headers | |
MCP protocol version, transports, supported AI clients | |
Migration from the legacy | |
Release history | |
Vulnerability reporting policy | |
Development setup and contribution process |
Tech stack
Runtime: Cloudflare Workers (
compatibility_date: 2026-08-01,nodejs_compat)Framework: Hono v4
JWT: jose v6 (RS256 via JWKS)
Protocol: MCP
2025-06-18, Streamable HTTPAuth: RS256 JWT validation via centralized auth worker (
auth.paxaver.com)Build/deploy: Wrangler v4
Test: Vitest v2 (Workers pool + Node pool)
License
Apache-2.0. Copyright (c) 2026 Smartoire. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Run your restaurant from an AI client: orders, menu, reports, refunds, payouts and staff.
Scraps Kitchen gives any AI agent a persistent, household-aware kitchen memory. Unlike generic chatbot recall, Scraps maintains structured cooking data: what's in your fridge (with freshness tracking), who you cook for (with allergens, dietary restrictions, and preferences), your recipe collection (with cook notes and per-diner ratings), your shopping list, and your kitchen equipment. 27 tools across 6 domains let agents read kitchen context, suggest meals that respect dietary safety, update the pantry after cooking, and build a history of what works for your household. Every interaction makes the data richer. Cooking history, preference signals, kitchen awareness = better suggestions next time. All tools work via oAuth and a free scraps.kitchen account.
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
AXL MCP lets AI assistants create and manage landing pages, courses, email campaigns, CRM records, and marketing workflows inside AXL. Built for growing expert businesses, it turns chat requests into real work across sales, marketing, and course delivery. An AXL account is required. Sign in securely with OAuth 2.1. Website: https://axl.tech/developers/mcp . Setup guide: https://docs.axl.tech/mcp . Watch AXL in 77 seconds: pages, courses, CRM, and automation. Product overview: https://www.youtube.com/watch?v=jlhR9CafIww
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with the IIIT Hyderabad Mess Management System through natural language, allowing students to view menus, manage meal registrations, check bills, submit feedback, and configure preferences.2911MIT
- AlicenseAqualityDmaintenanceEnables LLMs to interact with the IIIT Hyderabad Mess System to manage meal registrations, view menus, and track billing. It supports conversational commands for tasks like cancelling meals, estimating nutrition, and checking account balances.455AGPL 3.0
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with the IIIT-H mess dining and marketplace systems through resources, tools, and prompts for meal planning, billing analysis, and registration modifications.27GPL 3.0
- AlicenseAqualityDmaintenanceMCP server for the Löwen Menü IBS5 school-lunch ordering system, enabling an LLM to browse weekly menus, manage a shopping cart, and place meal orders.7MIT