@miraigent/free-ai-ops-mcp 0.1.15 → 0.1.16

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/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.1.16] - 2026-06-19
4
+
5
+ ### Added
6
+
7
+ - Added a public `--help` path for npm/npx users so package search visitors can
8
+ see the available MCP tools, one-command smoke test, safety boundary, and
9
+ feedback route before sending JSON-RPC input.
10
+
3
11
  ## [0.1.15] - 2026-06-18
4
12
 
5
13
  ### Fixed
package/README.md CHANGED
@@ -40,6 +40,13 @@ the command, synthetic input shape, and returned status only.
40
40
  The package also exposes `free-ai-ops-mcp` and `miraigent-free-ai-ops-mcp` as
41
41
  bin aliases for npm exec environments that require an explicit command name.
42
42
 
43
+ If you are checking the package from npm search, run the public help first:
44
+
45
+ npx @miraigent/free-ai-ops-mcp --help
46
+
47
+ The help output lists the available MCP tools, the one-command smoke test, and
48
+ the public-safe boundary before you send any JSON-RPC input.
49
+
43
50
  If the result is unclear, open a Tried It feedback issue with synthetic input
44
51
  only. A useful issue can be as small as:
45
52
 
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const serverInfo = { name: 'miraigent-free-ai-ops-mcp', version: '0.1.15' };
3
+ const serverInfo = { name: 'miraigent-free-ai-ops-mcp', version: '0.1.16' };
4
4
 
5
5
  const tools = [
6
6
  {
@@ -65,6 +65,30 @@ function textContent(value) {
65
65
  return [{ type: 'text', text: JSON.stringify(value, null, 2) }];
66
66
  }
67
67
 
68
+ function printHelp() {
69
+ process.stdout.write(`Miraigent Free AI Ops MCP ${serverInfo.version}
70
+
71
+ Run the public MCP server:
72
+ npx @miraigent/free-ai-ops-mcp
73
+
74
+ Run a copy-ready public smoke test:
75
+ npx -y @miraigent/free-ai-ops-mcp < examples/mcp-json-rpc-session/sample-session.jsonl
76
+
77
+ Available tools:
78
+ human_review_gate Stop/review/approve AI drafts before sending
79
+ faq_candidate_review Review repeated questions before FAQ publication
80
+ ai_safe_crm_note Separate facts, AI suggestions, human decisions, and next actions
81
+ prompt_risk_review Check customer-facing or sensitive prompts before AI use
82
+
83
+ Public-safe boundary:
84
+ Use synthetic examples only. Do not paste secrets, customer records,
85
+ internal policy text, paid product files, or private memory behavior.
86
+
87
+ Feedback:
88
+ https://github.com/Miraigent/miraigent-free-ai-ops-mcp/issues/new/choose
89
+ `);
90
+ }
91
+
68
92
  function normalizeRisk(value) {
69
93
  return String(value || 'medium').toLowerCase();
70
94
  }
@@ -197,6 +221,11 @@ function handle(request) {
197
221
  throw new Error('Unsupported method: ' + request.method);
198
222
  }
199
223
 
224
+ if (process.argv.includes('--help') || process.argv.includes('-h')) {
225
+ printHelp();
226
+ process.exit(0);
227
+ }
228
+
200
229
  let buffer = '';
201
230
  process.stdin.setEncoding('utf8');
202
231
  process.stdin.on('data', (chunk) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@miraigent/free-ai-ops-mcp",
3
- "version": "0.1.15",
3
+ "version": "0.1.16",
4
4
  "description": "Free MCP server for developers adding human review gates, prompt risk checks, FAQ review, and CRM note safety to AI tools.",
5
5
  "homepage": "https://github.com/Miraigent/miraigent-free-ai-ops-mcp",
6
6
  "type": "module",
@@ -4,6 +4,27 @@ import { readFile } from 'node:fs/promises';
4
4
 
5
5
  const packageJson = JSON.parse(await readFile(new URL('../package.json', import.meta.url), 'utf8'));
6
6
 
7
+ const helpChild = spawn(process.execPath, ['mcp/free-ai-ops-server.mjs', '--help'], {
8
+ stdio: ['ignore', 'pipe', 'inherit']
9
+ });
10
+
11
+ let helpStdout = '';
12
+ helpChild.stdout.on('data', (chunk) => {
13
+ helpStdout += chunk;
14
+ });
15
+
16
+ await new Promise((resolve, reject) => {
17
+ helpChild.on('error', reject);
18
+ helpChild.on('close', (code) => {
19
+ if (code !== 0) reject(new Error('help exited with ' + code));
20
+ else resolve();
21
+ });
22
+ });
23
+
24
+ assert.match(helpStdout, /npx @miraigent\/free-ai-ops-mcp/);
25
+ assert.match(helpStdout, /human_review_gate/);
26
+ assert.match(helpStdout, /Do not paste secrets/);
27
+
7
28
  const child = spawn(process.execPath, ['mcp/free-ai-ops-server.mjs'], {
8
29
  stdio: ['pipe', 'pipe', 'inherit']
9
30
  });