Projects › MCP Tools + RBAC › Connect
Stage 7 · public demo endpointConnect to the Hotel Tools MCP server
A public, read-only copy of the stage 7 server that any MCP client can call. It's part of a simulated engagement for a fictional hotel group, and all the data is synthetic.
Endpoint: https://hotel-tools-mcp.vercel.app/mcp (Streamable HTTP, no key). Free hosting: the first call after a quiet spell may need a moment to wake.
What you can do
You're connected as one made-up guest, Elena, with three read-only tools:
search_policy: search a property's policies (beach-resortormountain-lodge). Passages come back with their source and a note that they're reference data, not instructions.list_activities: a property's activities, optionally for one date and a minimum age.lookup_booking: Elena's own bookings (tryBR-1042). Another guest's booking, likeBR-1043, comes back as “not found”.
How to connect
Claude Code:
claude mcp add --transport http hotel-tools https://hotel-tools-mcp.vercel.app/mcp
Claude (desktop or web): add a custom connector with the endpoint URL above (Settings → Connectors).
Cursor (.cursor/mcp.json), and other clients that take a URL:
{"mcpServers": {"hotel-tools": {"url": "https://hotel-tools-mcp.vercel.app/mcp"}}}
MCP Inspector (the official test client; this demo was filmed with 2.10.1): run npx -y @modelcontextprotocol/inspector@2.10.1, then add a server with the Streamable HTTP transport and the endpoint URL.
Plain HTTP, to see it answer without a client:
curl -s https://hotel-tools-mcp.vercel.app/mcp \
-H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
Rules and honest limits
- Read-only. The guest's booking-request tool isn't registered here, so nothing can be written.
- One fixed guest, no key. Staff tools and staff-only documents never appear; the role check runs on every call.
- 10 calls a minute. The limit and the audit log live in each running instance (decision 15), so they reset when an idle instance restarts and aren't shared if two instances run at once. That's acceptable for a read-only, synthetic demo that calls no model.
- No model behind it. The server returns data; any reasoning happens in your MCP client.
Checked on 2026-10-28 with the official MCP Python SDK client: 8 of 8 checks passed (guest tools only, answers with sources, 0 staff-only passages on 3 targeted searches, another guest's booking hidden, the guest's own booking with guest fields only, the write tool unknown, the 11th call in a minute rate-limited).