@hotscots/mcp 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -32
- package/dist/index.js +188 -135
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Hots&Cots MCP Server
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Give AI assistants like Claude direct access to the [Hots&Cots](https://hotscots.app) military quality-of-life database — barracks conditions, DFAC ratings, and on-base facility reviews from service members across the DoD.
|
|
4
4
|
|
|
5
5
|
**Requires an H&CPro API key** (`hc_live_...`) — generate yours at [hotscots.app/subscription/dashboard](https://hotscots.app/subscription/dashboard).
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ MCP server for the [Hots&Cots](https://hotscots.app) military quality-of-life AP
|
|
|
8
8
|
|
|
9
9
|
## Setup — Claude Desktop
|
|
10
10
|
|
|
11
|
-
Add this to your Claude Desktop config
|
|
11
|
+
No cloning or building required. Add this to your Claude Desktop config file:
|
|
12
12
|
|
|
13
13
|
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
14
14
|
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
|
|
@@ -33,34 +33,30 @@ Restart Claude Desktop. The Hots&Cots tools will appear automatically.
|
|
|
33
33
|
|
|
34
34
|
## Setup — Cursor / Other MCP Clients
|
|
35
35
|
|
|
36
|
-
Same config
|
|
36
|
+
Same config block — check your client's documentation for the config file location.
|
|
37
37
|
|
|
38
38
|
---
|
|
39
39
|
|
|
40
|
-
## What You Can Ask
|
|
40
|
+
## What You Can Ask
|
|
41
41
|
|
|
42
|
-
- *"
|
|
43
|
-
- *"List all installations
|
|
44
|
-
- *"
|
|
45
|
-
- *"
|
|
46
|
-
- *"
|
|
47
|
-
- *"Show medical and CDC facility reviews"*
|
|
48
|
-
- *"How many barracks reviews does Fort Stewart have?"*
|
|
42
|
+
- *"Is my Hots&Cots API key working?"*
|
|
43
|
+
- *"List all installations — which have the most reviews?"*
|
|
44
|
+
- *"Show me barracks reviews at Fort Liberty."*
|
|
45
|
+
- *"What percentage of barracks reviews at Fort Hood report mold?"*
|
|
46
|
+
- *"How do service members rate the DFACs at Camp Lejeune?"*
|
|
47
|
+
- *"Show medical and CDC facility reviews for Army bases in Texas."*
|
|
49
48
|
|
|
50
49
|
---
|
|
51
50
|
|
|
52
51
|
## Available Tools
|
|
53
52
|
|
|
54
53
|
| Tool | Description |
|
|
55
|
-
|
|
56
|
-
| `hotscots_health` | Verify your API key |
|
|
57
|
-
| `
|
|
58
|
-
| `
|
|
59
|
-
| `hotscots_get_dfac_reviews` | Paginated DFAC (
|
|
60
|
-
| `
|
|
61
|
-
| `hotscots_get_other_reviews` | Medical, CDC, gym, PX/BX, lodging, moving reviews |
|
|
62
|
-
| `hotscots_list_installations` | All installations with cots/hots/other/total counts |
|
|
63
|
-
| `hotscots_installation_snapshot` | Unified barracks + DFAC snapshot for a named installation |
|
|
54
|
+
|---|---|
|
|
55
|
+
| `hotscots_health` | Verify your API key and confirm the service is reachable |
|
|
56
|
+
| `hotscots_list_installations` | All installations with barracks, dining, and other review counts |
|
|
57
|
+
| `hotscots_get_barracks_reviews` | Paginated barracks / housing (Cots) reviews |
|
|
58
|
+
| `hotscots_get_dfac_reviews` | Paginated dining facility / DFAC (Hots) reviews |
|
|
59
|
+
| `hotscots_get_other_reviews` | Reviews for medical, CDC, gym, PX/BX, lodging, and moving services |
|
|
64
60
|
|
|
65
61
|
---
|
|
66
62
|
|
|
@@ -69,26 +65,43 @@ Same config, different file location. Check your client's MCP documentation for
|
|
|
69
65
|
```
|
|
70
66
|
Claude Desktop / Cursor / AI client
|
|
71
67
|
↓ MCP protocol (stdio)
|
|
72
|
-
@hotscots/mcp ← runs locally
|
|
68
|
+
@hotscots/mcp ← runs locally via npx
|
|
73
69
|
↓ HTTPS + Bearer token
|
|
74
70
|
api.hotscots.app/functions/v1/api
|
|
75
|
-
↓
|
|
76
|
-
Supabase (anonymized review data)
|
|
71
|
+
↓
|
|
72
|
+
Supabase (anonymized, OPSEC-scrubbed review data)
|
|
77
73
|
```
|
|
78
74
|
|
|
79
|
-
The
|
|
75
|
+
The server runs locally on your machine — your API key never leaves your device.
|
|
80
76
|
|
|
81
77
|
---
|
|
82
78
|
|
|
83
79
|
## Environment Variables
|
|
84
80
|
|
|
85
|
-
| Variable | Description |
|
|
86
|
-
|
|
87
|
-
| `HOTSCOTS_API_KEY` | Your API key (`hc_live_...`)
|
|
88
|
-
| `
|
|
89
|
-
| `TRANSPORT` | `stdio` (default) or `http` for remote/multi-user mode |
|
|
90
|
-
| `PORT` | HTTP port when `TRANSPORT=http` (default: `3000`) |
|
|
81
|
+
| Variable | Required | Description |
|
|
82
|
+
|---|---|---|
|
|
83
|
+
| `HOTSCOTS_API_KEY` | ✅ | Your API key (`hc_live_...`) |
|
|
84
|
+
| `HOTSCOTS_API_URL` | ❌ | Override the API base URL |
|
|
85
|
+
| `TRANSPORT` | ❌ | `stdio` (default) or `http` for remote/multi-user mode |
|
|
86
|
+
| `PORT` | ❌ | HTTP port when `TRANSPORT=http` (default: `3000`) |
|
|
91
87
|
|
|
92
88
|
---
|
|
93
89
|
|
|
94
|
-
|
|
90
|
+
## Troubleshooting
|
|
91
|
+
|
|
92
|
+
**"HOTSCOTS_API_KEY environment variable is not set"**
|
|
93
|
+
→ Make sure the `env` block in your config includes your key and you've fully restarted the client.
|
|
94
|
+
|
|
95
|
+
**"API key not found" or "License inactive"**
|
|
96
|
+
→ Double-check your key at [hotscots.app/subscription/dashboard](https://hotscots.app/subscription/dashboard). Keys must be on an active H&CPro plan.
|
|
97
|
+
|
|
98
|
+
**"Access denied to \<endpoint\>"**
|
|
99
|
+
→ Your plan may not include that review type. Check your subscription tier.
|
|
100
|
+
|
|
101
|
+
**Tools aren't showing up**
|
|
102
|
+
→ Confirm Node.js 18+ is installed (`node --version`) and try asking Claude to run a health check.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
**Clean. Safe. Comfort.** — [hotscots.app](https://hotscots.app)
|
|
107
|
+
Questions? [support@hotscots.app](mailto:support@hotscots.app)
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,9 @@ import { z } from "zod";
|
|
|
7
7
|
// ─── Config ──────────────────────────────────────────────────────────────────
|
|
8
8
|
const API_BASE_URL = process.env.HOTSCOTS_API_URL ?? "https://api.hotscots.app/functions/v1/api";
|
|
9
9
|
const CHARACTER_LIMIT = 25000;
|
|
10
|
+
// When filtering client-side we must over-fetch. Cap how many records we'll
|
|
11
|
+
// pull in a single request to avoid burning the user's monthly quota.
|
|
12
|
+
const FILTER_FETCH_CAP = 500;
|
|
10
13
|
var EndpointType;
|
|
11
14
|
(function (EndpointType) {
|
|
12
15
|
EndpointType["HOTS"] = "hots";
|
|
@@ -18,13 +21,20 @@ var ResponseFormat;
|
|
|
18
21
|
ResponseFormat["MARKDOWN"] = "markdown";
|
|
19
22
|
ResponseFormat["JSON"] = "json";
|
|
20
23
|
})(ResponseFormat || (ResponseFormat = {}));
|
|
21
|
-
// ─── API
|
|
22
|
-
function
|
|
24
|
+
// ─── API key validation ───────────────────────────────────────────────────────
|
|
25
|
+
function requireApiKey() {
|
|
23
26
|
const key = process.env.HOTSCOTS_API_KEY;
|
|
24
|
-
if (!key)
|
|
25
|
-
|
|
27
|
+
if (!key) {
|
|
28
|
+
console.error("\n❌ HOTSCOTS_API_KEY is not set.\n" +
|
|
29
|
+
" Add it to the env block in your MCP client config and restart.\n" +
|
|
30
|
+
" Get your key at: https://hotscots.app/subscription/dashboard\n");
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
26
33
|
return key;
|
|
27
34
|
}
|
|
35
|
+
// Validate key once at startup — fail fast before Claude even connects.
|
|
36
|
+
const API_KEY = requireApiKey();
|
|
37
|
+
// ─── API client ───────────────────────────────────────────────────────────────
|
|
28
38
|
async function apiGet(path, params) {
|
|
29
39
|
const url = new URL(`${API_BASE_URL}${path}`);
|
|
30
40
|
if (params) {
|
|
@@ -33,22 +43,27 @@ async function apiGet(path, params) {
|
|
|
33
43
|
url.searchParams.set(k, String(v));
|
|
34
44
|
}
|
|
35
45
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
46
|
+
let res;
|
|
47
|
+
try {
|
|
48
|
+
res = await fetch(url.toString(), {
|
|
49
|
+
headers: {
|
|
50
|
+
Authorization: `Bearer ${API_KEY}`,
|
|
51
|
+
Accept: "application/json",
|
|
52
|
+
},
|
|
53
|
+
signal: AbortSignal.timeout(30_000),
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
58
|
+
throw new Error(`Network error: ${msg}. Check your connection and try again.`);
|
|
59
|
+
}
|
|
43
60
|
if (!res.ok) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
61
|
+
switch (res.status) {
|
|
62
|
+
case 401: throw new Error("Invalid or expired API key. Check your HOTSCOTS_API_KEY.");
|
|
63
|
+
case 403: throw new Error("Your plan does not have access to this data. Check your subscription tier.");
|
|
64
|
+
case 429: throw new Error("Monthly request quota exceeded. Upgrade your plan or wait for the next billing cycle.");
|
|
65
|
+
default: throw new Error(`The Hots&Cots API returned an error (${res.status}). Please try again shortly.`);
|
|
49
66
|
}
|
|
50
|
-
catch { /* ignore */ }
|
|
51
|
-
throw new Error(message);
|
|
52
67
|
}
|
|
53
68
|
return res.json();
|
|
54
69
|
}
|
|
@@ -59,39 +74,86 @@ function truncate(text) {
|
|
|
59
74
|
if (text.length <= CHARACTER_LIMIT)
|
|
60
75
|
return text;
|
|
61
76
|
return (text.slice(0, CHARACTER_LIMIT) +
|
|
62
|
-
"\n\n[Response truncated —
|
|
77
|
+
"\n\n[Response truncated — lower the limit or increase the offset to page through results.]");
|
|
78
|
+
}
|
|
79
|
+
// ─── Sanitizer (allowlist) ────────────────────────────────────────────────────
|
|
80
|
+
// Only fields explicitly listed in SafeReview are passed to Claude.
|
|
81
|
+
// review_id and any future upstream fields are dropped automatically.
|
|
82
|
+
const SAFE_FIELDS = new Set([
|
|
83
|
+
"created_at", "title", "installation", "rating", "feedback", "tags",
|
|
84
|
+
"branch", "resolved", "image_name", "photo_album", "bldg_number",
|
|
85
|
+
"leadership_comment", "leadership_comment_created_at", "leadership_comment_approved_at",
|
|
86
|
+
"is_housing", "room_amenities", "mold_issues", "pest_issues", "working_air_heat",
|
|
87
|
+
"working_furniture", "accessible_laundry", "private_sleeping_area", "lockable_doors",
|
|
88
|
+
"working_fire_detection", "exterior_lighting", "interior_lighting", "safety_features",
|
|
89
|
+
"dpw_satisfaction_rating", "is_privatized_barracks",
|
|
90
|
+
"dfac_name", "breakfast_ranking", "lunch_ranking", "dinner_ranking", "meal_type",
|
|
91
|
+
"dfac_choices", "dfac_healthy", "dfac_filling", "dfac_visual", "dfac_temp",
|
|
92
|
+
"dfac_police", "dfac_special", "has_shuttle", "walking_distance", "kiosk_level",
|
|
93
|
+
"inedible_food_issue",
|
|
94
|
+
"facility_type", "recommend_facility", "first_visit", "visit_again", "helpful_count",
|
|
95
|
+
"doctor_wait_times", "uniform_line", "prescription_available", "care_type",
|
|
96
|
+
"customer_service_rating", "ease_of_access_rating", "timeliness_of_service_rating",
|
|
97
|
+
"pharmacy_wait_times", "is_acute_meds", "power_source", "in_room_fridge",
|
|
98
|
+
"running_water", "lockable_door", "cleanliness", "decor", "table", "seating",
|
|
99
|
+
"internet_connectivity", "availability_rating", "affordability_rating",
|
|
100
|
+
"in_out_environment", "curriculum_effect", "extended_hours",
|
|
101
|
+
"meets_student_teacher_ratio", "safety_mgmt", "learning_activities",
|
|
102
|
+
"parent_communication_involvement", "handle_develop_concerns", "staff_qualifications",
|
|
103
|
+
"cdc_wait_times", "mover_company", "professionalism_rating", "timeliness_rating",
|
|
104
|
+
"origin_location", "destination_location",
|
|
105
|
+
]);
|
|
106
|
+
function sanitizeReview(r) {
|
|
107
|
+
const result = {};
|
|
108
|
+
for (const key of SAFE_FIELDS) {
|
|
109
|
+
if (key in r)
|
|
110
|
+
result[key] = r[key];
|
|
111
|
+
}
|
|
112
|
+
return result;
|
|
63
113
|
}
|
|
64
114
|
// ─── Shared schemas ───────────────────────────────────────────────────────────
|
|
115
|
+
// Raw shapes (not z.object wrappers) — required by the MCP SDK's registerTool.
|
|
65
116
|
const PaginationSchema = {
|
|
66
117
|
limit: z
|
|
67
118
|
.number()
|
|
68
119
|
.int()
|
|
69
120
|
.min(1)
|
|
70
|
-
.max(
|
|
71
|
-
.default(
|
|
72
|
-
.describe("Records per page
|
|
121
|
+
.max(100)
|
|
122
|
+
.default(20)
|
|
123
|
+
.describe("Records per page, 1–100 (default 20). Keep low to stay within your monthly quota."),
|
|
73
124
|
offset: z
|
|
74
125
|
.number()
|
|
75
126
|
.int()
|
|
76
127
|
.min(0)
|
|
77
128
|
.default(0)
|
|
78
|
-
.describe("Records to skip for pagination (default 0)"),
|
|
129
|
+
.describe("Records to skip for pagination (default 0)."),
|
|
79
130
|
};
|
|
80
131
|
const ResponseFormatSchema = z
|
|
81
132
|
.nativeEnum(ResponseFormat)
|
|
82
133
|
.default(ResponseFormat.MARKDOWN)
|
|
83
134
|
.describe("Output format: 'markdown' for human-readable, 'json' for machine-readable");
|
|
135
|
+
const InstallationFilterSchema = z
|
|
136
|
+
.string()
|
|
137
|
+
.max(100)
|
|
138
|
+
.optional()
|
|
139
|
+
.describe("Filter by installation name (partial, case-insensitive)");
|
|
84
140
|
// ─── Formatters ───────────────────────────────────────────────────────────────
|
|
85
141
|
function starsFor(rating) {
|
|
86
142
|
const r = Math.round(rating);
|
|
87
143
|
return "★".repeat(r) + "☆".repeat(Math.max(0, 5 - r));
|
|
88
144
|
}
|
|
89
|
-
function formatReviews(data, endpointLabel, pagination) {
|
|
90
|
-
const lines = [
|
|
91
|
-
|
|
92
|
-
`
|
|
93
|
-
|
|
94
|
-
|
|
145
|
+
function formatReviews(data, endpointLabel, pagination, filtered) {
|
|
146
|
+
const lines = [`# Hots&Cots — ${endpointLabel} Reviews`];
|
|
147
|
+
if (filtered) {
|
|
148
|
+
lines.push(`_Filtered to "${filtered.installation}" — found ${data.length} match(es) in the first ${filtered.fetchedTotal} records fetched._`);
|
|
149
|
+
if (filtered.fetchedTotal >= FILTER_FETCH_CAP && data.length === pagination.limit) {
|
|
150
|
+
lines.push(`_⚠️ Results are capped at ${FILTER_FETCH_CAP} fetched records. There may be more reviews not shown._`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
lines.push(`_Showing ${pagination.returned} records (offset ${pagination.offset}, limit ${pagination.limit})_`);
|
|
155
|
+
}
|
|
156
|
+
lines.push("");
|
|
95
157
|
for (const r of data) {
|
|
96
158
|
lines.push(`## ${starsFor(r.rating)} ${r.title}`);
|
|
97
159
|
lines.push(`**Installation**: ${r.installation}`);
|
|
@@ -108,7 +170,7 @@ function formatReviews(data, endpointLabel, pagination) {
|
|
|
108
170
|
lines.push("---");
|
|
109
171
|
lines.push("");
|
|
110
172
|
}
|
|
111
|
-
if (pagination.returned === pagination.limit) {
|
|
173
|
+
if (!filtered && pagination.returned === pagination.limit) {
|
|
112
174
|
lines.push(`_More results available — use offset=${pagination.offset + pagination.limit} to continue._`);
|
|
113
175
|
}
|
|
114
176
|
return lines.join("\n");
|
|
@@ -126,6 +188,33 @@ function formatInstallations(data) {
|
|
|
126
188
|
}
|
|
127
189
|
return lines.join("\n");
|
|
128
190
|
}
|
|
191
|
+
// ─── Shared review fetcher ────────────────────────────────────────────────────
|
|
192
|
+
async function fetchReviews(endpoint, params) {
|
|
193
|
+
if (params.installation) {
|
|
194
|
+
const result = await apiGet("/reviews", {
|
|
195
|
+
endpoint,
|
|
196
|
+
limit: FILTER_FETCH_CAP,
|
|
197
|
+
offset: 0,
|
|
198
|
+
});
|
|
199
|
+
const q = params.installation.toLowerCase();
|
|
200
|
+
const matched = result.data.filter((r) => r.installation.toLowerCase().includes(q));
|
|
201
|
+
const page = matched.slice(params.offset, params.offset + params.limit);
|
|
202
|
+
return {
|
|
203
|
+
data: page.map(sanitizeReview),
|
|
204
|
+
pagination: { limit: params.limit, offset: params.offset, returned: page.length },
|
|
205
|
+
filtered: { installation: params.installation, fetchedTotal: result.data.length },
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
const result = await apiGet("/reviews", {
|
|
209
|
+
endpoint,
|
|
210
|
+
limit: params.limit,
|
|
211
|
+
offset: params.offset,
|
|
212
|
+
});
|
|
213
|
+
return {
|
|
214
|
+
data: result.data.map(sanitizeReview),
|
|
215
|
+
pagination: result.pagination,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
129
218
|
// ─── MCP Server ───────────────────────────────────────────────────────────────
|
|
130
219
|
const server = new McpServer({
|
|
131
220
|
name: "Hots&Cots",
|
|
@@ -134,11 +223,11 @@ const server = new McpServer({
|
|
|
134
223
|
// ── Tool: health check ────────────────────────────────────────────────────────
|
|
135
224
|
server.registerTool("hotscots_health", {
|
|
136
225
|
title: "API Health Check",
|
|
137
|
-
description: `Verify that
|
|
226
|
+
description: `Verify that the Hots&Cots API key is valid and the service is reachable.
|
|
138
227
|
|
|
139
|
-
Returns
|
|
140
|
-
Use this to
|
|
141
|
-
inputSchema:
|
|
228
|
+
Returns status and timestamp on success.
|
|
229
|
+
Use this to confirm connectivity before running other tools.`,
|
|
230
|
+
inputSchema: {},
|
|
142
231
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
143
232
|
}, async () => {
|
|
144
233
|
try {
|
|
@@ -154,27 +243,24 @@ Use this to diagnose connectivity or authentication problems before running othe
|
|
|
154
243
|
// ── Tool: list installations ──────────────────────────────────────────────────
|
|
155
244
|
server.registerTool("hotscots_list_installations", {
|
|
156
245
|
title: "List Military Installations",
|
|
157
|
-
description: `List every military installation that has at least one review in the Hots&Cots database, with a breakdown
|
|
246
|
+
description: `List every military installation that has at least one review in the Hots&Cots database, with a count breakdown by review type. Costs 1 API request.
|
|
158
247
|
|
|
159
|
-
Returns:
|
|
160
|
-
- installation: name including state, e.g. "Fort Liberty, North Carolina"
|
|
161
|
-
- counts.cots:
|
|
162
|
-
- counts.hots:
|
|
163
|
-
- counts.other:
|
|
248
|
+
Returns per installation:
|
|
249
|
+
- installation: full name including state, e.g. "Fort Liberty, North Carolina"
|
|
250
|
+
- counts.cots: barracks review count
|
|
251
|
+
- counts.hots: dining (DFAC) review count
|
|
252
|
+
- counts.other: other facility review count
|
|
164
253
|
- counts.total: combined total
|
|
165
254
|
|
|
166
|
-
Use this to
|
|
255
|
+
Use this first to get exact installation names before fetching reviews.
|
|
167
256
|
|
|
168
257
|
Args:
|
|
169
|
-
- filter (string, optional): Case-insensitive substring to narrow
|
|
258
|
+
- filter (string, optional): Case-insensitive substring to narrow results (e.g. "Texas", "Fort", "Camp Lejeune")
|
|
170
259
|
- response_format: 'markdown' (default) or 'json'`,
|
|
171
|
-
inputSchema:
|
|
172
|
-
filter: z
|
|
173
|
-
.string()
|
|
174
|
-
.optional()
|
|
175
|
-
.describe("Optional substring filter on installation name (case-insensitive)"),
|
|
260
|
+
inputSchema: {
|
|
261
|
+
filter: z.string().max(100).optional().describe("Optional substring filter on installation name (case-insensitive)"),
|
|
176
262
|
response_format: ResponseFormatSchema,
|
|
177
|
-
}
|
|
263
|
+
},
|
|
178
264
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
179
265
|
}, async (params) => {
|
|
180
266
|
try {
|
|
@@ -202,50 +288,34 @@ Args:
|
|
|
202
288
|
// ── Tool: barracks (cots) reviews ─────────────────────────────────────────────
|
|
203
289
|
server.registerTool("hotscots_get_barracks_reviews", {
|
|
204
290
|
title: "Get Barracks Reviews",
|
|
205
|
-
description: `Fetch
|
|
291
|
+
description: `Fetch barracks / housing (Cots) reviews from the Hots&Cots database. Costs 1 API request.
|
|
206
292
|
|
|
207
|
-
|
|
293
|
+
⚠️ Keep limit small (default 20). Users have a monthly request quota — avoid large or repeated fetches.
|
|
294
|
+
⚠️ If installation is set, up to ${FILTER_FETCH_CAP} records are fetched and filtered locally. Pagination with an installation filter returns the first matching records from that pool.
|
|
208
295
|
|
|
209
|
-
|
|
210
|
-
- installation (string, optional): Filter to a specific installation name (partial match, case-insensitive). Use hotscots_list_installations to find exact names.
|
|
211
|
-
- limit (integer): Records per page, 1–1000 (default 50)
|
|
212
|
-
- offset (integer): Records to skip (default 0)
|
|
213
|
-
- response_format: 'markdown' (default) or 'json'
|
|
296
|
+
Each review includes: rating (1–5), feedback, tags, branch, and barracks-specific fields such as mold_issues, pest_issues, working_air_heat, working_furniture, accessible_laundry, private_sleeping_area, lockable_doors, dpw_satisfaction_rating, is_privatized_barracks.
|
|
214
297
|
|
|
215
|
-
|
|
216
|
-
-
|
|
217
|
-
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
.describe("Filter by installation name (partial, case-insensitive)"),
|
|
298
|
+
Args:
|
|
299
|
+
- installation (string, optional): Filter by installation name (partial match). Run hotscots_list_installations first to get exact names.
|
|
300
|
+
- limit (integer): Records per page, 1–100 (default 20)
|
|
301
|
+
- offset (integer): Records to skip (default 0). Only reliable without an installation filter.
|
|
302
|
+
- response_format: 'markdown' (default) or 'json'`,
|
|
303
|
+
inputSchema: {
|
|
304
|
+
installation: InstallationFilterSchema,
|
|
223
305
|
...PaginationSchema,
|
|
224
306
|
response_format: ResponseFormatSchema,
|
|
225
|
-
}
|
|
307
|
+
},
|
|
226
308
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
227
309
|
}, async (params) => {
|
|
228
310
|
try {
|
|
229
|
-
const
|
|
230
|
-
endpoint: EndpointType.COTS,
|
|
231
|
-
limit: params.installation ? 1000 : params.limit, // fetch more if we need to filter
|
|
232
|
-
offset: params.installation ? 0 : params.offset,
|
|
233
|
-
});
|
|
234
|
-
let data = result.data;
|
|
235
|
-
if (params.installation) {
|
|
236
|
-
const q = params.installation.toLowerCase();
|
|
237
|
-
data = data.filter((r) => r.installation.toLowerCase().includes(q));
|
|
238
|
-
// apply limit/offset after filtering
|
|
239
|
-
data = data.slice(params.offset, params.offset + params.limit);
|
|
240
|
-
}
|
|
311
|
+
const { data, pagination, filtered } = await fetchReviews(EndpointType.COTS, params);
|
|
241
312
|
if (!data.length) {
|
|
242
313
|
const where = params.installation ? ` for "${params.installation}"` : "";
|
|
243
314
|
return { content: [{ type: "text", text: `No barracks reviews found${where}.` }] };
|
|
244
315
|
}
|
|
245
|
-
const pagination = { limit: params.limit, offset: params.offset, returned: data.length };
|
|
246
316
|
const text = params.response_format === ResponseFormat.JSON
|
|
247
317
|
? JSON.stringify({ endpoint: "cots", data, pagination }, null, 2)
|
|
248
|
-
: formatReviews(data, "Barracks (Cots)", pagination);
|
|
318
|
+
: formatReviews(data, "Barracks (Cots)", pagination, filtered);
|
|
249
319
|
return {
|
|
250
320
|
content: [{ type: "text", text: truncate(text) }],
|
|
251
321
|
structuredContent: { endpoint: "cots", data, pagination },
|
|
@@ -258,49 +328,34 @@ Examples:
|
|
|
258
328
|
// ── Tool: dining / DFAC (hots) reviews ───────────────────────────────────────
|
|
259
329
|
server.registerTool("hotscots_get_dfac_reviews", {
|
|
260
330
|
title: "Get DFAC / Dining Reviews",
|
|
261
|
-
description: `Fetch
|
|
331
|
+
description: `Fetch dining facility / DFAC (Hots) reviews from the Hots&Cots database. Costs 1 API request.
|
|
262
332
|
|
|
263
|
-
|
|
333
|
+
⚠️ Keep limit small (default 20). Users have a monthly request quota — avoid large or repeated fetches.
|
|
334
|
+
⚠️ If installation is set, up to ${FILTER_FETCH_CAP} records are fetched and filtered locally. Pagination with an installation filter returns the first matching records from that pool.
|
|
264
335
|
|
|
265
|
-
|
|
266
|
-
- installation (string, optional): Filter to a specific installation name (partial match, case-insensitive). Use hotscots_list_installations to find exact names.
|
|
267
|
-
- limit (integer): Records per page, 1–1000 (default 50)
|
|
268
|
-
- offset (integer): Records to skip (default 0)
|
|
269
|
-
- response_format: 'markdown' (default) or 'json'
|
|
336
|
+
Each review includes: rating (1–5), feedback, tags, branch, dfac_name, and dining-specific fields such as breakfast_ranking, lunch_ranking, dinner_ranking, dfac_choices, dfac_healthy, dfac_filling, dfac_temp, dfac_police, has_shuttle, walking_distance, kiosk_level, inedible_food_issue.
|
|
270
337
|
|
|
271
|
-
|
|
272
|
-
-
|
|
273
|
-
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
.describe("Filter by installation name (partial, case-insensitive)"),
|
|
338
|
+
Args:
|
|
339
|
+
- installation (string, optional): Filter by installation name (partial match). Run hotscots_list_installations first to get exact names.
|
|
340
|
+
- limit (integer): Records per page, 1–100 (default 20)
|
|
341
|
+
- offset (integer): Records to skip (default 0). Only reliable without an installation filter.
|
|
342
|
+
- response_format: 'markdown' (default) or 'json'`,
|
|
343
|
+
inputSchema: {
|
|
344
|
+
installation: InstallationFilterSchema,
|
|
279
345
|
...PaginationSchema,
|
|
280
346
|
response_format: ResponseFormatSchema,
|
|
281
|
-
}
|
|
347
|
+
},
|
|
282
348
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
283
349
|
}, async (params) => {
|
|
284
350
|
try {
|
|
285
|
-
const
|
|
286
|
-
endpoint: EndpointType.HOTS,
|
|
287
|
-
limit: params.installation ? 1000 : params.limit,
|
|
288
|
-
offset: params.installation ? 0 : params.offset,
|
|
289
|
-
});
|
|
290
|
-
let data = result.data;
|
|
291
|
-
if (params.installation) {
|
|
292
|
-
const q = params.installation.toLowerCase();
|
|
293
|
-
data = data.filter((r) => r.installation.toLowerCase().includes(q));
|
|
294
|
-
data = data.slice(params.offset, params.offset + params.limit);
|
|
295
|
-
}
|
|
351
|
+
const { data, pagination, filtered } = await fetchReviews(EndpointType.HOTS, params);
|
|
296
352
|
if (!data.length) {
|
|
297
353
|
const where = params.installation ? ` for "${params.installation}"` : "";
|
|
298
354
|
return { content: [{ type: "text", text: `No dining reviews found${where}.` }] };
|
|
299
355
|
}
|
|
300
|
-
const pagination = { limit: params.limit, offset: params.offset, returned: data.length };
|
|
301
356
|
const text = params.response_format === ResponseFormat.JSON
|
|
302
357
|
? JSON.stringify({ endpoint: "hots", data, pagination }, null, 2)
|
|
303
|
-
: formatReviews(data, "Dining / DFAC (Hots)", pagination);
|
|
358
|
+
: formatReviews(data, "Dining / DFAC (Hots)", pagination, filtered);
|
|
304
359
|
return {
|
|
305
360
|
content: [{ type: "text", text: truncate(text) }],
|
|
306
361
|
structuredContent: { endpoint: "hots", data, pagination },
|
|
@@ -313,47 +368,34 @@ Examples:
|
|
|
313
368
|
// ── Tool: other facilities ────────────────────────────────────────────────────
|
|
314
369
|
server.registerTool("hotscots_get_other_reviews", {
|
|
315
370
|
title: "Get Other Facility Reviews",
|
|
316
|
-
description: `Fetch
|
|
371
|
+
description: `Fetch reviews of other on-base facilities from the Hots&Cots database. Costs 1 API request.
|
|
317
372
|
|
|
318
|
-
|
|
373
|
+
⚠️ Keep limit small (default 20). Users have a monthly request quota — avoid large or repeated fetches.
|
|
374
|
+
⚠️ If installation is set, up to ${FILTER_FETCH_CAP} records are fetched and filtered locally.
|
|
319
375
|
|
|
320
|
-
|
|
376
|
+
Covers: Medical clinics, Child Development Centers (CDC), gyms, PX/BX, legal offices, lodging, and moving/transportation services. Use the facility_type field to distinguish between them.
|
|
321
377
|
|
|
322
378
|
Args:
|
|
323
|
-
- installation (string, optional): Filter by installation name (partial
|
|
324
|
-
- limit (integer): Records per page, 1–
|
|
325
|
-
- offset (integer): Records to skip (default 0)
|
|
379
|
+
- installation (string, optional): Filter by installation name (partial match)
|
|
380
|
+
- limit (integer): Records per page, 1–100 (default 20)
|
|
381
|
+
- offset (integer): Records to skip (default 0). Only reliable without an installation filter.
|
|
326
382
|
- response_format: 'markdown' (default) or 'json'`,
|
|
327
|
-
inputSchema:
|
|
328
|
-
installation:
|
|
329
|
-
.string()
|
|
330
|
-
.optional()
|
|
331
|
-
.describe("Filter by installation name (partial, case-insensitive)"),
|
|
383
|
+
inputSchema: {
|
|
384
|
+
installation: InstallationFilterSchema,
|
|
332
385
|
...PaginationSchema,
|
|
333
386
|
response_format: ResponseFormatSchema,
|
|
334
|
-
}
|
|
387
|
+
},
|
|
335
388
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
336
389
|
}, async (params) => {
|
|
337
390
|
try {
|
|
338
|
-
const
|
|
339
|
-
endpoint: EndpointType.OTHER,
|
|
340
|
-
limit: params.installation ? 1000 : params.limit,
|
|
341
|
-
offset: params.installation ? 0 : params.offset,
|
|
342
|
-
});
|
|
343
|
-
let data = result.data;
|
|
344
|
-
if (params.installation) {
|
|
345
|
-
const q = params.installation.toLowerCase();
|
|
346
|
-
data = data.filter((r) => r.installation.toLowerCase().includes(q));
|
|
347
|
-
data = data.slice(params.offset, params.offset + params.limit);
|
|
348
|
-
}
|
|
391
|
+
const { data, pagination, filtered } = await fetchReviews(EndpointType.OTHER, params);
|
|
349
392
|
if (!data.length) {
|
|
350
393
|
const where = params.installation ? ` for "${params.installation}"` : "";
|
|
351
394
|
return { content: [{ type: "text", text: `No other facility reviews found${where}.` }] };
|
|
352
395
|
}
|
|
353
|
-
const pagination = { limit: params.limit, offset: params.offset, returned: data.length };
|
|
354
396
|
const text = params.response_format === ResponseFormat.JSON
|
|
355
397
|
? JSON.stringify({ endpoint: "other", data, pagination }, null, 2)
|
|
356
|
-
: formatReviews(data, "Other Facilities", pagination);
|
|
398
|
+
: formatReviews(data, "Other Facilities", pagination, filtered);
|
|
357
399
|
return {
|
|
358
400
|
content: [{ type: "text", text: truncate(text) }],
|
|
359
401
|
structuredContent: { endpoint: "other", data, pagination },
|
|
@@ -371,8 +413,18 @@ async function runStdio() {
|
|
|
371
413
|
}
|
|
372
414
|
async function runHTTP() {
|
|
373
415
|
const app = express();
|
|
374
|
-
app.
|
|
416
|
+
app.disable("x-powered-by");
|
|
417
|
+
app.use(express.json({ limit: "64kb" }));
|
|
418
|
+
// Restrict to loopback — prevents DNS rebinding attacks.
|
|
419
|
+
const ALLOWED_ORIGINS = new Set(["http://localhost", "http://127.0.0.1"]);
|
|
375
420
|
app.post("/mcp", async (req, res) => {
|
|
421
|
+
// Origin check — reject cross-origin requests.
|
|
422
|
+
const origin = req.headers.origin ?? "";
|
|
423
|
+
const originBase = origin.replace(/:\d+$/, ""); // strip port
|
|
424
|
+
if (origin && !ALLOWED_ORIGINS.has(originBase)) {
|
|
425
|
+
res.status(403).json({ error: "Forbidden" });
|
|
426
|
+
return;
|
|
427
|
+
}
|
|
376
428
|
const transport = new StreamableHTTPServerTransport({
|
|
377
429
|
sessionIdGenerator: undefined,
|
|
378
430
|
enableJsonResponse: true,
|
|
@@ -382,8 +434,9 @@ async function runHTTP() {
|
|
|
382
434
|
await transport.handleRequest(req, res, req.body);
|
|
383
435
|
});
|
|
384
436
|
const port = parseInt(process.env.PORT ?? "3000", 10);
|
|
385
|
-
|
|
386
|
-
|
|
437
|
+
// Bind to loopback only — not accessible from the network.
|
|
438
|
+
app.listen(port, "127.0.0.1", () => {
|
|
439
|
+
console.error(`Hots&Cots MCP server running on http://127.0.0.1:${port}/mcp`);
|
|
387
440
|
});
|
|
388
441
|
}
|
|
389
442
|
const transportMode = process.env.TRANSPORT ?? "stdio";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED