@miraigent/free-ai-ops-mcp 0.1.18 → 0.1.20
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 +16 -0
- package/README.md +13 -8
- package/examples/ai-safe-crm-note/README.md +33 -0
- package/examples/ai-safe-crm-note/run-example.mjs +28 -0
- package/examples/ai-safe-crm-note/sample-request.jsonl +1 -0
- package/mcp/free-ai-ops-server.mjs +3 -3
- package/package.json +2 -1
- package/scripts/smoke-test.mjs +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.1.20] - 2026-06-20
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Added a copy-ready ai_safe_crm_note example so developers can test separating
|
|
8
|
+
customer facts, AI suggestions, human decisions, and next actions before
|
|
9
|
+
connecting private CRM notes.
|
|
10
|
+
|
|
11
|
+
## [0.1.19] - 2026-06-19
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- Updated README, help output, and MCP client config examples to the verified
|
|
16
|
+
npm alias command `npx -y free-ai-ops-mcp@npm:@miraigent/free-ai-ops-mcp`,
|
|
17
|
+
which resolves the scoped package binary consistently in public tests.
|
|
18
|
+
|
|
3
19
|
## [0.1.18] - 2026-06-19
|
|
4
20
|
|
|
5
21
|
### Fixed
|
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ reaches customers or shared systems.
|
|
|
11
11
|
|
|
12
12
|
Run the public MCP server:
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
npx -y free-ai-ops-mcp@npm:@miraigent/free-ai-ops-mcp
|
|
15
15
|
|
|
16
16
|
Then send a JSON-RPC tool call such as the copy-ready example in
|
|
17
17
|
examples/human-review-gate/.
|
|
@@ -24,7 +24,7 @@ one tool call, see examples/mcp-json-rpc-session/.
|
|
|
24
24
|
Use this when you want to confirm the npm package works before editing a desktop
|
|
25
25
|
MCP client config:
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
npx -y free-ai-ops-mcp@npm:@miraigent/free-ai-ops-mcp < examples/mcp-json-rpc-session/sample-session.jsonl
|
|
28
28
|
|
|
29
29
|
The response should include:
|
|
30
30
|
|
|
@@ -39,7 +39,7 @@ the command, synthetic input shape, and returned status only.
|
|
|
39
39
|
|
|
40
40
|
If you are checking the package from npm search, run the public help first:
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
npx -y free-ai-ops-mcp@npm:@miraigent/free-ai-ops-mcp --help
|
|
43
43
|
|
|
44
44
|
The help output lists the available MCP tools, the one-command smoke test, and
|
|
45
45
|
the public-safe boundary before you send any JSON-RPC input.
|
|
@@ -66,7 +66,7 @@ Add to your `claude_desktop_config.json` or Cursor MCP settings:
|
|
|
66
66
|
"mcpServers": {
|
|
67
67
|
"miraigent-free-ai-ops-mcp": {
|
|
68
68
|
"command": "npx",
|
|
69
|
-
"args": ["-y", "@miraigent/free-ai-ops-mcp"]
|
|
69
|
+
"args": ["-y", "free-ai-ops-mcp@npm:@miraigent/free-ai-ops-mcp"]
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
}
|
|
@@ -107,7 +107,7 @@ public-safe result shape that shows where the review gate helped or felt unclear
|
|
|
107
107
|
|
|
108
108
|
Good public-safe issue body:
|
|
109
109
|
|
|
110
|
-
Command: npx @miraigent/free-ai-ops-mcp
|
|
110
|
+
Command: npx -y free-ai-ops-mcp@npm:@miraigent/free-ai-ops-mcp
|
|
111
111
|
Tool: human_review_gate
|
|
112
112
|
Input shape:
|
|
113
113
|
draftType: customer support reply
|
|
@@ -144,6 +144,7 @@ Copy-ready examples:
|
|
|
144
144
|
|
|
145
145
|
- Human review gate: `npm run example:human-review-gate`
|
|
146
146
|
- FAQ candidate review: `npm run example:faq-candidate-review`
|
|
147
|
+
- AI-safe CRM note: `npm run example:ai-safe-crm-note`
|
|
147
148
|
- Prompt risk review: `npm run example:prompt-risk-review`
|
|
148
149
|
|
|
149
150
|
All examples use synthetic data. Keep private customer records, secrets,
|
|
@@ -152,7 +153,7 @@ internal policy text, and paid product files out of public issues and screenshot
|
|
|
152
153
|
## What To Do Next
|
|
153
154
|
|
|
154
155
|
- Try one tool with synthetic data.
|
|
155
|
-
- If you ran `
|
|
156
|
+
- If you ran `npx -y free-ai-ops-mcp@npm:@miraigent/free-ai-ops-mcp`, paste the public-safe result
|
|
156
157
|
shape into the Tried It feedback issue.
|
|
157
158
|
- Share what happened in the Tried It feedback issue if setup, JSON-RPC input,
|
|
158
159
|
or the returned gate decision was unclear.
|
|
@@ -272,7 +273,7 @@ developer-focused distribution route.
|
|
|
272
273
|
|
|
273
274
|
Run from npm:
|
|
274
275
|
|
|
275
|
-
npx @miraigent/free-ai-ops-mcp
|
|
276
|
+
npx -y free-ai-ops-mcp@npm:@miraigent/free-ai-ops-mcp
|
|
276
277
|
|
|
277
278
|
Run checks:
|
|
278
279
|
|
|
@@ -295,13 +296,17 @@ Run the FAQ candidate review example:
|
|
|
295
296
|
|
|
296
297
|
npm run example:faq-candidate-review
|
|
297
298
|
|
|
299
|
+
Run the AI-safe CRM note example:
|
|
300
|
+
|
|
301
|
+
npm run example:ai-safe-crm-note
|
|
302
|
+
|
|
298
303
|
## npm Package
|
|
299
304
|
|
|
300
305
|
Package name: @miraigent/free-ai-ops-mcp
|
|
301
306
|
|
|
302
307
|
Command:
|
|
303
308
|
|
|
304
|
-
npx @miraigent/free-ai-ops-mcp
|
|
309
|
+
npx -y free-ai-ops-mcp@npm:@miraigent/free-ai-ops-mcp
|
|
305
310
|
|
|
306
311
|
## Public Boundary
|
|
307
312
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# AI-Safe CRM Note Example
|
|
2
|
+
|
|
3
|
+
This example shows how to call the public ai_safe_crm_note MCP tool before a
|
|
4
|
+
support, sales, or onboarding note is copied into a CRM.
|
|
5
|
+
|
|
6
|
+
Use it when a note mixes customer facts, AI suggestions, human decisions, and
|
|
7
|
+
next actions in one paragraph.
|
|
8
|
+
|
|
9
|
+
## Run
|
|
10
|
+
|
|
11
|
+
From the repository root:
|
|
12
|
+
|
|
13
|
+
npm run example:ai-safe-crm-note
|
|
14
|
+
|
|
15
|
+
The example sends sample-request.jsonl to the MCP server and prints the
|
|
16
|
+
ai_safe_crm_note result.
|
|
17
|
+
|
|
18
|
+
## What To Look For
|
|
19
|
+
|
|
20
|
+
The sample uses a public-safe setup-timing note, so the tool should return:
|
|
21
|
+
|
|
22
|
+
- crmNote.customerFacts: the factual summary only
|
|
23
|
+
- crmNote.aiSuggestion: a separate AI suggestion placeholder
|
|
24
|
+
- crmNote.humanDecision: a separate human decision placeholder
|
|
25
|
+
- crmNote.nextAction: the next support or sales action
|
|
26
|
+
|
|
27
|
+
## Safe Use
|
|
28
|
+
|
|
29
|
+
Use synthetic examples only. Do not paste private customer records, names,
|
|
30
|
+
emails, phone numbers, account IDs, contracts, payment details, internal policy
|
|
31
|
+
text, or CRM exports into public issues, examples, or screenshots.
|
|
32
|
+
|
|
33
|
+
This is an operations note helper. It does not write to a CRM or call an AI API.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
|
|
4
|
+
const child = spawn(process.execPath, ['mcp/free-ai-ops-server.mjs'], {
|
|
5
|
+
stdio: ['pipe', 'pipe', 'inherit']
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
const request = fs.readFileSync('examples/ai-safe-crm-note/sample-request.jsonl', 'utf8');
|
|
9
|
+
let stdout = '';
|
|
10
|
+
|
|
11
|
+
child.stdout.on('data', (chunk) => {
|
|
12
|
+
stdout += chunk;
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
child.stdin.write(request.trim() + '\n');
|
|
16
|
+
child.stdin.end();
|
|
17
|
+
|
|
18
|
+
await new Promise((resolve, reject) => {
|
|
19
|
+
child.on('error', reject);
|
|
20
|
+
child.on('close', (code) => {
|
|
21
|
+
if (code !== 0) reject(new Error('server exited with ' + code));
|
|
22
|
+
else resolve();
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const response = JSON.parse(stdout.trim());
|
|
27
|
+
const payload = JSON.parse(response.result.content[0].text);
|
|
28
|
+
console.log(JSON.stringify(payload, null, 2));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ai_safe_crm_note","arguments":{"rawNoteSummary":"Customer asked whether setup can start this week and wants the checklist before the kickoff call.","channel":"contact form","containsPersonalData":false,"nextAction":"send setup checklist and confirm kickoff date","owner":"sales operations"}}}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const serverInfo = { name: 'miraigent-free-ai-ops-mcp', version: '0.1.
|
|
3
|
+
const serverInfo = { name: 'miraigent-free-ai-ops-mcp', version: '0.1.20' };
|
|
4
4
|
|
|
5
5
|
const tools = [
|
|
6
6
|
{
|
|
@@ -69,10 +69,10 @@ function printHelp() {
|
|
|
69
69
|
process.stdout.write(`Miraigent Free AI Ops MCP ${serverInfo.version}
|
|
70
70
|
|
|
71
71
|
Run the public MCP server:
|
|
72
|
-
|
|
72
|
+
npx -y free-ai-ops-mcp@npm:@miraigent/free-ai-ops-mcp
|
|
73
73
|
|
|
74
74
|
Run a copy-ready public smoke test:
|
|
75
|
-
|
|
75
|
+
npx -y free-ai-ops-mcp@npm:@miraigent/free-ai-ops-mcp < examples/mcp-json-rpc-session/sample-session.jsonl
|
|
76
76
|
|
|
77
77
|
Available tools:
|
|
78
78
|
human_review_gate Stop/review/approve AI drafts before sending
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@miraigent/free-ai-ops-mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.20",
|
|
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",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"example:human-review-gate": "node examples/human-review-gate/run-example.mjs",
|
|
27
27
|
"example:prompt-risk-review": "node examples/prompt-risk-review/run-example.mjs",
|
|
28
28
|
"example:faq-candidate-review": "node examples/faq-candidate-review/run-example.mjs",
|
|
29
|
+
"example:ai-safe-crm-note": "node examples/ai-safe-crm-note/run-example.mjs",
|
|
29
30
|
"mcp": "node mcp/free-ai-ops-server.mjs"
|
|
30
31
|
},
|
|
31
32
|
"keywords": [
|
package/scripts/smoke-test.mjs
CHANGED
|
@@ -21,7 +21,7 @@ await new Promise((resolve, reject) => {
|
|
|
21
21
|
});
|
|
22
22
|
});
|
|
23
23
|
|
|
24
|
-
assert.match(helpStdout, /
|
|
24
|
+
assert.match(helpStdout, /npx -y free-ai-ops-mcp@npm:@miraigent\/free-ai-ops-mcp/);
|
|
25
25
|
assert.match(helpStdout, /human_review_gate/);
|
|
26
26
|
assert.match(helpStdout, /Do not paste secrets/);
|
|
27
27
|
|