MCP server for hotel management with RAG (Retrieval-Augmented Generation) capabilities. Exposes hotel booking statistics and semantic search over meeting notes via MCP tools, integrated with a LangGraph agent and chat UI.
Two tools with clear, well-structured definitions. Both have descriptive names starting with action verbs (get_, search_), comprehensive descriptions (194 - 250 chars, within baseline 34 - 392), and complete input schemas with typed parameters and descriptions. Output schemas are documented in docstrings. However, parameter descriptions lack explicit format constraints (e.g., date format, enum values for room_type/metric/group_by are mentioned in text but not formalized as JSON Schema enums), and no error handling guidance is visible. Tool composition is sound, each does one thing. Naming follows verb_noun convention. No security issues detected (read-only tools, no secrets in params). Missing: enum constraints in schema, error recovery guidance, and output schema formalization in JSON Schema.
Query quantitative hotel booking data (counts, revenue, nights), filterable by check-in date range, room type, and guest residency, and optionally grouped by room_type, customer_residency, or month.
Semantic search over the full text of internal hotel meeting-minutes documents. Can cover anything discussed in a meeting — marketing strategy, operations, maintenance, staffing, HR/awards, decisions, action items, etc. Not limited to booking/revenue topics.
Parameter enums not formalized in JSON Schema. room_type, metric, and group_by accept constrained values ('Standard', 'Deluxe', 'Suite', 'Family Suite' for room_type; 'count', 'avg_nights', 'avg_total_price', 'sum_total_price' for metric; 'room_type', 'customer_residency', 'month' for group_by) but are defined as free-form strings. LLMs may hallucinate invalid values.
Output schema not formalized in JSON Schema. Docstrings describe return structure ('list of groups, each with group, metric, value, bookings') and search results ('list of chunks with source, title, content') but no explicit JSON Schema definition is visible in the tool registration.
No error handling or recovery guidance. Tools lack descriptions of failure modes (e.g., invalid date format, out-of-range top_k, missing documents) and what the LLM should do next.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Date parameter format not explicitly constrained. start_date and end_date are described as 'ISO date (YYYY-MM-DD)' in text but lack a JSON Schema format constraint (e.g., 'format': 'date'). LLMs may pass invalid formats.
top_k parameter lacks bounds. search_hotel_meeting_notes accepts top_k as integer with default 4 but no min/max constraints. Unbounded integers let LLMs pass absurd values (e.g., top_k=999999) that could cause timeouts or memory issues.