@hotscots/mcp 1.0.0 → 1.0.1
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/dist/index.js +245 -215
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -4,18 +4,28 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
4
4
|
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
5
5
|
import express from "express";
|
|
6
6
|
import { z } from "zod";
|
|
7
|
-
|
|
7
|
+
// ─── Config ──────────────────────────────────────────────────────────────────
|
|
8
|
+
const API_BASE_URL = process.env.HOTSCOTS_API_URL ?? "https://api.hotscots.app/functions/v1/api";
|
|
8
9
|
const CHARACTER_LIMIT = 25000;
|
|
10
|
+
var EndpointType;
|
|
11
|
+
(function (EndpointType) {
|
|
12
|
+
EndpointType["HOTS"] = "hots";
|
|
13
|
+
EndpointType["COTS"] = "cots";
|
|
14
|
+
EndpointType["OTHER"] = "other";
|
|
15
|
+
})(EndpointType || (EndpointType = {}));
|
|
9
16
|
var ResponseFormat;
|
|
10
17
|
(function (ResponseFormat) {
|
|
11
18
|
ResponseFormat["MARKDOWN"] = "markdown";
|
|
12
19
|
ResponseFormat["JSON"] = "json";
|
|
13
20
|
})(ResponseFormat || (ResponseFormat = {}));
|
|
14
|
-
//
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
if (!
|
|
18
|
-
throw new Error("HOTSCOTS_API_KEY environment variable is not set");
|
|
21
|
+
// ─── API client ───────────────────────────────────────────────────────────────
|
|
22
|
+
function getApiKey() {
|
|
23
|
+
const key = process.env.HOTSCOTS_API_KEY;
|
|
24
|
+
if (!key)
|
|
25
|
+
throw new Error("HOTSCOTS_API_KEY environment variable is not set.");
|
|
26
|
+
return key;
|
|
27
|
+
}
|
|
28
|
+
async function apiGet(path, params) {
|
|
19
29
|
const url = new URL(`${API_BASE_URL}${path}`);
|
|
20
30
|
if (params) {
|
|
21
31
|
for (const [k, v] of Object.entries(params)) {
|
|
@@ -25,19 +35,20 @@ async function apiRequest(path, params) {
|
|
|
25
35
|
}
|
|
26
36
|
const res = await fetch(url.toString(), {
|
|
27
37
|
headers: {
|
|
28
|
-
Authorization: `Bearer ${
|
|
38
|
+
Authorization: `Bearer ${getApiKey()}`,
|
|
29
39
|
Accept: "application/json",
|
|
30
40
|
},
|
|
31
41
|
signal: AbortSignal.timeout(30_000),
|
|
32
42
|
});
|
|
33
43
|
if (!res.ok) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
default: throw new Error(`API error ${res.status}: ${res.statusText}`);
|
|
44
|
+
let message = `API error ${res.status}`;
|
|
45
|
+
try {
|
|
46
|
+
const body = (await res.json());
|
|
47
|
+
if (body.error)
|
|
48
|
+
message = body.error;
|
|
40
49
|
}
|
|
50
|
+
catch { /* ignore */ }
|
|
51
|
+
throw new Error(message);
|
|
41
52
|
}
|
|
42
53
|
return res.json();
|
|
43
54
|
}
|
|
@@ -47,293 +58,312 @@ function handleError(err) {
|
|
|
47
58
|
function truncate(text) {
|
|
48
59
|
if (text.length <= CHARACTER_LIMIT)
|
|
49
60
|
return text;
|
|
50
|
-
return text.slice(0, CHARACTER_LIMIT) +
|
|
61
|
+
return (text.slice(0, CHARACTER_LIMIT) +
|
|
62
|
+
"\n\n[Response truncated — use a higher offset or tighter filters to page through results.]");
|
|
51
63
|
}
|
|
52
|
-
//
|
|
53
|
-
const PaginationSchema =
|
|
54
|
-
limit: z
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
64
|
+
// ─── Shared schemas ───────────────────────────────────────────────────────────
|
|
65
|
+
const PaginationSchema = {
|
|
66
|
+
limit: z
|
|
67
|
+
.number()
|
|
68
|
+
.int()
|
|
69
|
+
.min(1)
|
|
70
|
+
.max(1000)
|
|
71
|
+
.default(50)
|
|
72
|
+
.describe("Records per page (1–1000, default 50)"),
|
|
73
|
+
offset: z
|
|
74
|
+
.number()
|
|
75
|
+
.int()
|
|
76
|
+
.min(0)
|
|
77
|
+
.default(0)
|
|
78
|
+
.describe("Records to skip for pagination (default 0)"),
|
|
79
|
+
};
|
|
80
|
+
const ResponseFormatSchema = z
|
|
81
|
+
.nativeEnum(ResponseFormat)
|
|
58
82
|
.default(ResponseFormat.MARKDOWN)
|
|
59
83
|
.describe("Output format: 'markdown' for human-readable, 'json' for machine-readable");
|
|
60
|
-
//
|
|
84
|
+
// ─── Formatters ───────────────────────────────────────────────────────────────
|
|
85
|
+
function starsFor(rating) {
|
|
86
|
+
const r = Math.round(rating);
|
|
87
|
+
return "★".repeat(r) + "☆".repeat(Math.max(0, 5 - r));
|
|
88
|
+
}
|
|
89
|
+
function formatReviews(data, endpointLabel, pagination) {
|
|
90
|
+
const lines = [
|
|
91
|
+
`# Hots&Cots — ${endpointLabel} Reviews`,
|
|
92
|
+
`_Showing ${pagination.returned} records (offset ${pagination.offset}, limit ${pagination.limit})_`,
|
|
93
|
+
"",
|
|
94
|
+
];
|
|
95
|
+
for (const r of data) {
|
|
96
|
+
lines.push(`## ${starsFor(r.rating)} ${r.title}`);
|
|
97
|
+
lines.push(`**Installation**: ${r.installation}`);
|
|
98
|
+
if (r.branch)
|
|
99
|
+
lines.push(`**Branch**: ${r.branch}`);
|
|
100
|
+
lines.push(`**Date**: ${new Date(r.created_at).toLocaleDateString("en-US", { year: "numeric", month: "short", day: "numeric" })}`);
|
|
101
|
+
if (r.tags?.length)
|
|
102
|
+
lines.push(`**Tags**: ${r.tags.join(", ")}`);
|
|
103
|
+
if (r.feedback) {
|
|
104
|
+
lines.push("");
|
|
105
|
+
lines.push(r.feedback);
|
|
106
|
+
}
|
|
107
|
+
lines.push("");
|
|
108
|
+
lines.push("---");
|
|
109
|
+
lines.push("");
|
|
110
|
+
}
|
|
111
|
+
if (pagination.returned === pagination.limit) {
|
|
112
|
+
lines.push(`_More results available — use offset=${pagination.offset + pagination.limit} to continue._`);
|
|
113
|
+
}
|
|
114
|
+
return lines.join("\n");
|
|
115
|
+
}
|
|
116
|
+
function formatInstallations(data) {
|
|
117
|
+
const sorted = [...data].sort((a, b) => b.counts.total - a.counts.total);
|
|
118
|
+
const lines = [
|
|
119
|
+
`# Hots&Cots — Military Installations (${data.length} total)`,
|
|
120
|
+
"",
|
|
121
|
+
"| Installation | Barracks | Dining | Other | Total |",
|
|
122
|
+
"|---|---:|---:|---:|---:|",
|
|
123
|
+
];
|
|
124
|
+
for (const inst of sorted) {
|
|
125
|
+
lines.push(`| ${inst.installation} | ${inst.counts.cots} | ${inst.counts.hots} | ${inst.counts.other} | **${inst.counts.total}** |`);
|
|
126
|
+
}
|
|
127
|
+
return lines.join("\n");
|
|
128
|
+
}
|
|
129
|
+
// ─── MCP Server ───────────────────────────────────────────────────────────────
|
|
61
130
|
const server = new McpServer({
|
|
62
|
-
name: "
|
|
131
|
+
name: "Hots&Cots",
|
|
63
132
|
version: "1.0.0",
|
|
64
133
|
});
|
|
65
|
-
// Tool:
|
|
66
|
-
server.registerTool("
|
|
67
|
-
title: "
|
|
68
|
-
description: `
|
|
69
|
-
|
|
70
|
-
Args:
|
|
71
|
-
- query (string): Name, abbreviation, or keyword (e.g., "Fort Liberty", "Bragg", "Camp Lejeune")
|
|
72
|
-
- branch (string, optional): Filter by military branch — "Army", "Navy", "Air Force", "Marines", "Coast Guard", "Space Force"
|
|
73
|
-
- state (string, optional): Two-letter US state abbreviation (e.g., "NC", "TX")
|
|
74
|
-
- limit (number): Max results, 1–100 (default: 20)
|
|
75
|
-
- offset (number): Pagination offset (default: 0)
|
|
76
|
-
- response_format: 'markdown' or 'json'
|
|
77
|
-
|
|
78
|
-
Returns:
|
|
79
|
-
List of installations with id, name, branch, state, and city.
|
|
134
|
+
// ── Tool: health check ────────────────────────────────────────────────────────
|
|
135
|
+
server.registerTool("hotscots_health", {
|
|
136
|
+
title: "API Health Check",
|
|
137
|
+
description: `Verify that your Hots&Cots API key is valid and the service is reachable.
|
|
80
138
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
inputSchema: z.object({
|
|
85
|
-
query: z.string().max(200).default("").describe("Search keyword (name, abbreviation, or location)"),
|
|
86
|
-
branch: z.string().optional().describe("Military branch filter"),
|
|
87
|
-
state: z.string().length(2).optional().describe("US state abbreviation (e.g., NC)"),
|
|
88
|
-
...PaginationSchema.shape,
|
|
89
|
-
response_format: ResponseFormatSchema,
|
|
90
|
-
}),
|
|
139
|
+
Returns { success, status, timestamp } on success.
|
|
140
|
+
Use this to diagnose connectivity or authentication problems before running other tools.`,
|
|
141
|
+
inputSchema: z.object({}),
|
|
91
142
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
92
|
-
}, async (
|
|
143
|
+
}, async () => {
|
|
93
144
|
try {
|
|
94
|
-
const result = await
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
limit: params.limit,
|
|
99
|
-
offset: params.offset,
|
|
100
|
-
});
|
|
101
|
-
if (!result.data.length) {
|
|
102
|
-
return { content: [{ type: "text", text: "No installations found matching your search." }] };
|
|
103
|
-
}
|
|
104
|
-
let text;
|
|
105
|
-
if (params.response_format === ResponseFormat.JSON) {
|
|
106
|
-
text = JSON.stringify(result, null, 2);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
const lines = [
|
|
110
|
-
`# Military Installations (${result.total} total, showing ${result.data.length})`,
|
|
111
|
-
"",
|
|
112
|
-
];
|
|
113
|
-
for (const inst of result.data) {
|
|
114
|
-
lines.push(`## ${inst.name} (\`${inst.id}\`)`);
|
|
115
|
-
lines.push(`- **Branch**: ${inst.branch}`);
|
|
116
|
-
lines.push(`- **Location**: ${[inst.city, inst.state, inst.country].filter(Boolean).join(", ")}`);
|
|
117
|
-
lines.push("");
|
|
118
|
-
}
|
|
119
|
-
if (result.has_more)
|
|
120
|
-
lines.push(`_Use offset=${result.next_offset} to see more._`);
|
|
121
|
-
text = lines.join("\n");
|
|
122
|
-
}
|
|
123
|
-
return { content: [{ type: "text", text: truncate(text) }], structuredContent: result };
|
|
145
|
+
const result = await apiGet("/health");
|
|
146
|
+
return {
|
|
147
|
+
content: [{ type: "text", text: `✅ API is healthy\n- Status: ${result.status}\n- Time: ${result.timestamp}` }],
|
|
148
|
+
};
|
|
124
149
|
}
|
|
125
150
|
catch (err) {
|
|
126
151
|
return { content: [{ type: "text", text: handleError(err) }] };
|
|
127
152
|
}
|
|
128
153
|
});
|
|
129
|
-
// Tool:
|
|
130
|
-
server.registerTool("
|
|
131
|
-
title: "
|
|
132
|
-
description: `
|
|
133
|
-
|
|
134
|
-
Args:
|
|
135
|
-
- installation_id (string): The installation ID from hotscots_search_installations
|
|
136
|
-
- response_format: 'markdown' or 'json'
|
|
154
|
+
// ── Tool: list installations ──────────────────────────────────────────────────
|
|
155
|
+
server.registerTool("hotscots_list_installations", {
|
|
156
|
+
title: "List Military Installations",
|
|
157
|
+
description: `List every military installation that has at least one review in the Hots&Cots database, with a breakdown of review counts by type.
|
|
137
158
|
|
|
138
159
|
Returns:
|
|
139
|
-
|
|
160
|
+
- installation: name including state, e.g. "Fort Liberty, North Carolina"
|
|
161
|
+
- counts.cots: number of barracks reviews
|
|
162
|
+
- counts.hots: number of dining (DFAC) reviews
|
|
163
|
+
- counts.other: number of other facility reviews
|
|
164
|
+
- counts.total: combined total
|
|
165
|
+
|
|
166
|
+
Use this to discover valid installation names before fetching reviews. Results are sorted by total review count (most-reviewed first).
|
|
167
|
+
|
|
168
|
+
Args:
|
|
169
|
+
- filter (string, optional): Case-insensitive substring to narrow by installation name (e.g. "Texas", "Fort", "Camp")
|
|
170
|
+
- response_format: 'markdown' (default) or 'json'`,
|
|
140
171
|
inputSchema: z.object({
|
|
141
|
-
|
|
172
|
+
filter: z
|
|
173
|
+
.string()
|
|
174
|
+
.optional()
|
|
175
|
+
.describe("Optional substring filter on installation name (case-insensitive)"),
|
|
142
176
|
response_format: ResponseFormatSchema,
|
|
143
177
|
}),
|
|
144
178
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
145
179
|
}, async (params) => {
|
|
146
180
|
try {
|
|
147
|
-
const
|
|
148
|
-
let
|
|
149
|
-
if (params.
|
|
150
|
-
|
|
181
|
+
const result = await apiGet("/installations");
|
|
182
|
+
let data = result.data;
|
|
183
|
+
if (params.filter) {
|
|
184
|
+
const q = params.filter.toLowerCase();
|
|
185
|
+
data = data.filter((i) => i.installation.toLowerCase().includes(q));
|
|
151
186
|
}
|
|
152
|
-
|
|
153
|
-
text
|
|
154
|
-
`# ${inst.name}`,
|
|
155
|
-
`- **ID**: \`${inst.id}\``,
|
|
156
|
-
`- **Branch**: ${inst.branch}`,
|
|
157
|
-
`- **Location**: ${[inst.city, inst.state, inst.country].filter(Boolean).join(", ")}`,
|
|
158
|
-
].join("\n");
|
|
187
|
+
if (!data.length) {
|
|
188
|
+
return { content: [{ type: "text", text: `No installations found matching "${params.filter}".` }] };
|
|
159
189
|
}
|
|
160
|
-
|
|
190
|
+
const text = params.response_format === ResponseFormat.JSON
|
|
191
|
+
? JSON.stringify({ count: data.length, data }, null, 2)
|
|
192
|
+
: formatInstallations(data);
|
|
193
|
+
return {
|
|
194
|
+
content: [{ type: "text", text: truncate(text) }],
|
|
195
|
+
structuredContent: { count: data.length, data },
|
|
196
|
+
};
|
|
161
197
|
}
|
|
162
198
|
catch (err) {
|
|
163
199
|
return { content: [{ type: "text", text: handleError(err) }] };
|
|
164
200
|
}
|
|
165
201
|
});
|
|
166
|
-
// Tool:
|
|
202
|
+
// ── Tool: barracks (cots) reviews ─────────────────────────────────────────────
|
|
167
203
|
server.registerTool("hotscots_get_barracks_reviews", {
|
|
168
204
|
title: "Get Barracks Reviews",
|
|
169
|
-
description: `Fetch barracks (
|
|
205
|
+
description: `Fetch paginated barracks / housing (Cots) reviews from the Hots&Cots database.
|
|
170
206
|
|
|
171
|
-
|
|
172
|
-
- installation_id (string): Installation ID from hotscots_search_installations
|
|
173
|
-
- building (string, optional): Filter by specific building or barracks name/number
|
|
174
|
-
- min_rating (number, optional): Minimum star rating 1–5
|
|
175
|
-
- limit (number): Max results, 1–100 (default: 20)
|
|
176
|
-
- offset (number): Pagination offset (default: 0)
|
|
177
|
-
- response_format: 'markdown' or 'json'
|
|
207
|
+
Each review may include fields like: rating (1–5), feedback, tags, branch, mold_issues, pest_issues, working_air_heat, working_furniture, accessible_laundry, private_sleeping_area, lockable_doors, dpw_satisfaction_rating, is_privatized_barracks, and more.
|
|
178
208
|
|
|
179
|
-
|
|
180
|
-
|
|
209
|
+
Args:
|
|
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'
|
|
181
214
|
|
|
182
215
|
Examples:
|
|
183
|
-
- "
|
|
184
|
-
- "
|
|
216
|
+
- "Barracks reviews at Fort Liberty" → installation="Fort Liberty"
|
|
217
|
+
- "Show mold complaints" → fetch reviews and look for mold_issues=true in the results`,
|
|
185
218
|
inputSchema: z.object({
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
219
|
+
installation: z
|
|
220
|
+
.string()
|
|
221
|
+
.optional()
|
|
222
|
+
.describe("Filter by installation name (partial, case-insensitive)"),
|
|
223
|
+
...PaginationSchema,
|
|
190
224
|
response_format: ResponseFormatSchema,
|
|
191
225
|
}),
|
|
192
226
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
193
227
|
}, async (params) => {
|
|
194
228
|
try {
|
|
195
|
-
const result = await
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
limit: params.limit,
|
|
200
|
-
offset: params.offset,
|
|
229
|
+
const result = await apiGet("/reviews", {
|
|
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,
|
|
201
233
|
});
|
|
202
|
-
|
|
203
|
-
|
|
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
|
+
}
|
|
241
|
+
if (!data.length) {
|
|
242
|
+
const where = params.installation ? ` for "${params.installation}"` : "";
|
|
243
|
+
return { content: [{ type: "text", text: `No barracks reviews found${where}.` }] };
|
|
204
244
|
}
|
|
245
|
+
const pagination = { limit: params.limit, offset: params.offset, returned: data.length };
|
|
205
246
|
const text = params.response_format === ResponseFormat.JSON
|
|
206
|
-
? JSON.stringify(
|
|
207
|
-
: formatReviews(
|
|
208
|
-
return {
|
|
247
|
+
? JSON.stringify({ endpoint: "cots", data, pagination }, null, 2)
|
|
248
|
+
: formatReviews(data, "Barracks (Cots)", pagination);
|
|
249
|
+
return {
|
|
250
|
+
content: [{ type: "text", text: truncate(text) }],
|
|
251
|
+
structuredContent: { endpoint: "cots", data, pagination },
|
|
252
|
+
};
|
|
209
253
|
}
|
|
210
254
|
catch (err) {
|
|
211
255
|
return { content: [{ type: "text", text: handleError(err) }] };
|
|
212
256
|
}
|
|
213
257
|
});
|
|
214
|
-
// Tool:
|
|
258
|
+
// ── Tool: dining / DFAC (hots) reviews ───────────────────────────────────────
|
|
215
259
|
server.registerTool("hotscots_get_dfac_reviews", {
|
|
216
|
-
title: "Get DFAC Reviews",
|
|
217
|
-
description: `Fetch
|
|
260
|
+
title: "Get DFAC / Dining Reviews",
|
|
261
|
+
description: `Fetch paginated dining facility / DFAC (Hots) reviews from the Hots&Cots database.
|
|
218
262
|
|
|
219
|
-
|
|
220
|
-
- installation_id (string): Installation ID from hotscots_search_installations
|
|
221
|
-
- building (string, optional): Filter by specific DFAC name or building
|
|
222
|
-
- min_rating (number, optional): Minimum star rating 1–5
|
|
223
|
-
- limit (number): Max results, 1–100 (default: 20)
|
|
224
|
-
- offset (number): Pagination offset (default: 0)
|
|
225
|
-
- response_format: 'markdown' or 'json'
|
|
263
|
+
Each review may include fields like: rating (1–5), feedback, tags, branch, dfac_name, 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, and more.
|
|
226
264
|
|
|
227
|
-
|
|
228
|
-
|
|
265
|
+
Args:
|
|
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'
|
|
229
270
|
|
|
230
271
|
Examples:
|
|
231
|
-
- "
|
|
232
|
-
- "
|
|
272
|
+
- "DFAC reviews at Camp Lejeune" → installation="Camp Lejeune"
|
|
273
|
+
- "Which installations have the best chow?" → use hotscots_list_installations, then compare average ratings`,
|
|
233
274
|
inputSchema: z.object({
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
275
|
+
installation: z
|
|
276
|
+
.string()
|
|
277
|
+
.optional()
|
|
278
|
+
.describe("Filter by installation name (partial, case-insensitive)"),
|
|
279
|
+
...PaginationSchema,
|
|
238
280
|
response_format: ResponseFormatSchema,
|
|
239
281
|
}),
|
|
240
282
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
241
283
|
}, async (params) => {
|
|
242
284
|
try {
|
|
243
|
-
const result = await
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
limit: params.limit,
|
|
248
|
-
offset: params.offset,
|
|
285
|
+
const result = await apiGet("/reviews", {
|
|
286
|
+
endpoint: EndpointType.HOTS,
|
|
287
|
+
limit: params.installation ? 1000 : params.limit,
|
|
288
|
+
offset: params.installation ? 0 : params.offset,
|
|
249
289
|
});
|
|
250
|
-
|
|
251
|
-
|
|
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
|
+
}
|
|
296
|
+
if (!data.length) {
|
|
297
|
+
const where = params.installation ? ` for "${params.installation}"` : "";
|
|
298
|
+
return { content: [{ type: "text", text: `No dining reviews found${where}.` }] };
|
|
252
299
|
}
|
|
300
|
+
const pagination = { limit: params.limit, offset: params.offset, returned: data.length };
|
|
253
301
|
const text = params.response_format === ResponseFormat.JSON
|
|
254
|
-
? JSON.stringify(
|
|
255
|
-
: formatReviews(
|
|
256
|
-
return {
|
|
302
|
+
? JSON.stringify({ endpoint: "hots", data, pagination }, null, 2)
|
|
303
|
+
: formatReviews(data, "Dining / DFAC (Hots)", pagination);
|
|
304
|
+
return {
|
|
305
|
+
content: [{ type: "text", text: truncate(text) }],
|
|
306
|
+
structuredContent: { endpoint: "hots", data, pagination },
|
|
307
|
+
};
|
|
257
308
|
}
|
|
258
309
|
catch (err) {
|
|
259
310
|
return { content: [{ type: "text", text: handleError(err) }] };
|
|
260
311
|
}
|
|
261
312
|
});
|
|
262
|
-
// Tool:
|
|
263
|
-
server.registerTool("
|
|
264
|
-
title: "
|
|
265
|
-
description: `
|
|
313
|
+
// ── Tool: other facilities ────────────────────────────────────────────────────
|
|
314
|
+
server.registerTool("hotscots_get_other_reviews", {
|
|
315
|
+
title: "Get Other Facility Reviews",
|
|
316
|
+
description: `Fetch paginated reviews of other on-base facilities (not barracks or DFACs) from the Hots&Cots database.
|
|
266
317
|
|
|
267
|
-
|
|
268
|
-
- query (string): Keyword or phrase to search in review titles and body text
|
|
269
|
-
- category (string, optional): Filter to 'barracks' or 'dfac' reviews only
|
|
270
|
-
- installation_id (string, optional): Scope search to a specific installation
|
|
271
|
-
- min_rating (number, optional): Minimum star rating 1–5
|
|
272
|
-
- limit (number): Max results, 1–100 (default: 20)
|
|
273
|
-
- offset (number): Pagination offset (default: 0)
|
|
274
|
-
- response_format: 'markdown' or 'json'
|
|
318
|
+
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.
|
|
275
319
|
|
|
276
|
-
|
|
277
|
-
Paginated list of matching reviews with installation context.
|
|
320
|
+
Each review may include: facility_type, rating, feedback, branch, recommend_facility, walking_distance, and facility-specific fields (e.g. doctor_wait_times for medical, curriculum_effect for CDC, mover_company for moving).
|
|
278
321
|
|
|
279
|
-
|
|
280
|
-
-
|
|
281
|
-
-
|
|
322
|
+
Args:
|
|
323
|
+
- installation (string, optional): Filter by installation name (partial, case-insensitive)
|
|
324
|
+
- limit (integer): Records per page, 1–1000 (default 50)
|
|
325
|
+
- offset (integer): Records to skip (default 0)
|
|
326
|
+
- response_format: 'markdown' (default) or 'json'`,
|
|
282
327
|
inputSchema: z.object({
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
...PaginationSchema
|
|
328
|
+
installation: z
|
|
329
|
+
.string()
|
|
330
|
+
.optional()
|
|
331
|
+
.describe("Filter by installation name (partial, case-insensitive)"),
|
|
332
|
+
...PaginationSchema,
|
|
288
333
|
response_format: ResponseFormatSchema,
|
|
289
334
|
}),
|
|
290
335
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
291
336
|
}, async (params) => {
|
|
292
337
|
try {
|
|
293
|
-
const result = await
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
min_rating: params.min_rating,
|
|
298
|
-
limit: params.limit,
|
|
299
|
-
offset: params.offset,
|
|
338
|
+
const result = await apiGet("/reviews", {
|
|
339
|
+
endpoint: EndpointType.OTHER,
|
|
340
|
+
limit: params.installation ? 1000 : params.limit,
|
|
341
|
+
offset: params.installation ? 0 : params.offset,
|
|
300
342
|
});
|
|
301
|
-
|
|
302
|
-
|
|
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);
|
|
303
348
|
}
|
|
349
|
+
if (!data.length) {
|
|
350
|
+
const where = params.installation ? ` for "${params.installation}"` : "";
|
|
351
|
+
return { content: [{ type: "text", text: `No other facility reviews found${where}.` }] };
|
|
352
|
+
}
|
|
353
|
+
const pagination = { limit: params.limit, offset: params.offset, returned: data.length };
|
|
304
354
|
const text = params.response_format === ResponseFormat.JSON
|
|
305
|
-
? JSON.stringify(
|
|
306
|
-
: formatReviews(
|
|
307
|
-
return {
|
|
355
|
+
? JSON.stringify({ endpoint: "other", data, pagination }, null, 2)
|
|
356
|
+
: formatReviews(data, "Other Facilities", pagination);
|
|
357
|
+
return {
|
|
358
|
+
content: [{ type: "text", text: truncate(text) }],
|
|
359
|
+
structuredContent: { endpoint: "other", data, pagination },
|
|
360
|
+
};
|
|
308
361
|
}
|
|
309
362
|
catch (err) {
|
|
310
363
|
return { content: [{ type: "text", text: handleError(err) }] };
|
|
311
364
|
}
|
|
312
365
|
});
|
|
313
|
-
//
|
|
314
|
-
function formatReviews(result, label) {
|
|
315
|
-
const lines = [
|
|
316
|
-
`# ${label} Reviews (${result.total} total, showing ${result.data.length})`,
|
|
317
|
-
"",
|
|
318
|
-
];
|
|
319
|
-
for (const r of result.data) {
|
|
320
|
-
lines.push(`## ${"★".repeat(r.rating)}${"☆".repeat(5 - r.rating)} ${r.title ?? "(no title)"}`);
|
|
321
|
-
if (r.building)
|
|
322
|
-
lines.push(`**Building**: ${r.building}`);
|
|
323
|
-
if (r.author_rank)
|
|
324
|
-
lines.push(`**Reviewer rank**: ${r.author_rank}`);
|
|
325
|
-
lines.push(`**Date**: ${new Date(r.created_at).toLocaleDateString()}`);
|
|
326
|
-
lines.push("");
|
|
327
|
-
lines.push(r.body);
|
|
328
|
-
lines.push("");
|
|
329
|
-
lines.push("---");
|
|
330
|
-
lines.push("");
|
|
331
|
-
}
|
|
332
|
-
if (result.has_more)
|
|
333
|
-
lines.push(`_Use offset=${result.next_offset} to see more._`);
|
|
334
|
-
return lines.join("\n");
|
|
335
|
-
}
|
|
336
|
-
// --- Transport ---
|
|
366
|
+
// ─── Transport ────────────────────────────────────────────────────────────────
|
|
337
367
|
async function runStdio() {
|
|
338
368
|
const transport = new StdioServerTransport();
|
|
339
369
|
await server.connect(transport);
|
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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hotscots/mcp",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Official Hots&Cots MCP server — barracks, DFAC, and facility reviews for U.S. military installations",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
@@ -50,4 +50,4 @@
|
|
|
50
50
|
"@types/node": "^20.14.0",
|
|
51
51
|
"typescript": "^5.4.5"
|
|
52
52
|
}
|
|
53
|
-
}
|
|
53
|
+
}
|