streamable-httpupdated 13d ago
Narrow, agent-facing MCP server wrapping PR #25's (Scenic-Stay/staygraph, branch agent/scenicgraph-lodging-decision-api) lodging-decision kernel unmodified. Governed by gauntlet/projects/decision-intelligence-v0.1/WORK-ORDERS.yaml (DI-001-A) in Scenic-Stay/scenic-intelligence. Read that Work Order before changing scope.
What can you do with Lodging Decision?
Lodging Decision MCP Server (alpha)
Narrow, agent-facing MCP server wrapping PR #25's (Scenic-Stay/staygraph, branch
agent/scenicgraph-lodging-decision-api) lodging-decision kernel unmodified. Governed by
gauntlet/projects/decision-intelligence-v0.1/WORK-ORDERS.yaml
(DI-001-A) in Scenic-Stay/scenic-intelligence. Read that Work Order before changing scope.
Live: https://di-001-a-lodging-decision-mcp.scenicstay.workers.dev/mcp
Extracted from Scenic-Stay/staygraph (services/di-001-a-mcp-decision-server/, branch
agent/di-001-a-mcp-decision-server, commits 8c8f4c7/f7df7b3) into its own public repo so
GitHub-based MCP discovery (the Official MCP Registry, Glama's crawler) can find it without
exposing the rest of staygraph's code. That branch is preserved as historical record; deploy
from this repo going forward.
What this is
One MCP tool, lodging_decision. Callers supply a traveler profile, trip context, and
a list of candidate listings; the tool returns a deterministic, evidence-backed
recommendation with score breakdown, tradeoffs, risk flags, missing information, and
confidence. It does not search inventory, book, transact, or persist anything.
Scope
Non-sensitive categories only: budget, location, amenities, quality/reviews,
cancellation policy, fees, remote-work/family/business/relocation/event trip framing,
and stated accessibility needs. No Safety & Belonging, Medical Recovery, or
protected-characteristic-adjacent input is accepted — see src/guard.ts, a
defense-in-depth denylist that rejects (does not silently strip) free-text fields
referencing a protected characteristic or discriminatory steering criterion, on top of
the fact that the underlying kernel has no such fields to begin with.
Structure
src/kernel/— PR #25's contracts, scorer, validation, and fixtures, copied byte-for-byte (test/kernel-parity.test.tsproves this against PR #25's own six tests and committed example fixtures).src/guard.ts— the denylist guard described above.src/worker.ts— Cloudflare Worker entrypoint: MCPWebStandardStreamableHTTPServerTransportatPOST /mcp, plus a KV-backed soft daily request ceiling and a/healthcheck.test/— kernel parity tests, guard tests.
Local development
npm install
npm test # kernel parity + guard tests
npm run typecheck
npm run dev # wrangler dev, serves http://127.0.0.1:8787/mcp
Deploy
npm run deploy # wrangler deploy
Requires the DI_001_A_ABUSE_CEILING KV namespace bound in wrangler.jsonc (already
provisioned; see the Work Order's execution_result for the namespace ID and actual
Cloudflare cost recorded at deploy time).
Known limitations (carried over from PR #25, unresolved here)
Unauthenticated, unversioned, no rate limiting beyond the soft daily ceiling, not calibrated against real human booking decisions. Do not expose to untrusted high-volume traffic without a further hardening decision — see the Work Order's circuit breakers for the manual kill-switch (pull the Worker; delist from all directories) if abuse signals appear.
Install
Add Lodging Decision to your client. Pick the one you use.
claude mcp add --transport http lodging-decision https://di-001-a-lodging-decision-mcp.scenicstay.workers.dev/mcpcodex mcp add lodging-decision --url https://di-001-a-lodging-decision-mcp.scenicstay.workers.dev/mcp{
"mcpServers": {
"lodging-decision": {
"url": "https://di-001-a-lodging-decision-mcp.scenicstay.workers.dev/mcp"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"lodging-decision": {
"type": "http",
"url": "https://di-001-a-lodging-decision-mcp.scenicstay.workers.dev/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"lodging-decision": {
"url": "https://di-001-a-lodging-decision-mcp.scenicstay.workers.dev/mcp"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"lodging-decision": {
"serverUrl": "https://di-001-a-lodging-decision-mcp.scenicstay.workers.dev/mcp"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
Score
39 / 100
Incomplete
- Documentation17/25
- Maintenance19/25
- Trust9/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 5 days ago
- Has a release history
- Repository is not archived
- No licence detected
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 6 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 0.1.0-alphaLatest | Aug 16, 2026 |