@miraigent/free-ai-ops-mcp 0.1.24 → 0.1.26
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,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.1.26] - 2026-06-29
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- Clarified the bug report template so npm, Claude Desktop, Cursor, and custom
|
|
8
|
+
MCP users can include version, runtime, command shape, and synthetic JSON-RPC
|
|
9
|
+
reproduction details without sharing private data.
|
|
10
|
+
|
|
11
|
+
## [0.1.25] - 2026-06-28
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- Added a copy-ready prompt_risk_review JSON-RPC session example and smoke-test
|
|
16
|
+
coverage so developers can verify the customer-facing prompt stop path before
|
|
17
|
+
connecting private support or CRM workflows.
|
|
18
|
+
|
|
3
19
|
## [0.1.24] - 2026-06-25
|
|
4
20
|
|
|
5
21
|
### Changed
|
package/README.md
CHANGED
|
@@ -19,6 +19,10 @@ examples/human-review-gate/.
|
|
|
19
19
|
For a complete public-safe MCP session that covers initialize, tools/list, and
|
|
20
20
|
one tool call, see examples/mcp-json-rpc-session/.
|
|
21
21
|
|
|
22
|
+
If your first concern is whether a customer-facing prompt should be stopped
|
|
23
|
+
before AI use, use examples/prompt-risk-json-rpc-session/ for a copy-ready
|
|
24
|
+
prompt_risk_review session.
|
|
25
|
+
|
|
22
26
|
That JSON-RPC session is also covered by `npm test`, so the README proof path
|
|
23
27
|
and packaged example stay aligned when the MCP response shape changes.
|
|
24
28
|
|
|
@@ -205,6 +209,8 @@ Copy-ready examples:
|
|
|
205
209
|
- FAQ candidate review: `npm run example:faq-candidate-review`
|
|
206
210
|
- AI-safe CRM note: `npm run example:ai-safe-crm-note`
|
|
207
211
|
- Prompt risk review: `npm run example:prompt-risk-review`
|
|
212
|
+
- Prompt risk JSON-RPC session:
|
|
213
|
+
`npm run mcp < examples/prompt-risk-json-rpc-session/sample-session.jsonl`
|
|
208
214
|
|
|
209
215
|
All examples use synthetic data. Keep private customer records, secrets,
|
|
210
216
|
internal policy text, and paid product files out of public issues and screenshots.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Prompt Risk JSON-RPC Session Example
|
|
2
|
+
|
|
3
|
+
This example gives developers a copy-ready `prompt_risk_review` MCP session for
|
|
4
|
+
the public @miraigent/free-ai-ops-mcp package.
|
|
5
|
+
|
|
6
|
+
Use it when you want to check whether a customer-facing prompt should stop
|
|
7
|
+
before AI use. The sample is synthetic and is covered by `npm test`, so the
|
|
8
|
+
public example stays aligned with the packaged server response fields.
|
|
9
|
+
|
|
10
|
+
## Run
|
|
11
|
+
|
|
12
|
+
From the repository root:
|
|
13
|
+
|
|
14
|
+
npm run mcp < examples/prompt-risk-json-rpc-session/sample-session.jsonl
|
|
15
|
+
|
|
16
|
+
You should receive three JSON-RPC response lines. The final response should
|
|
17
|
+
include a `prompt_risk_review` result with:
|
|
18
|
+
|
|
19
|
+
- recommendation: stop_before_ai_use
|
|
20
|
+
- riskFlags: customer_facing and sensitive_data_possible
|
|
21
|
+
- boundary: this tool is a prompt risk helper and does not call an AI API
|
|
22
|
+
|
|
23
|
+
## Public-Safe Feedback
|
|
24
|
+
|
|
25
|
+
If the output is unclear, open a Tried It feedback issue and include only:
|
|
26
|
+
|
|
27
|
+
- which command you ran
|
|
28
|
+
- the public-safe prompt shape
|
|
29
|
+
- the returned recommendation or risk flag that was unclear
|
|
30
|
+
|
|
31
|
+
Do not include secrets, credentials, private customer records, internal policy
|
|
32
|
+
text, paid product files, or private memory behavior.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}
|
|
2
|
+
{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}
|
|
3
|
+
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"prompt_risk_review","arguments":{"operation":"support prompt review","promptSummary":"Draft a customer reply from an inquiry summary and order note.","dataTypes":["customer email","order note"],"customerFacing":true,"riskLevel":"medium"}}}
|
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.26",
|
|
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",
|
package/scripts/smoke-test.mjs
CHANGED
|
@@ -139,3 +139,17 @@ assert.equal(sampleResponses[1].result.tools.length, 4);
|
|
|
139
139
|
assert.match(sampleResponses[2].result.content[0].text, /gateStatus/);
|
|
140
140
|
assert.match(sampleResponses[2].result.content[0].text, /reviewOwner/);
|
|
141
141
|
assert.match(sampleResponses[2].result.content[0].text, /boundary/);
|
|
142
|
+
|
|
143
|
+
const promptRiskSession = await readFile(
|
|
144
|
+
new URL('../examples/prompt-risk-json-rpc-session/sample-session.jsonl', import.meta.url),
|
|
145
|
+
'utf8'
|
|
146
|
+
);
|
|
147
|
+
const promptRiskResponses = await runServerWithRequests(promptRiskSession.trim().split('\n'));
|
|
148
|
+
assert.equal(promptRiskResponses.length, 3);
|
|
149
|
+
assert.equal(promptRiskResponses[0].result.serverInfo.name, 'miraigent-free-ai-ops-mcp');
|
|
150
|
+
assert.equal(promptRiskResponses[0].result.serverInfo.version, packageJson.version);
|
|
151
|
+
assert.equal(promptRiskResponses[1].result.tools.length, 4);
|
|
152
|
+
assert.match(promptRiskResponses[2].result.content[0].text, /prompt_risk_review/);
|
|
153
|
+
assert.match(promptRiskResponses[2].result.content[0].text, /stop_before_ai_use/);
|
|
154
|
+
assert.match(promptRiskResponses[2].result.content[0].text, /customer_facing/);
|
|
155
|
+
assert.match(promptRiskResponses[2].result.content[0].text, /sensitive_data_possible/);
|