@hotscots/mcp 1.0.0 → 1.0.2
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 +282 -225
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
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
|
@@ -4,18 +4,38 @@ 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
|
+
// 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;
|
|
13
|
+
var EndpointType;
|
|
14
|
+
(function (EndpointType) {
|
|
15
|
+
EndpointType["HOTS"] = "hots";
|
|
16
|
+
EndpointType["COTS"] = "cots";
|
|
17
|
+
EndpointType["OTHER"] = "other";
|
|
18
|
+
})(EndpointType || (EndpointType = {}));
|
|
9
19
|
var ResponseFormat;
|
|
10
20
|
(function (ResponseFormat) {
|
|
11
21
|
ResponseFormat["MARKDOWN"] = "markdown";
|
|
12
22
|
ResponseFormat["JSON"] = "json";
|
|
13
23
|
})(ResponseFormat || (ResponseFormat = {}));
|
|
14
|
-
//
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
if (!
|
|
18
|
-
|
|
24
|
+
// ─── API key validation ───────────────────────────────────────────────────────
|
|
25
|
+
function requireApiKey() {
|
|
26
|
+
const key = process.env.HOTSCOTS_API_KEY;
|
|
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
|
+
}
|
|
33
|
+
return key;
|
|
34
|
+
}
|
|
35
|
+
// Validate key once at startup — fail fast before Claude even connects.
|
|
36
|
+
const API_KEY = requireApiKey();
|
|
37
|
+
// ─── API client ───────────────────────────────────────────────────────────────
|
|
38
|
+
async function apiGet(path, params) {
|
|
19
39
|
const url = new URL(`${API_BASE_URL}${path}`);
|
|
20
40
|
if (params) {
|
|
21
41
|
for (const [k, v] of Object.entries(params)) {
|
|
@@ -23,20 +43,27 @@ async function apiRequest(path, params) {
|
|
|
23
43
|
url.searchParams.set(k, String(v));
|
|
24
44
|
}
|
|
25
45
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
+
}
|
|
33
60
|
if (!res.ok) {
|
|
61
|
+
// Map status codes to user-friendly messages; don't leak raw API internals.
|
|
34
62
|
switch (res.status) {
|
|
35
|
-
case 401: throw new Error("
|
|
36
|
-
case 403: throw new Error("
|
|
37
|
-
case
|
|
38
|
-
|
|
39
|
-
default: throw new Error(`API error ${res.status}: ${res.statusText}`);
|
|
63
|
+
case 401: throw new Error("Invalid or expired API key. Check your HOTSCOTS_API_KEY.");
|
|
64
|
+
case 403: throw new Error("Your plan does not have access to this data. Check your subscription tier.");
|
|
65
|
+
case 429: throw new Error("Monthly request quota exceeded. Upgrade your plan or wait for the next billing cycle.");
|
|
66
|
+
default: throw new Error(`The Hots&Cots API returned an error (${res.status}). Please try again shortly.`);
|
|
40
67
|
}
|
|
41
68
|
}
|
|
42
69
|
return res.json();
|
|
@@ -47,293 +74,323 @@ function handleError(err) {
|
|
|
47
74
|
function truncate(text) {
|
|
48
75
|
if (text.length <= CHARACTER_LIMIT)
|
|
49
76
|
return text;
|
|
50
|
-
return text.slice(0, CHARACTER_LIMIT) +
|
|
77
|
+
return (text.slice(0, CHARACTER_LIMIT) +
|
|
78
|
+
"\n\n[Response truncated — lower the limit or increase the offset to page through results.]");
|
|
51
79
|
}
|
|
52
|
-
//
|
|
53
|
-
const PaginationSchema =
|
|
54
|
-
limit: z
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
80
|
+
// ─── Shared schemas ───────────────────────────────────────────────────────────
|
|
81
|
+
const PaginationSchema = {
|
|
82
|
+
limit: z
|
|
83
|
+
.number()
|
|
84
|
+
.int()
|
|
85
|
+
.min(1)
|
|
86
|
+
.max(100)
|
|
87
|
+
.default(20)
|
|
88
|
+
.describe("Records per page, 1–100 (default 20). Keep low to stay within your monthly quota."),
|
|
89
|
+
offset: z
|
|
90
|
+
.number()
|
|
91
|
+
.int()
|
|
92
|
+
.min(0)
|
|
93
|
+
.default(0)
|
|
94
|
+
.describe("Records to skip for pagination (default 0)."),
|
|
95
|
+
};
|
|
96
|
+
const ResponseFormatSchema = z
|
|
97
|
+
.nativeEnum(ResponseFormat)
|
|
58
98
|
.default(ResponseFormat.MARKDOWN)
|
|
59
99
|
.describe("Output format: 'markdown' for human-readable, 'json' for machine-readable");
|
|
60
|
-
//
|
|
100
|
+
// ─── Formatters ───────────────────────────────────────────────────────────────
|
|
101
|
+
function starsFor(rating) {
|
|
102
|
+
const r = Math.round(rating);
|
|
103
|
+
return "★".repeat(r) + "☆".repeat(Math.max(0, 5 - r));
|
|
104
|
+
}
|
|
105
|
+
// Strip internal fields that should never appear in user-facing output.
|
|
106
|
+
function sanitizeReview(r) {
|
|
107
|
+
const { review_id: _omit, ...rest } = r;
|
|
108
|
+
return rest;
|
|
109
|
+
}
|
|
110
|
+
function formatReviews(data, endpointLabel, pagination, filtered) {
|
|
111
|
+
const lines = [
|
|
112
|
+
`# Hots&Cots — ${endpointLabel} Reviews`,
|
|
113
|
+
];
|
|
114
|
+
if (filtered) {
|
|
115
|
+
lines.push(`_Filtered to "${filtered.installation}" — found ${data.length} match(es) in the first ${filtered.fetchedTotal} records fetched._`);
|
|
116
|
+
if (filtered.fetchedTotal >= FILTER_FETCH_CAP && data.length === pagination.limit) {
|
|
117
|
+
lines.push(`_⚠️ Results are capped at ${FILTER_FETCH_CAP} fetched records. There may be more reviews not shown._`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
lines.push(`_Showing ${pagination.returned} records (offset ${pagination.offset}, limit ${pagination.limit})_`);
|
|
122
|
+
}
|
|
123
|
+
lines.push("");
|
|
124
|
+
for (const r of data) {
|
|
125
|
+
lines.push(`## ${starsFor(r.rating)} ${r.title}`);
|
|
126
|
+
lines.push(`**Installation**: ${r.installation}`);
|
|
127
|
+
if (r.branch)
|
|
128
|
+
lines.push(`**Branch**: ${r.branch}`);
|
|
129
|
+
lines.push(`**Date**: ${new Date(r.created_at).toLocaleDateString("en-US", { year: "numeric", month: "short", day: "numeric" })}`);
|
|
130
|
+
if (r.tags?.length)
|
|
131
|
+
lines.push(`**Tags**: ${r.tags.join(", ")}`);
|
|
132
|
+
if (r.feedback) {
|
|
133
|
+
lines.push("");
|
|
134
|
+
lines.push(r.feedback);
|
|
135
|
+
}
|
|
136
|
+
lines.push("");
|
|
137
|
+
lines.push("---");
|
|
138
|
+
lines.push("");
|
|
139
|
+
}
|
|
140
|
+
if (!filtered && pagination.returned === pagination.limit) {
|
|
141
|
+
lines.push(`_More results available — use offset=${pagination.offset + pagination.limit} to continue._`);
|
|
142
|
+
}
|
|
143
|
+
return lines.join("\n");
|
|
144
|
+
}
|
|
145
|
+
function formatInstallations(data) {
|
|
146
|
+
const sorted = [...data].sort((a, b) => b.counts.total - a.counts.total);
|
|
147
|
+
const lines = [
|
|
148
|
+
`# Hots&Cots — Military Installations (${data.length} total)`,
|
|
149
|
+
"",
|
|
150
|
+
"| Installation | Barracks | Dining | Other | Total |",
|
|
151
|
+
"|---|---:|---:|---:|---:|",
|
|
152
|
+
];
|
|
153
|
+
for (const inst of sorted) {
|
|
154
|
+
lines.push(`| ${inst.installation} | ${inst.counts.cots} | ${inst.counts.hots} | ${inst.counts.other} | **${inst.counts.total}** |`);
|
|
155
|
+
}
|
|
156
|
+
return lines.join("\n");
|
|
157
|
+
}
|
|
158
|
+
// ─── Shared review fetcher ────────────────────────────────────────────────────
|
|
159
|
+
async function fetchReviews(endpoint, params) {
|
|
160
|
+
if (params.installation) {
|
|
161
|
+
// No server-side installation filter exists — we must fetch and filter locally.
|
|
162
|
+
// Cap how many records we pull to protect the user's monthly quota.
|
|
163
|
+
const result = await apiGet("/reviews", {
|
|
164
|
+
endpoint,
|
|
165
|
+
limit: FILTER_FETCH_CAP,
|
|
166
|
+
offset: 0,
|
|
167
|
+
});
|
|
168
|
+
const q = params.installation.toLowerCase();
|
|
169
|
+
const matched = result.data.filter((r) => r.installation.toLowerCase().includes(q));
|
|
170
|
+
const page = matched.slice(params.offset, params.offset + params.limit);
|
|
171
|
+
return {
|
|
172
|
+
data: page,
|
|
173
|
+
pagination: { limit: params.limit, offset: params.offset, returned: page.length },
|
|
174
|
+
filtered: { installation: params.installation, fetchedTotal: result.data.length },
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
// No filter — use API pagination directly.
|
|
178
|
+
const result = await apiGet("/reviews", {
|
|
179
|
+
endpoint,
|
|
180
|
+
limit: params.limit,
|
|
181
|
+
offset: params.offset,
|
|
182
|
+
});
|
|
183
|
+
return {
|
|
184
|
+
data: result.data,
|
|
185
|
+
pagination: result.pagination,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
// ─── MCP Server ───────────────────────────────────────────────────────────────
|
|
61
189
|
const server = new McpServer({
|
|
62
|
-
name: "
|
|
190
|
+
name: "Hots&Cots",
|
|
63
191
|
version: "1.0.0",
|
|
64
192
|
});
|
|
65
|
-
// Tool:
|
|
66
|
-
server.registerTool("
|
|
67
|
-
title: "
|
|
68
|
-
description: `
|
|
193
|
+
// ── Tool: health check ────────────────────────────────────────────────────────
|
|
194
|
+
server.registerTool("hotscots_health", {
|
|
195
|
+
title: "API Health Check",
|
|
196
|
+
description: `Verify that the Hots&Cots API key is valid and the service is reachable.
|
|
69
197
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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.
|
|
80
|
-
|
|
81
|
-
Examples:
|
|
82
|
-
- "Find Army bases in North Carolina" → query="", branch="Army", state="NC"
|
|
83
|
-
- "Search for Camp Pendleton" → query="Camp Pendleton"`,
|
|
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
|
-
}),
|
|
198
|
+
Returns status and timestamp on success.
|
|
199
|
+
Use this to confirm connectivity before running other tools.`,
|
|
200
|
+
inputSchema: z.object({}),
|
|
91
201
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
92
|
-
}, async (
|
|
202
|
+
}, async () => {
|
|
93
203
|
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 };
|
|
204
|
+
const result = await apiGet("/health");
|
|
205
|
+
return {
|
|
206
|
+
content: [{ type: "text", text: `✅ API is healthy\n- Status: ${result.status}\n- Time: ${result.timestamp}` }],
|
|
207
|
+
};
|
|
124
208
|
}
|
|
125
209
|
catch (err) {
|
|
126
210
|
return { content: [{ type: "text", text: handleError(err) }] };
|
|
127
211
|
}
|
|
128
212
|
});
|
|
129
|
-
// Tool:
|
|
130
|
-
server.registerTool("
|
|
131
|
-
title: "
|
|
132
|
-
description: `
|
|
213
|
+
// ── Tool: list installations ──────────────────────────────────────────────────
|
|
214
|
+
server.registerTool("hotscots_list_installations", {
|
|
215
|
+
title: "List Military Installations",
|
|
216
|
+
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.
|
|
133
217
|
|
|
134
|
-
|
|
135
|
-
-
|
|
136
|
-
-
|
|
218
|
+
Returns per installation:
|
|
219
|
+
- installation: full name including state, e.g. "Fort Liberty, North Carolina"
|
|
220
|
+
- counts.cots: barracks review count
|
|
221
|
+
- counts.hots: dining (DFAC) review count
|
|
222
|
+
- counts.other: other facility review count
|
|
223
|
+
- counts.total: combined total
|
|
224
|
+
|
|
225
|
+
Use this first to get exact installation names before fetching reviews.
|
|
137
226
|
|
|
138
|
-
|
|
139
|
-
|
|
227
|
+
Args:
|
|
228
|
+
- filter (string, optional): Case-insensitive substring to narrow results (e.g. "Texas", "Fort", "Camp Lejeune")
|
|
229
|
+
- response_format: 'markdown' (default) or 'json'`,
|
|
140
230
|
inputSchema: z.object({
|
|
141
|
-
|
|
231
|
+
filter: z
|
|
232
|
+
.string()
|
|
233
|
+
.optional()
|
|
234
|
+
.describe("Optional substring filter on installation name (case-insensitive)"),
|
|
142
235
|
response_format: ResponseFormatSchema,
|
|
143
236
|
}),
|
|
144
237
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
145
238
|
}, async (params) => {
|
|
146
239
|
try {
|
|
147
|
-
const
|
|
148
|
-
let
|
|
149
|
-
if (params.
|
|
150
|
-
|
|
240
|
+
const result = await apiGet("/installations");
|
|
241
|
+
let data = result.data;
|
|
242
|
+
if (params.filter) {
|
|
243
|
+
const q = params.filter.toLowerCase();
|
|
244
|
+
data = data.filter((i) => i.installation.toLowerCase().includes(q));
|
|
151
245
|
}
|
|
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");
|
|
246
|
+
if (!data.length) {
|
|
247
|
+
return { content: [{ type: "text", text: `No installations found matching "${params.filter}".` }] };
|
|
159
248
|
}
|
|
160
|
-
|
|
249
|
+
const text = params.response_format === ResponseFormat.JSON
|
|
250
|
+
? JSON.stringify({ count: data.length, data }, null, 2)
|
|
251
|
+
: formatInstallations(data);
|
|
252
|
+
return {
|
|
253
|
+
content: [{ type: "text", text: truncate(text) }],
|
|
254
|
+
structuredContent: { count: data.length, data },
|
|
255
|
+
};
|
|
161
256
|
}
|
|
162
257
|
catch (err) {
|
|
163
258
|
return { content: [{ type: "text", text: handleError(err) }] };
|
|
164
259
|
}
|
|
165
260
|
});
|
|
166
|
-
// Tool:
|
|
261
|
+
// ── Tool: barracks (cots) reviews ─────────────────────────────────────────────
|
|
167
262
|
server.registerTool("hotscots_get_barracks_reviews", {
|
|
168
263
|
title: "Get Barracks Reviews",
|
|
169
|
-
description: `Fetch barracks (
|
|
264
|
+
description: `Fetch barracks / housing (Cots) reviews from the Hots&Cots database. Costs 1 API request.
|
|
170
265
|
|
|
171
|
-
|
|
172
|
-
|
|
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'
|
|
266
|
+
⚠️ Keep limit small (default 20). Users have a monthly request quota — avoid large or repeated fetches.
|
|
267
|
+
⚠️ 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.
|
|
178
268
|
|
|
179
|
-
|
|
180
|
-
Paginated list of barracks reviews with ratings, descriptions, and dates.
|
|
269
|
+
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.
|
|
181
270
|
|
|
182
|
-
|
|
183
|
-
-
|
|
184
|
-
-
|
|
271
|
+
Args:
|
|
272
|
+
- installation (string, optional): Filter by installation name (partial match). Run hotscots_list_installations first to get exact names.
|
|
273
|
+
- limit (integer): Records per page, 1–100 (default 20)
|
|
274
|
+
- offset (integer): Records to skip (default 0). Only reliable without an installation filter.
|
|
275
|
+
- response_format: 'markdown' (default) or 'json'`,
|
|
185
276
|
inputSchema: z.object({
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
277
|
+
installation: z
|
|
278
|
+
.string()
|
|
279
|
+
.max(100)
|
|
280
|
+
.optional()
|
|
281
|
+
.describe("Filter by installation name (partial, case-insensitive)"),
|
|
282
|
+
...PaginationSchema,
|
|
190
283
|
response_format: ResponseFormatSchema,
|
|
191
284
|
}),
|
|
192
285
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
193
286
|
}, async (params) => {
|
|
194
287
|
try {
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
limit: params.limit,
|
|
200
|
-
offset: params.offset,
|
|
201
|
-
});
|
|
202
|
-
if (!result.data.length) {
|
|
203
|
-
return { content: [{ type: "text", text: "No barracks reviews found for this installation." }] };
|
|
288
|
+
const { data, pagination, filtered } = await fetchReviews(EndpointType.COTS, params);
|
|
289
|
+
if (!data.length) {
|
|
290
|
+
const where = params.installation ? ` for "${params.installation}"` : "";
|
|
291
|
+
return { content: [{ type: "text", text: `No barracks reviews found${where}.` }] };
|
|
204
292
|
}
|
|
205
293
|
const text = params.response_format === ResponseFormat.JSON
|
|
206
|
-
? JSON.stringify(
|
|
207
|
-
: formatReviews(
|
|
208
|
-
return {
|
|
294
|
+
? JSON.stringify({ endpoint: "cots", data: data.map(sanitizeReview), pagination }, null, 2)
|
|
295
|
+
: formatReviews(data, "Barracks (Cots)", pagination, filtered);
|
|
296
|
+
return {
|
|
297
|
+
content: [{ type: "text", text: truncate(text) }],
|
|
298
|
+
structuredContent: { endpoint: "cots", data: data.map(sanitizeReview), pagination },
|
|
299
|
+
};
|
|
209
300
|
}
|
|
210
301
|
catch (err) {
|
|
211
302
|
return { content: [{ type: "text", text: handleError(err) }] };
|
|
212
303
|
}
|
|
213
304
|
});
|
|
214
|
-
// Tool:
|
|
305
|
+
// ── Tool: dining / DFAC (hots) reviews ───────────────────────────────────────
|
|
215
306
|
server.registerTool("hotscots_get_dfac_reviews", {
|
|
216
|
-
title: "Get DFAC Reviews",
|
|
217
|
-
description: `Fetch DFAC (
|
|
307
|
+
title: "Get DFAC / Dining Reviews",
|
|
308
|
+
description: `Fetch dining facility / DFAC (Hots) reviews from the Hots&Cots database. Costs 1 API request.
|
|
218
309
|
|
|
219
|
-
|
|
220
|
-
|
|
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'
|
|
310
|
+
⚠️ Keep limit small (default 20). Users have a monthly request quota — avoid large or repeated fetches.
|
|
311
|
+
⚠️ 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.
|
|
226
312
|
|
|
227
|
-
|
|
228
|
-
Paginated list of DFAC reviews with ratings, descriptions, and dates.
|
|
313
|
+
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.
|
|
229
314
|
|
|
230
|
-
|
|
231
|
-
-
|
|
232
|
-
-
|
|
315
|
+
Args:
|
|
316
|
+
- installation (string, optional): Filter by installation name (partial match). Run hotscots_list_installations first to get exact names.
|
|
317
|
+
- limit (integer): Records per page, 1–100 (default 20)
|
|
318
|
+
- offset (integer): Records to skip (default 0). Only reliable without an installation filter.
|
|
319
|
+
- response_format: 'markdown' (default) or 'json'`,
|
|
233
320
|
inputSchema: z.object({
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
321
|
+
installation: z
|
|
322
|
+
.string()
|
|
323
|
+
.max(100)
|
|
324
|
+
.optional()
|
|
325
|
+
.describe("Filter by installation name (partial, case-insensitive)"),
|
|
326
|
+
...PaginationSchema,
|
|
238
327
|
response_format: ResponseFormatSchema,
|
|
239
328
|
}),
|
|
240
329
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
241
330
|
}, async (params) => {
|
|
242
331
|
try {
|
|
243
|
-
const
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
limit: params.limit,
|
|
248
|
-
offset: params.offset,
|
|
249
|
-
});
|
|
250
|
-
if (!result.data.length) {
|
|
251
|
-
return { content: [{ type: "text", text: "No DFAC reviews found for this installation." }] };
|
|
332
|
+
const { data, pagination, filtered } = await fetchReviews(EndpointType.HOTS, params);
|
|
333
|
+
if (!data.length) {
|
|
334
|
+
const where = params.installation ? ` for "${params.installation}"` : "";
|
|
335
|
+
return { content: [{ type: "text", text: `No dining reviews found${where}.` }] };
|
|
252
336
|
}
|
|
253
337
|
const text = params.response_format === ResponseFormat.JSON
|
|
254
|
-
? JSON.stringify(
|
|
255
|
-
: formatReviews(
|
|
256
|
-
return {
|
|
338
|
+
? JSON.stringify({ endpoint: "hots", data: data.map(sanitizeReview), pagination }, null, 2)
|
|
339
|
+
: formatReviews(data, "Dining / DFAC (Hots)", pagination, filtered);
|
|
340
|
+
return {
|
|
341
|
+
content: [{ type: "text", text: truncate(text) }],
|
|
342
|
+
structuredContent: { endpoint: "hots", data: data.map(sanitizeReview), pagination },
|
|
343
|
+
};
|
|
257
344
|
}
|
|
258
345
|
catch (err) {
|
|
259
346
|
return { content: [{ type: "text", text: handleError(err) }] };
|
|
260
347
|
}
|
|
261
348
|
});
|
|
262
|
-
// Tool:
|
|
263
|
-
server.registerTool("
|
|
264
|
-
title: "
|
|
265
|
-
description: `
|
|
349
|
+
// ── Tool: other facilities ────────────────────────────────────────────────────
|
|
350
|
+
server.registerTool("hotscots_get_other_reviews", {
|
|
351
|
+
title: "Get Other Facility Reviews",
|
|
352
|
+
description: `Fetch reviews of other on-base facilities from the Hots&Cots database. Costs 1 API request.
|
|
266
353
|
|
|
267
|
-
|
|
268
|
-
|
|
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'
|
|
354
|
+
⚠️ Keep limit small (default 20). Users have a monthly request quota — avoid large or repeated fetches.
|
|
355
|
+
⚠️ If installation is set, up to ${FILTER_FETCH_CAP} records are fetched and filtered locally.
|
|
275
356
|
|
|
276
|
-
|
|
277
|
-
Paginated list of matching reviews with installation context.
|
|
357
|
+
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.
|
|
278
358
|
|
|
279
|
-
|
|
280
|
-
-
|
|
281
|
-
-
|
|
359
|
+
Args:
|
|
360
|
+
- installation (string, optional): Filter by installation name (partial match)
|
|
361
|
+
- limit (integer): Records per page, 1–100 (default 20)
|
|
362
|
+
- offset (integer): Records to skip (default 0). Only reliable without an installation filter.
|
|
363
|
+
- response_format: 'markdown' (default) or 'json'`,
|
|
282
364
|
inputSchema: z.object({
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
365
|
+
installation: z
|
|
366
|
+
.string()
|
|
367
|
+
.max(100)
|
|
368
|
+
.optional()
|
|
369
|
+
.describe("Filter by installation name (partial, case-insensitive)"),
|
|
370
|
+
...PaginationSchema,
|
|
288
371
|
response_format: ResponseFormatSchema,
|
|
289
372
|
}),
|
|
290
373
|
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
291
374
|
}, async (params) => {
|
|
292
375
|
try {
|
|
293
|
-
const
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
min_rating: params.min_rating,
|
|
298
|
-
limit: params.limit,
|
|
299
|
-
offset: params.offset,
|
|
300
|
-
});
|
|
301
|
-
if (!result.data.length) {
|
|
302
|
-
return { content: [{ type: "text", text: `No reviews found for "${params.query}".` }] };
|
|
376
|
+
const { data, pagination, filtered } = await fetchReviews(EndpointType.OTHER, params);
|
|
377
|
+
if (!data.length) {
|
|
378
|
+
const where = params.installation ? ` for "${params.installation}"` : "";
|
|
379
|
+
return { content: [{ type: "text", text: `No other facility reviews found${where}.` }] };
|
|
303
380
|
}
|
|
304
381
|
const text = params.response_format === ResponseFormat.JSON
|
|
305
|
-
? JSON.stringify(
|
|
306
|
-
: formatReviews(
|
|
307
|
-
return {
|
|
382
|
+
? JSON.stringify({ endpoint: "other", data: data.map(sanitizeReview), pagination }, null, 2)
|
|
383
|
+
: formatReviews(data, "Other Facilities", pagination, filtered);
|
|
384
|
+
return {
|
|
385
|
+
content: [{ type: "text", text: truncate(text) }],
|
|
386
|
+
structuredContent: { endpoint: "other", data: data.map(sanitizeReview), pagination },
|
|
387
|
+
};
|
|
308
388
|
}
|
|
309
389
|
catch (err) {
|
|
310
390
|
return { content: [{ type: "text", text: handleError(err) }] };
|
|
311
391
|
}
|
|
312
392
|
});
|
|
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 ---
|
|
393
|
+
// ─── Transport ────────────────────────────────────────────────────────────────
|
|
337
394
|
async function runStdio() {
|
|
338
395
|
const transport = new StdioServerTransport();
|
|
339
396
|
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.2",
|
|
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
|
+
}
|